Linux

在apache下以root身份執行特定的perl腳本

  • March 24, 2014

我有一個 perl 程序,在 Fedora Linux 伺服器上通過 apache 通過 Internet 呼叫時執行良好。在那個 perl 腳本中,我有一個不執行的系統命令,因為它需要以 root 身份執行。我意識到所有的安全後果,但肯定必須有一種簡單的方法來清除合法腳本的路徑,以便以 root 身份執行合法功能。我試過使用 sudo 但我必須刪除 apache 使用者的 requiretty 限制,我不想削弱安全性。apache config 中應該有一種方法可以允許特定文件或目錄以 root 身份執行,但我找不到它。我不希望所有 cgi-bin 都以 root 身份執行。任何幫助表示讚賞。

珀爾?Perl 支持 setuid 腳本。

https://unix.stackexchange.com/questions/364/allow-setuid-on-shell-scripts

Perl 是一個明顯的例外。它以安全的方式明確支持 setuid 腳本。事實上,即使您的作業系統忽略了腳本上的 setuid 位,您的腳本也可以執行 setuid。這是因為 perl 附帶了一個 setuid root 幫助程序,它執行必要的檢查並以所需權限重新呼叫所需腳本上的解釋器。這在 perlsec 手冊中有解釋。過去 setuid perl 腳本需要 #!/usr/bin/suidperl -wT 而不是 #!/usr/bin/perl -wT,但在大多數現代系統上,#!/usr/bin/perl -wT 就足夠了.

引用自:https://serverfault.com/questions/418767