簡體   English   中英

從 PHP/Apache,exec() 或 system() 程序作為 root:“sudo:無法打開審計系統:權限被拒絕”

[英]From PHP/Apache, exec() or system() program as root: “sudo: unable to open audit system: Permission denied”

我花了半天時間試圖弄清楚這一點,並且我做了很多研究。 我也熟悉有關此主題的許多現有討論,例如: 如何以 root 身份運行 PHP exec()?

不幸的是,我發現的所有建議似乎都不適合我。

首先,我正在為規范寫一些東西,所以我無法避免這樣做。 此外,所有機器都將存在於未連接到 Internet 的專用網絡上。 雖然擁有一定的安全性很重要,但最重要的是防止錯誤。 我的目標是配置一些“瘦服務器”。 通過 PHP 腳本,我需要能夠更改網絡配置(靜態或 DHCP)並重新啟動網絡。

我嘗試的第一件事是編寫一個 SUID 根的 C 程序。 它讀取、修改和寫入網絡配置文件。 如果我以普通用戶身份運行它,它就可以正常工作並且可以訪問和修改 root 擁有的文件。 但是,如果我從 PHP 腳本運行它,則會出現訪問錯誤。 Apache 似乎以某種方式阻止了 SUID 根。

根據其他討論的建議,我嘗試了“sudo”方法。 暫時,我將此添加到 /etc/sudoers: apache ALL=(ALL) NOPASSWD: ALL

我得到的錯誤是這樣的:sudo:無法打開審計系統:權限被拒絕

根據俄語的this page,這是因為像RHEL(我使用Fedora)這樣的系統默認為sudoers的requiretty。 所以我將此行添加到 /etc/sudoers: Defaults !requiretty

我仍然遇到同樣的錯誤。 sudo:無法打開審核系統:權限被拒絕

我在這里完全受阻。 也就是說,除非我想以 root 身份運行 Apache 本身,否則會比其他任何事情都更不方便。

任何人都可以在這里提出任何建議嗎? 我意識到我正在嘗試做的事情很奇怪。 我敢打賭,你們中的一些人會向我指出一些用於遠程配置 Fedora 機器的現有系統(現在我想到了,我現在就去研究一下)。

順便說一句,我正在運行 SELinux,因為 Fedora 15 默認是這樣配置的。

謝謝。

編輯:
我找到了這個教程:
http://www.cyberciti.biz/faq/howto-disable-httpd-selinux-security-protection/

不幸的是,當我運行“setsebool httpd_disable_trans 1”時,出現錯誤:
無法更改活動布爾值:無效布爾值

我還嘗試直接編輯不存在的“/etc/selinux/targeted/booleans”,然后重新啟動 apache,但這也不起作用。

您是否嘗試過setenforce 0 (暫時禁用 SELinux)、 audit2allow或完全禁用 SELinux? 請參閱: 即使更新 sudoers,PHP 網頁也不會啟動 unix 命令

在搜索了幾個小時后,這對我有用。 祝你好運! :)

semanage fcontext -a -t httpd_sys_script_exec_t '/whatever/scripts(/.*)?'

restorecon -R -v /whatever/scripts/

https://stackoverflow.com/a/15424003/11249696

暫無
暫無

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

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