shell_exec中的PHP sudo

| 我想使用shell_exec以root身份执行命令。现在我知道这很危险,但是请相信我,您需要使用MOD_AUTH登录并具有正确的权限才能进入此页面。是安全的。我该怎么做?     
已邀请:
您可以使用phpseclib的最新SVN版本(纯PHP SSH实现)来执行此操作。例如。
<?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]\');
?>
    
问题不是您的页面是否安全,问题在于赋予php页面运行某些sudo命令的能力会将其赋予所有页面,包括任何站点上任何不安全页面上的所有注入代码服务器。 就是说,最好制作一个只完成一项需要完成的工作的包装器脚本,然后将http命令作为sudo授予http用户访问权限
http  ALL=(ALL) NOPASSWD:/user/local/bin/your_wrapper_script.sh
    
Definitley不建议。但是,您将需要研究编辑
sudoers
文件并添加用户php以
NOPASSWD
的身份运行所需的命令。这将只允许他在不输入密码的情况下“ 4”一个命令。 如果需要更多命令,请添加更多命令。 Sudoers配置我知道论坛/帖子是基于debian的,但是sudo并不是严格的debian,这应该可以帮助您了解需要放置的sudo配置值。     
我只是用Google支付了5英镑,这是第一名: http://www.php.net/manual/zh/function.shell-exec.php#101440   ilya在linemedia dot ru 16-Dec-2010 04:36   可以执行sudo而不将通行证存储在文件中
system(\'echo \"PASS\" | sudo -u root -S COMMAND\');
    
$aux=echo \"admin-pass\" | your command;
echo $aux;
/ ************************************ ************例************* *********************************** / 运行一个名为
my_perl_script.pl
的Perl脚本:
$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前缀再次运行同一命令。     

要回复问题请先登录注册