我想用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