在我的部门,我们有一个带有 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 操作?
一些花絮:
- 文件系统是不是 只读(仅有的一些文件拒绝被 chmodded)。
- 我运行了 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
答案1
据消息人士透露,你有一个朴素预期模式。在放弃更多之后,我认为原因是选择-w
,这不是你所期望的。您应该给予g-w
或ugo-w
(根据您的需要)。
如果不给出明确的目标(a、o、g、u),根据 umask 值可能会提供一些意想不到的结果。我认为这样额外的信息是因为这种意想不到的变化而完成的。
编辑:来源http://git.savannah.gnu.org/cgit/coreutils.git/tree/src/chmod.c#n301
从谷歌缓存中获取,该代码中的注释不再存在:
/* 如果为真,则诊断出诸如“chmod -r file”之类的天真的误用所带来的意外。 POSIX 允许在此处进行诊断,因为应该使用可移植代码。 “chmod ---r 文件”*/