基本知识
每一个文件都拥有多种类型的权限。用户(user)是文件的所有者,通常拥有所有的访问权。用户组(group)是多个用户的集合(由系统管理员指定),可能拥有文件的部分访问权。其他用户(others)是除文件所有者或用户组成员之外的任何人。
1 | ls -l |
第一列表明了文件类型
1 | - 普通文件 |
接下来的9个字符可以划分为三组,每组3个字符( — — — )。对应着( 用户权限 用户组权限 其他用户权限)
有三种常见的字符
r(read)、w(write)、x(execute)
用户中有一个 setuid(S)的特殊权限,具有的是这样的: -rwS——,它表示其他用户执行本文件就像所有者执行本文件一样。
沾滞位
目录有个叫沾滞位的特殊权限,出现在其他用户权限组中的执行权限位置(x)位置。它使用 t 或 T 来表示。如果目录设置了沾滞位,只有创建该目录的用户才能删除目录中的文件,就算用户组和其他用户也有写的权限,仍无能为力。
如果没有设置执行权限,但设置了沾滞位,就是用 T;如果同时设置了执行权限和沾滞位,就是用 t。例如:
1 | ------rwt, ------rwT |
修改文件权限
直接指定对应身份的访问权限
1 | chmod u=rwx, g=rw, o=r filename |
可以用 + 为用户、用户组和其他用户添加权限,用 - 取消权限
1 | chmod o+x filename |
给所有权限类别(u\g\o)添加可执行权限
1 | chmod a+x filename |
其中 a 表示 all
1 | chmod a-x filename |
用数字
r = 4
w = 2
x = 1
rw- = 4 + 2 = 6
r-x = 4 + 1 = 5
1 | chmod 764 filename |
更改所有权
可以使用 chown 命令更改文件或目录的所有权
1 | chown user:group filename |
设置沾滞位
设置有只有目录的所有者能删除文件夹里的文件,其他人即使有写权限也不能删除
1 | chmod a+t directory_name |
以递归方式设置文件权限
以递归的方式修改当前目录下的所有文件和子目录的权限。选项 -R 指定以递归的方式修改权限。用 . 指定当前工作目录。
1 | chmod 777 . -R |
以递归方式修改所有权
1 | chmod user:group . -R |
以不同的身份运行可执行文件(setuid)
1 | chmod +s executable_file |
现在,无论是谁发起调用,该文件都是以root用户的身份来执行。