文件访问权限的修改
如何修改文件的权限
我们一般在linux中使用下面的语法格式来修改文件的权限
chmod 选项 权限 文件名或目录名
这里要注意的是 只有root用户才有修改文件权限的权力 如果普通用户想要做这种操作需要使用sudo命令
修改文件权限的两种格式
格式一: 用户符号 +/-/= 权限字符
用户符号如下
- u – 拥有者
- g – 所属组
- o – 其他人
- a – 所有人
权限字符就是我们说的 rwx
下面是具体的操作示例
格式二 : 使用三位八进制数字
每一位八进制数字可以表示一个身份的三种权限
比如说 7的二进制是 111 即可以表示三种权限都存在的状态 rwx
6的二进制是110 则可以表示rw-
下面是具体的操作示例
如何修改文件的拥有者
我们一般在linux中使用下面的语法格式来修改文件的拥有者
chown 选项 用户名 文件名或目录名
这里要注意的是 只有root用户才有修改文件权限的权力 如果普通用户想要做这种操作需要使用sudo命令
而如果想要递归修改所有文件的拥有者则需要使用 -R选项
下面是使用示例
如何修改文件的所属组
我们一般在linux中使用下面的语法格式来修改文件的所属组
chgrp 选项 用户名 文件名或目录名
这里还有一种比较特殊的修改方式
就是当我们使用chown的时候 可以使用分号的方式指定两个用户 分别修改文件的拥有者和所属组
如何修改文件的掩码
我们查看新建的文件和目录 它们都有自己默认的权限
其中新建文件的默认权限是 0666
新建目录的默认权限是 0777
第一位的0我们直接忽略 后面三位实际上就对应着三种身份的rwx权限
但是我们实际上创建文件或者目录的时候缺发现这不符合我们的理论
我们发现我们创建的目录 others并没有写权限
那么这是为什么呢?
实际上这是因为权限掩码的存在
我们假设默认权限是mask 掩码是umask 那么最后的文件的权限是 mask & (~umask)
我们可以通过umask指令来查看文件的默认掩码
我们可以发现刚好符合我们新创建的文件的权限 这也验证了我们的理论
与此同时我们可以设置权限掩码
其中超级用的默认掩码是0022 普通用户的默认掩码是0002
目录的权限
对于目录来说它的可读可写可执行权限分别对应下面的内容
- 可读权限: 如果用户没有该目录的可读权限 则无法通过ls指令查看目录中的文件内容
- 可写权限: 如果用户没有该目录的可写权限 则无法通过一系列指令在目录中创建文件或删除文件
- 可执行权限: 如果用户没有该目录的可执行权限 则无法通过cd指令进入到目录当中
但是这里就会有一个问题
只要用户有当前目录的可写权限 那么它就可以删除目录内的所有文件 哪怕它没有文件的可写权限
这显然是很不合理了
于是linux中引入了一个叫做粘滞位的概念
粘滞位
它的语法格式如下
chmod +t 目录名
当一个目录被加上粘滞位之后 就算我们拥有这个目录的可写权限也无法删除了
这里我们可以发现虽然other用户具有w权限 但是无法删除目录里面的文件了
当一个目录被设置为粘滞位只有三种情况能够被删除
- 超级用户删除
- 该目录的拥有者删除
- 该文件的拥有者删除
这里最后还有一点值得注意的是
粘滞位只会影响删除 其他用户如果拥有w权限 仍然可以在该目录下创建文件