通过字母与数字进行 Chmod

通过字母与数字进行 Chmod

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

答案1

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

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

chmod [references][operator][modes] file

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

导致+ operator指定的文件模式位被添加到每个文件的现有文件模式位中;-导致它们被移除;并=导致添加它们并删除未指定的位,除非setuid明确setgid指定,否则为目录设置的位除外。

mode由字母 的组合组成,rwxXst分别对应读(r)、写(w)、执行(或搜索目录)(x),仅当文件是目录或已具有某些用户的执行权限时才执行/搜索(X),setuidsetgid(取决于指定的引用)( 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

答案2

使用这些字母可以打开和关闭各个位,而无需更改其他位。

假设我有以下目录:

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 或粘性位,它也很有用。特别是如果你很少这样做,你就很难记住第四个八位位组中的哪个位。

所以,这取决于你在做什么。当我只是设置权限并且不关心从什么开始时,我仍然更喜欢使用数字。但如果您要切换各个位,则字母表示法要容易得多。

相关内容