Linux的权限
1. 权限的概念
权限:一件事情是否允许被谁做,权限 = 人 + 文件属性
2. Linux上的用户分类
Linux下有两种用户:
超级用户(root):可以再Linux系统下做任何事情,不受限制
普通用户(user):在Linux下做有限的事情。
超级用户的命令提示符是“#”,普通用户的命令提示符是“$”。
命令:su [用户名]
功能:切换用户。
例如,要从root用户切换到普通用户user,则使用 su user
。 要从普通用户user切换到root用户则使用 su root
(root可以省略),此时系统会提示输入root用户的口令。
3. Linux的文件属性
可以有的属性是:读(r)、写(w)、执行(x)
4. Linux权限管理
4.1 文件访问者的分类(人)
文件和文件目录的所有者:u—User
文件和文件目录的所有者所在的组的用户:g—Group
其它用户:o—Others
4.2 文件类型和访问权限(事物属性)
Linux操作系统下,不用文件后缀区分文件类型而是用文件属性中第一列的第一个字符来区分文件类型。不代表编译器或其他软件不需要后缀!
-
文件类型
d:目录
-:普通文件、文本、可执行、归档文件等
l:链接文件
b:块设备文件(例如硬盘、光驱等)
p:管道文件
c:字符设备文件(例如屏幕等串口设备)
s:网络socket文件
-
基本权限
r:读(Read)对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限。
w:写(Write)对文件而言,具有修改文件内容的权限;对目录来说具有删除移动目录内文件的权限。
x:执行(execute)对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限。
-:表示不具有该项权限。
4.3 文件权限值的表示方法
- 字符表示方法
- 8进制数值表示方法
4.4 文件访问权限的相关设置方法
-
chmod
功能:设置文件的访问权限
格式:chmod [参数] 权限 文件名
说明:只有文件的拥有者和root才可以改变文件的权限
常用选项:R -> 递归修改目录文件的权限
chmod命令中 权限 的格式:
① 用户符号+/-=权限字符:
用户符号:
u:拥有者
g:拥有者同组用
o:其它用户
a:所有用户+:向权限范围增加权限代号所表示的权限
-:向权限范围取消权限代号所表示的权限
=:向权限范围赋予权限代号所表示的权限示例:
$ chmod u+w test.txt $ chmod o-x test.txt $ chmod a=x test.txt
②三位8进制数字:
$ chmod 664 test.txt $ chmod 640 test.txt
-
chown
功能:修改文件的拥有者
格式:chown [参数] 用户名 文件名
实例:
$ chown user:group filename
4.5 目录的权限
-
如果我们进入一个目录,我们需要r/w/x中的什么权限呢?
接下来我们通过实际操作来找到答案:
首先,我们可以看到对于dir目录,我们拥有rwx所有权限,所以可以访问该目录,当我们去掉rw权限时依然可以进去该目录,但当我们是去x权限时,再次尝试进入目录时,发生了错误提示,由此说明,进入一个目录需要的是x权限!
- 那么对于目录来讲,r权限代表什么意思呢?
在没有r权限的日录下,我们无法查看当前日录下的文件名+文件属性。
- 那么对于目录来讲,w权限代表什么意思呢?
在没有w权限的日录下,我们无法直接在该日录下创建新文件。
4.6 默认权限
为什么我们创建的普通文件(不包括可执行文件)默认权限是664,而目录的默认权限是775呢?(不同操作系统可能默认权限不同,这里以CentOS7.6为例)
首先我们引入两个概念:起始权限(系统设定的权限)、最终权限(我们看到的权限)。
新建文件夹默认权限=0666,新建目录默认权限=0777。但实际上你所创建的文件和目录,看到的权限往往不是上面这个值。原因就是创建文件或目录的时候还要受到umask的影响。假设默认权限是mask,则实际创建的出来的文件权限是: mask & ~umask。
将现有的存取权限减去权限掩码后,即可产生建立文件时预设权限。超级用户默认掩码值为0022,普通用户默认为0002。
5. 粘滞位
从上面的目录的权限我们可以知道,就是只要用户具有目录的写权限,用户就可以删除目录中的文件, 而不论这个用户是否有这个文件的写权限。如果张三和李四共享一个目录来进行开发项目,我张三创建的一个文件,凭什么被你李四可以删掉?为了解决这个不科学的问题,Linux引入了粘滞位的概念。
当一个目录被设置为"粘滞位",则该目录下的文件只能由
一、超级管理员删除
二、该目录的所有者删除
三、该文件的所有者删除