哪些使用者(除了 root 之外)可以更改 Linux 中的檔案權限?

哪些使用者(除了 root 之外)可以更改 Linux 中的檔案權限?

基本上:當我作為非root用戶執行chmod文件時,什麼時候我會得到該命令的“權限被拒絕”,什麼時候不會?文件的哪個屬性允許或禁止我更改它的權限?

我認為這是文件所有者,在這裡詢問,因為我只是在努力了解底層的基本概念。

答案1

長話短說:如果要chmod在 GNU/Linux 上執行文件,您需要是 root 或文件的擁有者。

來自修改(2)(chmod 系統呼叫)手冊頁:

呼叫進程的有效UID必須與文件的所有者,或者進程必須具有特權(Linux:它必須具有 CAP_FOWNER能力)。

來自能力(7)手冊頁:

CAP_FOWNER

  • 繞過通常需要進程的檔案系統 UID 與檔案的 UID 相符的操作的權限檢查(例如 chmod(2)、utime(2)),不包括 CAP_DAC_OVERRIDE 和 CAP_DAC_READ_SEARCH 涵蓋的操作; [...]

來自設定事實(1)手冊頁:

權限

檔案擁有者和具有 CAP_FOWNER 能力的進程被授予修改檔案 ACL 的權限。這類似於存取檔案模式所需的權限。 (在目前的 Linux 系統上, root 是唯一的用戶CAP_FOWNER能力。

相關內容