Permissions

Linux bash 讓非特權使用者僅擁有一個特定目錄的內容的方式?

  • April 15, 2022

我希望特定使用者遞歸更改特定目錄的所有內容的所有者和組,並且僅更改該目錄。目錄是一種“收件箱”,服務在其中寫入文件和子目錄。

目前,我有一個管理員sudo chown,但我希望目標所有者自己做,而不需要該使用者擁有更多權限。假設原所有者是“headsman”,最終所有者應該是“audience”。兩個使用者都不在同一個組中。

sudo chown -R audience:watchers /usr/files/pathofdir 不太對,因為我不希望觀眾有無限的權限使用 chown。我的第一個猜測是嘗試在 /usr/bin/chown 和 /usr/bin/chgrp 的許可下向 /etc/sudoers 添加“受眾”。但這太權威了。

我想專門為觀眾編寫一個腳本,但我不知道如何使該腳本具有正確的權限,僅此而已。

有什麼好方法可以做到這一點?

您可以在 中指定一個完整的命令sudoers,帶有參數和全部,在這種情況下,使用者將有權僅使用指定的參數執行指定的命令。所以這個sudoers條目應該可以解決你的問題:

audience  ALL=/usr/bin/chown -R audience\:watchers /usr/files/pathofdir

但是,我認為您應該檢查 ACL,因為我懷疑使用目錄上的預設 ACL 可以更輕鬆地處理您的問題。有關範例,請參見這篇文章。

@Lasek 指出我可能想使用 ACLS。這似乎對我有用:

sudo setfacl -RPdm user:audience:rwX /usr/files/pathofdir
sudo setfacl -RPdm group:watchers:rwX /usr/files/pathofdir
sudo setfacl -RPm user:audience:rwX /usr/files/pathofdir
sudo setfacl -RPm group:watchers:rwX /usr/files/pathofdir

可能有更簡潔的語法,但這是我第一次使用setfacl

引用自:https://serverfault.com/questions/1098551