根无法chmod?


12

在我的部门中,我们有一台带有CentOS和samba的小型文件服务器。我具有root访问权,能够执行一些基本维护。

今天,我将一些文件夹设为只读,所以我继续进行了chmod -R -w some-folder/,但是对于一些文件,我得到了响应:

chmod:./somefile.pdf:新权限是r-xrwxr-x,而不是r-xr-xr-x

添加后,-v我得到的信息不多:

'./somefile.pdf'的模式保留为0575(r-xrwxr-x)

我尝试以下操作只是为了确保:

# touch test-file
# chmod -v -R -w .
mode of `./somefile.pdf' retained as 0575 (r-xrwxr-x)
chmod: ./somefile.pdf: new permissions are r-xrwxr-x, not r-xr-xr-x
mode of `./test-file' changed to 0444 (r--r--r--)

我想不出为什么root无法执行chmod的任何充分理由

一些花絮:

  • 该文件系统不是 只读的(仅某些文件被拒绝修改)。
  • 以root用户身份运行chmod命令但没有任何效果。
  • 文件所在的分区是ext4。

更新:这是lsattr文件上包含文件夹的输出:

# lsattr somefile.pdf
-------------e- somefile.pdf
# lsattr ..
-------------e- ../myfolder

没有setuid(ls -la):

dr-xr-xr-x  2 userxyz abc   4096 May 30 09:29 .
dr-xr-xr-x 17 userxyz abc   4096 Sep 19  2013 ..
-r-xrwxr-x  1 userxyz abc 275150 Aug  6  2013 somefile.pdf

您正在远程访问此文件?
Luciano Andress Martini

1
lsattr这些相同文件及其上面的目录的输出是什么?
莱德(Ryder)

Answers:


17

根据消息来源,您有一个幼稚的期望模式。放弃更多之后,我认为原因是-w选择,这不是您所期望的。您应该给g-wugo-w(根据您的需要)。

根据umask值,无需给出明确的目标(a,o,g,u),可能会提供一些意外结果。我认为,由于进行了此类意外更改,因此完成了额外的消息。

编辑:http://git.savannah.gnu.org/cgit/coreutils.git/tree/src/chmod.c#n301中的来源

取自Google缓存,该代码中的注释不再存在:

/ *如果为true,请诊断由于天真的滥用(例如“ chmod -r文件”)而引起的意外。POSIX允许在这里进行诊断,因为应该使用可移植的代码。“ chmod--r文件” * /


是的,就是这样。我将其更改为ugo-w,并且不再抱怨。我会等一段时间,然后再接受潜在答复者的礼貌。
罗夫洛

1
我欢迎您进行修改或提供更好的答案,因为我仍然不明白chmod 为什么以这种奇怪的方式工作。
Giacomo Catenazzi '16

5
man chmod:“字母ugoa的组合控制将更改哪些用户对文件的访问[...]如果没有给出这些,则效果就好像是给出了(a),但是设置了umask不受影响。” 因此,您可以执行诸如chmod + w文件之类的操作,并且仅授予那些在创建新文件时将获得该文件的权限。负面行为的确让人有些困惑,因此警告似乎是个好主意。
ilkkachu 2016年
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.