Permissions
執行檔上 chmod 和 sudo 之間的關係
使用者的執行檔之間
chmod
有什麼關係?sudo
“使用者需要 sudo 來執行執行檔”的情況與“chmod 沒有為使用者設置執行模式位”的情況相同嗎?
“使用者不需要 sudo 來執行執行檔”的情況與“chmod 已為使用者設置執行模式位”的情況相同嗎?
進一步來說,
- 對於執行檔,如果
chmod
沒有為使用者設置其執行權限,該使用者必須使用sudo
or執行執行檔su
嗎?- 如果
chmod
為使用者設置其執行權限,這是否意味著使用者可以在沒有sudo
or的情況下執行執行檔su
?- 您如何使執行檔只能由給定使用者執行
sudo
或su
由給定使用者執行?- 反之,如果使用者只能使用
sudo
or來執行執行檔su
,那是否意味著chmod
沒有為使用者設置執行檔的執行權限?
首先是術語。
chmod
是一個程序(和系統呼叫),它允許更改文件系統中文件的權限位。sudo
是一個特殊的程序,它允許使用不同的憑據執行其他程序(通常具有提升的權限,通常是 root 使用者的權限)。su
類似但比(讀作“不可”)可配置的要少sudo
- 最重要的是,它需要根據 root 密碼的知識對使用者進行身份驗證(這在安全方面是相當令人震驚的)。可執行位表示文件的內容是否可以載入到記憶體中並執行(它沒有說明它是否有意義 - 您可以設置 JPEG 圖像的可執行位並在您嘗試時看到它失敗執行)。
現在的問題:
- 一旦載入執行檔,就會評估權限。在這種情況下,
su
目標使用者sudo
的有效 ID(使用者和組 - 用於權限評估的憑據 - 請參見credentials(7)
手冊頁)會發生這種情況。因此,如果允許目標使用者執行文件,它就會被執行。- 如前所述:當設置了有效UID或GID的可執行位時,就可以執行了。否則不行。
- 一般來說,你不會。如果需要,您可以將其標記為僅適用於某些 ID 的執行檔,然後準備
sudo
配置,以便允許某些使用者使用對文件具有可執行權限的使用者之一的憑據執行該二進製文件。- 不。阻止使用者執行需要特殊權限的程序通常沒有多大意義 - 程序應該處理缺少這些權限(如果可能,優雅地處理)。有些程序甚至只有一些不需要特殊權限的功能,但在以特殊權限執行時提供更多功能 - 一個例子是
route
:非特權使用者可以使用它來顯示核心路由表,而管理員也可以更改它們。