如何讓Web伺服器使用者觸發需要sudo權限的腳本?

如何讓Web伺服器使用者觸發需要sudo權限的腳本?

就我而言,是否可以讓 Web 伺服器使用者lighttpd觸發需要以權限運行的特定腳本sudo

我只希望lighttpd使用者能夠透過sudo權限觸發該腳本。

該腳本(我們稱之為createFolder.sh)根據共享上層的模板建立一個資料夾。使用者對上層共享沒有寫入權限,但對新建立的資料夾結構應該有寫入權限。因此,腳本在子資料夾上設定了正確的權限,這就是使用的需要sudochownchmodsetfacl)。

我想使用 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

您應該讓根腳本從常規腳本“拉”,而不是讓後者“推”到前者。作為說明性範例:

  1. 建立一個 cron 作業來檢查要在文字檔案中建立的資料夾列表
  2. 讓 lighttpd 使用者腳本將所需的資料夾附加到該文字檔案中

您可以使用排隊/訊息系統更優雅地完成此操作,但這取決於您。

相關內容