Chmod

root不能chmod?

  • May 30, 2016

在我的部門,我們有一個帶有 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)。
  • 我以 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

根據消息來源,你有一個天真的預期模式。在放棄更多之後,我認為原因是-w選擇,這不是您所期望的。你應該給g-wugo-w(根據你的需要)。

根據 umask 值,如果不給出明確的目標 (a, o, g, u),可能會提供一些意想不到的結果。我認為這樣的額外資訊是由於這種意想不到的變化而完成的。

編輯:http://git.savannah.gnu.org/cgit/coreutils.git/tree/src/chmod.c#n301中的來源

取自Google記憶體,該程式碼中的註釋不再存在:

/* 如果為真,則診斷來自諸如“chmod -r 文件”之類的幼稚誤用的意外。POSIX 允許在此處進行診斷,因為應該使用可移植程式碼。“chmod – -r 文件” */

引用自:https://unix.stackexchange.com/questions/286478