Chmod通过字母与数字


8

最近,一位同事要求我使用chmod字母代替数字。除了明显的可读性优势之外,还有什么特殊的原因要使用字母而不是数字?

Answers:


13

chmod符号表示法是更细粒度相比八进制符号,允许特定模式的比特修改,同时留下其他模式位不变。

符号表示法由三个部分组成:

chmod [references][operator][modes] file

references由字母的组合ugoa,其中指定用户的访问file将被修改:谁拥有它(用户u),该文件的组中的其他用户(g),其他用户没有文件的组(中o),或所有用户(a)。如果references省略该组件,则默认为所有用户使用,但仅umask修改允许的权限。

+ operator使指定的文件模式位被添加到每个文件的现有的文件模式比特; -使它们被删除;和=要除去的原因要添加他们非特定比特,除了setuidsetgid对于目录中置位,除非明确指定。

mode由字母组合而成的rwxXst,其对应的read( r),写(w),执行(或搜索目录)( x),执行/搜索只如果该文件是一个目录或已经有一些用户执行权限(Xsetuidsetgid(取决于指定的参考)(s)和受限制的删除标志或粘性位(t)。或者,mode可以由字母之一组成ugo,在这种情况下,字母mode对应于当前授予所有者(u),文件组成员(g)或上述两个类别中没有用户权限的权限o

例子

假设设置的权限file0764/-rwxrw-r--

从不在文件组中的其他用户删除权限:

  • 八进制: chmod 760 file

    请注意,使用八进制表示法时必须如何保留现有权限不变。

  • 象征性的: chmod o-rwx file

    使用符号表示法时,现有文件权限无关紧要。

设置setuid

  • 八进制: chmod 4764 file

  • 象征性的: chmod u+s file

设置setgid

  • 八进制: chmod 2764 file
  • 象征性的 chmod g+s file

1

使用字母,可以在不更改其他位的情况下打开和关闭各个位。

说我有以下目录:drwxrwsr-x 6 f261-01a g261-01a 4096 Sep 12 17:51 / home / teams / 261 / f261-01a

如果我想关闭其他用户的读取权限,并且想使用数字,我可能会很快做chmod 751。除了我刚刚关闭目录上的setgid位。哎呀。

但是,如果使用chmod o-r,则仅关闭所需的读取位,并且目录上的setgid位保持设置。

如果要打开文件或目录上的setuid,setgid或粘性位,这也很有用。特别是如果您很少这样做,则很难记住第四个八位位组中的哪一位。

因此,这取决于您在做什么。当我只是设置权限时,我仍然更喜欢使用数字,而我并不关心开头是什么。但是,如果要切换单个位,则字母符号会容易得多。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.