就我而言,是否可以讓 Web 伺服器使用者lighttpd
觸發需要以權限運行的特定腳本sudo
?
我只希望lighttpd
使用者能夠透過sudo
權限觸發該腳本。
該腳本(我們稱之為createFolder.sh
)根據共享上層的模板建立一個資料夾。使用者對上層共享沒有寫入權限,但對新建立的資料夾結構應該有寫入權限。因此,腳本在子資料夾上設定了正確的權限,這就是使用的需要sudo
(chown
、chmod
和setfacl
)。
我想使用 Web 介面的原因是,使用者可以插入資料夾名稱和設定的數據,以定義確切的資料夾結構。
我認為這就像添加一個條目/etc/sudoers
以允許用戶在沒有密碼的情況下lighttpd
運行一樣簡單。createFolder.sh
看來我錯了,因為我收到以下錯誤:
sudo:無法 mkdir /var/db/sudo/lighttpd:權限被拒絕
我們相信您已經收到了當地系統管理員的常規講座。通常可以歸結為以下三件事:
1) 尊重他人的隱私。
2)打字前請三思。
3)能力越大,責任越大。sudo:不存在 tty 且未指定 Askpass 程序
如果可以將腳本設定為始終以具有正確權限的使用者身分執行,它會解決這個問題,但我找不到如何做到這一點或是否可能。
順便說一句,我是自學 Linux 的,即使我對自己的能力充滿信心,我也不是專家,並且一直在尋求改進。
我正在運行 CentOS 7 機器。
編輯createFolder.sh
:我已經透過在修改文字檔案時使用 inotify 觸發我的腳本解決了這個問題。查看正確答案及其評論。感謝你們為我指明了正確的方向。
答案1
您應該讓根腳本從常規腳本“拉”,而不是讓後者“推”到前者。作為說明性範例:
- 建立一個 cron 作業來檢查要在文字檔案中建立的資料夾列表
- 讓 lighttpd 使用者腳本將所需的資料夾附加到該文字檔案中
您可以使用排隊/訊息系統更優雅地完成此操作,但這取決於您。