Linux bash讓非特權使用者只取得一個特定目錄內容的所有權?

Linux bash讓非特權使用者只取得一個特定目錄內容的所有權?

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

目前,我有一個管理員sudo chown,但我希望目標擁有者自己執行此操作,而不需要該使用者擁有所需的更多權限。假設原主人是“劊子手”,最終主人應該是“觀眾”。兩個用戶都不在同一組。

sudo chown -R audience:watchers /usr/files/pathofdir 不太正確,因為我不希望觀眾有無限的權限來使用 chown。我的第一個猜測是嘗試將“觀眾”添加到 /etc/sudoers 並獲得 /usr/bin/chown 和 /usr/bin/chgrp 的權限。但這權限太大了。

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

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

答案1

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

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

但是,我認為您應該檢查 ACL,因為我懷疑在目錄上使用預設 ACL 可以更輕鬆地處理您的問題。看這個帖子舉個例子。

答案2

@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

相關內容