开源中文网

您的位置: 首页 > 编程开发 > PHP > PHP程序设计 > 正文

Linux服务器PHP以root身份运行外部命令-sudo实施方法

来源:  作者:

半年前在给一个朋友调试Linux邮件服务器时,发现并不需要用super,只用Linux系统的sudo就可办到, 

假设运行Apache的用户是nobody,密码是nobody2002 

要在PHP中实现用户的增,删,改的操作 

1> 有关的文件及路径: 

/etc/sudoers 
/usr/bin/sudo 
/usr/sbin/useradd 
/usr/sbin/userdel 
/usr/sbin/usermod 

2> 以root身份登录Linux系统,修改/etc/sudoers文件,可也仅可运行命令visudo就可以了, 增加如下一行 

nobody ALL=(ALL) /usr/sbin/useradd,/usr/sbin/userdel,/usr/sbin/usermod 

##注意不能用vi /etc/sudoers 的方式修改哟 

3> 
请参考如下程序: 

$sudo_path="/usr/bin/sudo"; 
$cmd_add=$sudo_path." /usr/sbin/useradd"; 
$cmd_del=$sudo_path." /usr/sbin/userdel"; 
$cmd_mod=$sudo_path." /usr/sbin/usermod"; 
function sudo_cmd($todo_cmd) 

$userpass="nobody2002"; 
$fp = @popen($todo_cmd, "w"); 
@fputs($fp, $userpass); 
@pclose($fp); 

// 例子: 
$user="newuser"; 
$pass="12345"; 
$crypass=crypt($pass,"PK"); 
// 增加用户 
$cmd=$cmd_add." -p $crypass $user"; 
sudo_cmd($cmd); 
// 删除用户 
$cmd=$cmd_del." $user"; 
sudo_cmd($cmd); 
// 修改用户(密码,HOME目录,...,暂停,恢复使用等) 
$cmd=$cmd_mod." -p $crypass $user"; 
sudo_cmd($cmd); 
$cmd=$cmd_mod." -L $user"; 
sudo_cmd($cmd); 
$cmd=$cmd_mod." -U $user"; 
sudo_cmd($cmd); 
?> 

Tags:Linux 服务器 root
关于开源中文网 - 联系我们 - 广告服务 - 网站地图 - 版权声明