chmod命令

常用用法:chmod -R xxxx FILE
含义:设置文件或者目录的权限属性,加上R选项,表示递归设置目录下文件和目录的权限属性
上面有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)


备注:

设置了SUID,会把文件属主的"rwx"中的x替换为s[文件属主具有x权限]或者S[文件属主不具有x权限]

设置了SGID,会把文件所属组的"rwx"中的x替换为s[文件所属组具有x权限]或者S[文件所属组不具有x权限]

设置了STICKY,会把其他用户的"rwx"中的x替换为t[其他用户具有x权限]或者T[其他用户不具有x权限]


另外有一个问题需要注意:

1)在清除一般文件的SUID,SGID,STICKY权限的时候,可以使用"chmod 0xxx"的形式

2)在清除目录的SUID,SGID权限的时候,不可以使用"chmod 0xxx"的形式,原因如下:

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]

在[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"

你可能感兴趣的:(chmod命令)