文章目录
1. Linux权限的概念
Linux下有两种用户:超级用户(root)、普通用户。
超级用户:可以在Linux系统下做任何事情,不受限制;
普通用户:在Linux下做有限的事情;
超级用户的命令提示符是 “#”,普通用户的命令提示符是**“$”;**
命令:su [用户名]
功能:切换用户;
例如:要从root用户切换到普通用户zjm,则使用su zjm。 要从普通用户zjm切换到root用户则使用su root(root可省略),此时系统会提示输入root用户的密码;
2. Linux权限管理
2.1 文件访问者的分类
文件和文件目录的所有者:u —— User;
文件和文件目录的所有者所在的组(所属组)的用户 : g —— Group;
其他用户: o —— Others;
下面我举个例子来说明这三者之间的关系:
假设现在学校要求每个学生都要参加一项比赛(完成某项特定任务),可以单人参加也可以多人参加;你一开始决定一人参加,并完成了一个作品打算提交,但这时候你的舍友们决定来蹭下你的作品,想加入你的团队,你答应了;此时你的作品就相当于这里的文件,而你就是文件的User,你的舍友们就是Group,他们可以讨论交流并对你的作品进行修改,其他不是你组里的人就是Others;
用一句来概括就是:User是这个文件的主人,Group是User钦定的搭档,Others就是除前两者外的所有人;
2.2 文件类型和访问权限(事物属性)
我们在Linux系统中,常常能看见每个文件和文件夹前面总有一串长长的东西,那些都是什么呢?下面我们就来揭开它们的面纱!
它们的具体含义如下:
其中第一个字符代表文件类型,后9个字符每三个为一组,分别代表User、Group、Others的权限;
文件类型:
d:文件夹
- :普通文件
l :软连接(类似windows的快捷方式)
b:块设备文件(例如硬盘、光驱等)
p:管道文件
c:字符设备文件(例如屏幕等串口设备)
s:套接口文件
基本权限:
- 读权限(r / 4): read对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限;
- 写权限(w / 2): write对文件而言,具有修改文件内容的权限;对目录来说具有删除移动目录文件的权限;
- 执行权限(x / 1) : excute对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限;
- “-” 表示不具有该项权限;
注意:如果此时你是拥有者也是所属组,那么权限会优先匹配拥有者,如果拥有者没有读属性,那么就算你是所属组并且所属组拥有读属性,你也是读不到文件内容的!以下权限皆是如此;
2.3 文件权限值得表示方法
字符表示方法:
8进制数值表示方法:
2.4 文件访问权限得相关设置方法
2.4.1 chmod
指令:chmod
功能: 设置文件的访问权限;
格式: chmod [参数] 权限 文件名
常用选项:
- R -> 递归修改目录文件的权限;
注意:只有文件的拥有者和root才可以改变文件的权限;
chmod命令权限值的格式:
1. 用户表示符 + / -= 权限字符
- /+ :向权限范围增加的权限代号所表示的权限
- /- :向权限范围取消权限代号所表示的权限
- /= :向权限范围赋予权限代号所表示的权限
- 用户符号:
- u :拥有者
- g :所属组
- o :其他用户
- a :所有用户
例子:
2.4.2 chown
指令:chown
功能:修改文件的拥有者
格式: chown [参数] 用户名 文件名
实例:
2.4.3 chgrp
功能: 修改文件或目录的所属组
格式: chrgp [参数] 用户组名 文件名
常用选项: -R 递归修改文件或目录的所属组
2.4.4 umask
功能: 查看或修改文件的权限掩码
新建文件夹的默认权限为:666
新建目录默认权限为:777
但实际上你所创建的文件和目录,看到的权限往往不是上面这个值。原因就是创建文件或目录的时候还要受到umask的影响;则实际创建出来的文件权限是: mask & ~umask; 为什么要这么计算呢?它的本质就是将umask中出现的权限在起始权限中去掉,在umask中出现的权限按位取反会为0,起始权限再&上umask,umask中出现的权限都会在起始权限中被置为0;
格式: umask 权限值
说明:将现有的存取权限去掉权限掩码后,即可产生建立文件时预设权限。超级用户默认掩码值为0022,普通用户默认掩码值为:0002;
实例:
3. file指令
功能: 辨别文件类型
语法: fil [选项] 文件或目录
常用选项:
- /-c : 详细显示指令执行过程,便于排错或分析程序执行的情形;
- /-z : 尝试去解读压缩文件的内容;
4. 目录的权限
- 可执行权限:如果目录没有可执行权限,则无法cd到目录中;
- 可读权限:如果目录没有可读权限,则无法使用ls等命令查看目录中的文件内容;
- 可写权限:如果目录没有可写权限,则无法在目录中创建文件,也无法在目录中删除文件;
如果没有可读权限:
如果没有写权限:
如果没有可执行权限:
注意:
目录的可执行权限是表示你可否在目录下执行命令;
如果目录没有x权限,则无法对目录执行任何命令,甚至无法cd进入目录,即使目录仍然有r权限;
而如果目录具有x权限,但没有r权限,则用户可以执行命令,可以cd进入目录。但由于没有目录的读权限,所以在目录下,即使可以执行ls命令,但仍然没有权限读取出目录下的文档;
5.粘滞位
在某种情况下,Linux下的多个用户需要在同一个目录中进行多个文件的增删查改,此时就需要一个公共目录;这种公共目录一般由root在根目录中提供,Linux默认提供的公共目录有tmp;
通过对目录权限的了解后,我们会发现这么一个问题,如果Others具有目录的写权限,那么它就可以删除掉目录中的任何文件,而不论这个用户是否具有这个文件的任何权限;
我们会发现这种情况非常的不合理,我张三写的文件凭什么被你李四给删掉!为了解决这种不科学的问题,Linux引入了粘滞位这个概念;
指令:chmod +t 目录名
功能:加上沾滞位
实例:
当一个目录被设置为粘滞位(用chmod +t),则该目录下的文件只能由:
1.超级管理者删除
2.该目录的所有者删除
3.该文件的所有者删除