RTFM系列之chmod
Synopsis
$chmod [option]... mode[.mode]... file...
$chmod [option]... octal-mode file...
$chmod [option]... --reference=RFILE file...
Description
chmod 命令改变每一个文件的 file mode bits ,看到这,我想起了C++的流状态:badbit,failbit,eofbit 和goodbit,这里的bits也是类似的,表示了文件的一些属性。我们既可以用各种符号来改变这些bits,就像ls -a
一样,也可以不使用符号,而是用一个八进制数来改变,这里不涉及,如有兴趣请参考文末链接。
mode格式
用符号形式进行更改的格式:chmod [ugoa…][[-+=][perms…]…] file
解释:
ugoa
- u是指user,文件拥有者
- g是指group,其它在文件的group里的用户
- o是指other,其它不在文件的group里的用户
- a是指all,即所有用户
perms是指permission,可以是0或者rwxXst 里面的字母
- r,read
- w,write
- x,可执行,可查找(对于目录)
- X,只有当文件是一个目录或者已经对某用户可执行,这个文件才能可执行或可查找
- t,删除文件permission
- 或者也可以直接用[ugo]里面的一个,来获得对相应对象的permission,例如chmod +u a.sh,那么a.sh就有了user用户应该有的permission
[-+=]
+
将特定的bit添加到file mode bits,我们对文件的permission进行操作,其实就是file mode bits 的增删和修改-
上面是添加,这里就是删除啦=
和+
一样可以添加bit但是没有被说明的bit会被删除,例如=r,wxXst将会被删除,但不是所有的bit都会被删,except that a directory’s unmentioned set user and group ID bits are not affected.- 如果相对不同的用户设置不同的permission,可以用逗号隔开,这样a+r,u+w
总之,mode的格式是这样的
'[ugoa]*([-+=]([rwxXst]*|[ugo]))+|[-+=][0-7]+'
option格式
- -c,–changes//每次改变file mode bits时显示改变操作
- -f, –silent,–quiet//抑制大多数错误信息的显示
- -v,–verbose//输出文件信息
- –reference=RFILE//采用RFILE的mode
- R, –recursive//递归地改变mode
Note
chmod 不能改变符号链接的permission
参考资料:这里