chmod -u是做什么的?


19

偶然我跑了chmod -u filename,它删除了我拥有的所有权限filename

手册页未引用-u选项。通过实验,我可以得出结论,它不会删除所有权限,而只是读取和执行访问权限,而保留写入访问权限。

那么,这到底是做什么的呢?


我上面的结论是错误的,我现在认为它的作用是从所有类别中删除所有者拥有的权限。


我认为,行为类似于a=u,只有它-,而不是=a可以只因为它可以与被丢弃,例如,a+x


6
+1用于询问手册页中没有的基本问题。

1
“符号模式的格式为 [ugoa...][[-+=][perms...]...],其中perms 来自集合的零个或多个字母rwxXst或者ugo来自集合的单个字母 ”(GNU chmod手册页);POSIX相当模糊,但是为达到相同的效果定义了“ permcopy”制作。
迈克尔·荷马

1
@MichaelHomer它没有说它做什么。
y_wc

1
@y_wc“您可以完全指定以下字母ugo代替一个或多个字母:授予拥有文件的用户u的权限(),授予属于文件组的其他用户的权限(g) ,以及授予不属于前两个类别(o)的用户的权限。”
Michael Homer

1
是的,我读过。我看不到它在做什么。它说我可以指定这些字母之一。例如u,我将指定授予拥有该文件的用户的权限。但是它没有说它做什么。指定甚至意味着什么?
y_wc

Answers:


19

这不是选项,而是指定权限的标准(但不常见)方法。对于所有用户(无,,或),这意味着删除(-)与文件所有者(u)相关的权限。这在手册页中。ugo

GNU chmod的手册页将其记录为:

符号模式的格式为[ugoa...][[-+=][perms...]...],其中perms是来自集合的零个或多个字母rwxXst,或来自集合ugo的一个字母。

然后

您可以确切指定字母ugo之一,而不是这些字母中的一个或多个:授予文件所有者的用户u的权限(),授予文件组成员的其他用户的权限(g)和授予不属于前两个类别(o)的用户的权限

因此,-u意味着要删除(-)所有人(u)当前为所有人启用的所有权限(等效于a-u,除了遵守当前的umask之外)。尽管这通常不会很有用,但chmod +u有时类似的情况是,例如,当递归操作时,将权限从所有者复制到其他人。


也记录在POSIX中,但定义比较模糊:权限规范是广义的who[+-=]perms(或数字),其作用进一步指定:

永久复制符号ug和分别o代表与用户,组和文件模式位的其他部分关联的当前权限。在本节的其余部分中,perm指代非终结符permpermcopy语法。

然后

-

...如果未指定,则将清除由perm表示的所有者,组和其他权限的文件模式位,除了那些在调用过程的文件模式创建掩码中具有相应位的位。


谢谢,迈克尔。POSIX文档令人信服。在GNU但是......请看这个矿的评论。我不知道“ So”之后的情况如何。perms可以u,我得到了。是的,u指定权限或所有者。但是,如何从所有用户中-u删除所有者的权限(modulus umask)呢?
y_wc

因为那-总是做的:从指定的用户类别中删除指定的权限。-u完全类似于-w或(更接近)ugo-u
迈克尔·荷马

我要说的是我不是来这里讨论文档的,我很高兴只是了解正在发生的事情,但是只是单击了文档。谢谢。
y_wc

我可以chmod再问一个文档问题吗?让我知道您是否认为这值得一个单独的问题。“和=会添加它们,并导致删除未提及的位,但不影响目录中未提及的设置用户名和组ID位。”对我来说,这是指,假设拥有者仅具有写访问权的目录, chmod u=rx directory会将所有者的权限保留为rwx。但这不是发生的事情,相反,它们成为了预期r-x。我在误解某事吗?
y_wc

就是说,s如果您不提及setuid / setgid()位,则将其保留下来,而您未指定的其他任何内容都将被删除。
迈克尔·荷马

2

答案有点类似于/unix//a/429424/255251

chmod -u file_name

不会删除所有权限,但会考虑umask价值。

umask
0022
ls -l file
-rwxrwxrwx 1 user user 4 Feb 25 15:17 file
chmod -u file
chmod: file: new permissions are ----w--w-, not ---------
ls -l file
-----w--w- 1 user user 4 Feb 25 15:17 file

现在更改umask值

umask 777
chmod 777 file
chmod -u file
chmod: file: new permissions are rwxrwxrwx, not ---------
ls -l file
-rwxrwxrwx 1 user user 4 Feb 25 15:17 file

2
具有指导性,很容易理解并且非常有用,但是我认为这并不是真正的问题,尽管它与之有很大关系。谢谢。
y_wc
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.