簡體   English   中英

如何在 Linux 中以 root 權限運行腳本

[英]How to run a script with root authority in Linux

我必須開發一個用 CGI 編寫的 Web 站點。

我想知道如何從 CGI 運行具有 root 權限的腳本。

假設腳本名稱是hello ,我從 CGI 中運行它,例如system("pathToTheFile/hello")

現在我想以 root 身份運行這個 hello 文件; 有人可以幫我嗎?

一般來說,做這種事情最安全的方法是使用類 UNIX 操作系統的setuid特性。 如果將hello程序的所有者設置為root ,然后設置 setuid 位:

chmod u+s hello

那么無論執行程序,都會以root身份執行。 這適用於本機可執行文件,但不適用於解釋腳本。 如果“你好”必須是一個腳本,那么這對你不起作用。

現在,我不得不說,一般來說,setuid root 程序並不是一個好主意。 通常,您可以創建一個特殊用戶來擁有該腳本,並為該用戶提供一些所需的有限權限,然后將該腳本設置為該用戶。

正常的方法是讓可執行文件歸您想要運行它的用戶所有,然后設置SUID位。

使用sudo的方法通常需要用戶輸入密碼(有一些方法可以解決這個問題,但它們非常復雜)。

我想我不需要提到設置 SUID 位是一件非常危險的事情,是嗎? 如果有任何其他方法可以做你想做的事,你應該使用它。


您可能要考慮的一件事是,不是根據您需要的解決方案而是根據您想要解決的問題提出問題。 以 root 身份運行是一種解決方案,但不一定是好的解決方案。 發布想要實現的目標而不是如何實現,我們可以以一種危險得多的方式幫助您。

從 web 頁面以 root 身份執行操作的更安全的方法是將程序執行與 web 頁面斷開連接。 相反,使用 Unix 本地 sockets、命名管道或排隊作業的目錄。

該目錄可能是最容易處理的。 設置您的 web 頁面可以寫入文件的目錄。 當您的頁面需要完成某些工作時,請編寫一個描述該工作的文件。 然后你有一個程序以 root 身份運行,等待新的工作。 如果需要快速響應,它可以連續運行,也可以使用 crontab 條目每分鍾或每幾分鍾運行一次。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM