![允許自訂 bash 指令的權限,而不允許底層指令的權限](https://rvso.com/image/1417386/%E5%85%81%E8%A8%B1%E8%87%AA%E8%A8%82%20bash%20%E6%8C%87%E4%BB%A4%E7%9A%84%E6%AC%8A%E9%99%90%EF%BC%8C%E8%80%8C%E4%B8%8D%E5%85%81%E8%A8%B1%E5%BA%95%E5%B1%A4%E6%8C%87%E4%BB%A4%E7%9A%84%E6%AC%8A%E9%99%90.png)
我們的一台伺服器上有一個自動腳本,由觀察用戶運行。它需要告訴由主用戶運行的另一個腳本來更新日誌檔案。
代碼是sudo kill -UPDATE_LOG pid
顯然,觀察用戶必須具有運行此命令的權限。但是,出於顯而易見的原因,我不想授予此自動腳本終止進程的權限。
我想做類似的事情alias update_log='kill -UPDATE_LOG; grant update_log on observing_user
答案1
可能使用
sudo pkill -UPDATE_LOG <process-name>
而不是kill 就足以滿足您的需求?
解決此問題的另一種方法是將您想要透過 sudo 提供的命令嵌入到自訂腳本或 exec 中以執行此操作。
答案2
好吧,所以我在更改關鍵字後找到了答案。
也可以看看: 如何阻止sudo使用者執行特定指令?
步驟1:
sudo visudo
語法是這樣的:
user host=command
這將授予 sudo 對給定命令的存取權限。你也可以像這樣進行小組活動
%group host=command
您可以在 3 個「列」中的任何一個中使用 ALL 來將其套用至任何主機、任何指令或任何使用者。
我的解決方案是
observing_user ALL=kill -USR1 *