Rootop 服务器运维与web架构

linux下php以root权限执行shell脚本或系统命令

首先修改 /etc/sudoers:
#Defaults requiretty      #这行前面加注释符号
apache ALL=(ALL) NOPASSWD:ALL
用户    主机=映射为谁的权限 不需要密码:所有操作

web服务以哪个用户运行,就改掉apache。
需要只允许哪几个脚本就改为:
apache ALL=(root) NOPASSWD:/home/a.sh,/home/b.sh           #每个脚本逗号隔开

上面参数解释:
apache这个用户以root权限,不需要密码去运行/home/a.sh和/home/b.sh两个脚本

在php中调用:

<?php

if (!function_exists('exec'))
{
echo 'exec函数被禁用';
}

exec("/usr/bin/sudo /home/a.sh", $result, $status);

?>

一般情况下,exec这个函数,包括shell_exec 、system 等做为危险函数会被禁用,如果禁用了,去php.ini配置文件取消禁用。

原创文章,转载请注明。本文链接地址: https://www.rootop.org/pages/3638.html

作者:Venus

服务器运维与性能优化

评论已关闭。