關於此主題有許多問題,但是我的情況很奇怪。PHP - exec sudo命令不會返回任何內容
我想在php中打印出exec("sudo -u root whoami")
。但它什麼都沒有返回。
我通過sudo visudo
添加了%www-data ALL=(ALL:ALL) ALL
,但沒發生什麼事情,沒有錯誤,只是沒有打印出任何東西。
有什麼建議嗎?
在此先感謝
關於此主題有許多問題,但是我的情況很奇怪。PHP - exec sudo命令不會返回任何內容
我想在php中打印出exec("sudo -u root whoami")
。但它什麼都沒有返回。
我通過sudo visudo
添加了%www-data ALL=(ALL:ALL) ALL
,但沒發生什麼事情,沒有錯誤,只是沒有打印出任何東西。
有什麼建議嗎?
在此先感謝
如何您的Web服務器會爲sudo
輸入密碼?
您的配置允許webserver-user在服務器上運行所有命令。但是那需要用戶輸入他們的密碼。而網絡服務器
所以如果你想要做你試着做(給進程中運行PHP什麼根訪問機器是非常糟糕的主意),你應該將它添加到你的sudo-配置:
%www-data ALL = NOPASSWD: /usr/bin/whoami
這允許組www數據運行whoami
作爲根沒有一個interctive密碼提示
我添加了'%www-data ALL =(ALL:ALL)ALL',我認爲這包括您提到的內容?我知道這是一個壞主意,但它不起作用 –
其實你所說的建議完美無缺。但有沒有一種更安全的方法來做到這一點,還是我違背所有安全規則? –
雖然它不需要密碼,但實際上並沒有創建任何東西。我嘗試了一個簡單的mkdir命令並且沒有創建文件夾。在此先感謝 –
我要把它放在那裏,這是一個可怕的想法。您的網絡服務器/ PHP不應該擁有對整個系統的root權限。 –
除了您即將創建的可怕安全漏洞:您的sudoers條目並不意味着在更改的用戶標識下實際執行命令時不需要密碼。您無法以交互方式提供的密碼。你想閱讀sudoers文件提供的'NOPASSWD'選項,你想在文檔中閱讀這個選項。但再一次:出於安全原因,這是一個壞主意。 – arkascha
此外,只需在現有的超級用戶下使用PHP CLI進行測試,並且'echo exec(「sudo -u root whoami」)'可以正常工作,但需要輸入密碼。 –