一、常用用法
1 | chmod -R xxxx FILE |
二、含义与选项
2.1、含义
设置文件或者目录的权限属性。
2.2、选项
“R”:递归设置目录下文件和目录的权限属性。
“xxxx”:有4个x
,每个x
的值为0-7
,如果少于4个,那么默认在前面用0
补全,即77
等价于0077
。为了简单起见,我们每次使用的时候,都指定4个x
。
- 第一个
x
:设置“SUID(4),SGID(2),STICKY(1)”权限 - 第二个
x
:设置文件属主的“r读权限(4),w写权限(2),x执行权限(1)” - 第三个
x
:设置文件所属组的“r读权限(4),w写权限(2),x执行权限(1)” - 第四个
x
:设置其他用户的“r读权限(4),w写权限(2),x执行权限(1)”
三、其他
3.1、SUID,SGID,STICKY
1、设置了SUID,会把文件属主的rwx
权限中的x
替换为s
[文件属主具有x
权限]或者S
[文件属主不具有x
权限];
2、设置了SGID,会把文件所属组的rwx
权限中的x
替换为s
[文件所属组具有x
权限]或者S
[文件所属组不具有x
权限];
3、设置了STICKY,会把其他用户的rwx
权限中的x
替换为t
[其他用户具有x
权限]或者T
[其他用户不具有x
权限]。
3.2、另外一个问题
1、在清除文件的SUID,SGID,STICKY权限的时候,可以使用chmod 0xxx
的形式
2、在清除目录的SUID,SGID权限的时候,不可以使用chmod 0xxx
的形式,原因如下[1]:
1 | These convenience mechanisms rely on the set-user-ID and set-group-ID bits of directories. If commands like `chmod` and `mkdir` routinely cleared these bits on directories, the mechanisms would be less convenient and it would be harder to share files. Therefore, a command like `chmod` does not affect the set-user-ID or set-group-ID bits of a directory unless the user specifically mentions them in a symbolic mode, or uses an operator numeric mode such as `=755`, or sets them in a numeric mode, or clears them in a numeric mode that has five or more octal digits. |
在[1]中同时提到了一个解决方案,就是在原先的4个x
的基础上,再加一个或多个前置x
,我们取1位0好了,即0xxxx
的形式。
综上,我们统一使用0xxxx
(指定5位)来设置文件属主,文件所属组,其他用户的rwx权限和SUID,SGID,STICKY权限。
参考文献: [1]info chmod--27.5 Directories and the Set-User-ID and Set-Group-ID Bits [2]man chmod