Permissions

設置文件和文件夾的權限 - 文件夾權限繼承是否總是隱含的?

  • November 24, 2020

**目標:**在根目錄創建一個文件夾,chown 到組並將使用者添加到組 - 但是使用者獲得的權限太寬了!

考慮以下:

# as root

# we need a user group
groupadd team1

# we need a shared folder
mkdir /project1
chown root:team1 /project1
chmod 770 /project1

# we need users - and they get set pw elsewhere :)
for i in bob tina jim joy; do useradd $i; done

# we add them to the project group 'team1' that gives access to the shared folder
usermod -aG team1 [username]

令人費解的是,使用者jim可以在其中創建文件,/project1使用者joy可以在vim中打開、更改和保存文件,或者嘗試刪除文件,確認這是意圖後才會執行。

**問題:**這是否被認為是正確的行為?不應chmod 770 /project1僅限於文件夾本身的權限,但不應像看起來那樣:遞歸到所述文件夾中的文件?

這是正常行為。

目錄的 770 權限允許目錄的所有者和目錄組的任何成員讀取、寫入和搜尋目錄。這意味著該組的任何成員都可以刪除目錄中的文件並創建新文件,而與文件本身的權限和所有權無關。這就是你所看到的;jim文件上設置的任何權限joy都可以刪除它並用另一個文件替換它,這就是這樣vim做的。

在標準 Unix 權限模型中,您可以在目錄上設置其他權限。

這裡第一個有用的是粘性位,它限制刪除:文件只能由其所有者、目錄所有者或root.

chmod g+t /project1

會設置它,然後joy將無法刪除jim的文件。

第二個有用的權限是sgid位,它使目錄的組應用於目錄中新創建的文件:

chmod g+s /project1

要結合兩者,執行

chmod 3770 /project1

有關詳細資訊,請參閱了解 UNIX 權限和文件類型

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