0%

chmod命令

一、常用用法

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
您的支持将鼓励我继续分享!