我想用shell_exec以root身份執行命令。現在我知道這很危險,但請相信我,您需要使用MOD_AUTH登錄並且有權訪問此頁面。它很安全。我怎樣才能做到這一點?shell_exec中的PHP sudo
回答
你可以使用的phpseclib, a pure PHP SSH implementation最新的SVN版本,要做到這一點執行。例如。
<?php
include('Net/SSH2.php');
$ssh = new Net_SSH2('www.domain.tld');
$ssh->login('username', 'password');
$ssh->read('[prompt]');
$ssh->write("sudo command\n");
$ssh->read('Password:');
$ssh->write("Password\n");
echo $ssh->read('[prompt]');
?>
像這個解決方案:),我會使用那個。 – 2011-04-19 08:22:08
Definitley不建議。但是,您需要考慮編輯sudoers
文件並添加用戶php作爲NOPASSWD
運行您需要運行的命令。這隻會讓他以sudo
那一個命令無法輸入密碼。
如果您需要更多命令,可以添加更多命令。 Sudoers Configuration我知道forum/post是基於debian的,但sudo並不是嚴格的debian,它應該可以幫助你解決你需要的sudo配置值。
的問題不在於你頁是或不是安全的,問題是,給一個PHP頁面運行一些sudo命令會給它所有頁,包括任何的注射能力上的任何代碼服務器上任何站點上的不安全頁面。
這就是說,它可能是最好做一個包裝腳本,不只是一個工作需要做,然後給作爲須藤
http ALL=(ALL) NOPASSWD:/user/local/bin/your_wrapper_script.sh
+1的包裝。 – 2011-04-13 17:18:07
我忘了提一個不帶參數的包裝!製作一個不接受參數的包裝腳本可以減少攻擊面。如果執行某些參數,某些程序可以被操縱來做壞事。使用包裝器允許您以更受控制的方式啓動程序。 – Caleb 2011-04-13 17:21:11
所有需要root訪問權限的文件都位於/ var/private-www /中,只能由root用戶訪問。是否有可能讓他們使用sudo?我嘗試過'http ALL =(ALL)NOPASSWD:/ var/private-www /',但那不起作用。 – 2011-04-13 17:24:38
我只是谷歌」只是一個命令的HTTP用戶訪問d爲php sudo shell_exec
這想出了爲#1的比賽:在linemedia
http://www.php.net/manual/en/function.shell-exec.php#101440
伊利亞點RU 16日 - 12月2010 04:36
,sudo命令可以不存儲通在文件
system('echo "PASS" | sudo -u root -S COMMAND');
$aux=echo "admin-pass" | your command;
echo $aux;
/******** ******* *****例子************* ****************************** */
運行Perl腳本命名爲my_perl_script.pl
:
$aux=echo "admin-pass" | sudo -u root -S perl /path-to-the-script/my-perl-script.pl;
echo $aux;
最好的方式做到這一點:
$descriptorSpec = array(
0 => STDIN,
1 => STDOUT,
2 => STDERR,
);
if (posix_getuid() === 0) {
echo "Root\n";
} else {
echo "No root\n";
$command = 'sudo ' . PHP_BINARY . ' ' . implode(' ', $_SERVER['argv']);
$pipes = [];
$process = proc_open($command, $descriptorSpec, $pipes);
if (is_resource($process)) {
proc_close($process);
}
}
它再次運行相同的命令,以sudo爲前綴。
- 1. PHP:運行shell_exec或系統爲sudo?
- 2. nginx中的PHP shell_exec權限
- 3. 併發PHP中的shell_exec()
- 4. 在PHP中的shell_exec問題
- 5. PHP的passthru()vs shell_exec()
- 6. 通過PHP的shell_exec()
- 7. PHP的shell_exec目錄
- 8. php shell_exec echo
- 9. shell_exec與PHP
- 10. shell_exec()in PHP
- 11. PHP shell_exec()問題
- 12. Shell_exec PHP與nohup
- 13. shell_exec on php
- 14. shell_exec php示例
- 15. PHP shell_exec cp -r
- 16. PHP shell_exec INSERT MySQL
- 17. PHP和shell_exec
- 18. PHP了shell_exec()與EXEC()
- 19. PHP頭和了shell_exec
- 20. PHP了shell_exec()SASS --update
- 21. PHP了shell_exec()插值
- 22. php shell_exec()通過cygwin
- 23. php shell_exec()freeradius命令
- 24. PHP:在shell_exec中包含php變量
- 25. 在php中的shell_exec的問題
- 26. 使用「wine」和php的shell_exec
- 27. 的ffmpeg-php和了shell_exec
- 28. 從php的shell_exec輸出檢測eol
- 29. 在php中執行shell_exec的命令
- 30. PHP shell_exec()命令中引號的用法
無論你做什麼,它永遠不會'安全'.. – halfdan 2011-04-13 17:15:29