End.
原
linux中配置sudo赋予普通用户对某些命令的执行权限
背景
有时我们需要给普通用户,某个命令的执行权限,但是又不想让这个普通用户能执行更多的其他命令,这时候我们可以配置sudo,设置只能执行某几个命令即可
配置
vim /etc/sudoers
#新增如下一行,赋予www用户能sudo执行supervisorctl命令
www ALL=(ALL:ALL) NOPASSWD:/bin/supervisorctl,/sbin/service php-fpm reload
多个命令可以逗号分隔
这样 www用户就可以直接执行 /bin/supervisorctl status 等命令了
但是 直接执行 /sbin/service php-fpm reload 还是会报错
service php-fpm reload
Reload service php-fpm /etc/init.d/php-fpm: line 142: kill: (9419) - Operation not permitted
done
所以我们要用下面的方式执行:
sudo /sbin/service php-fpm reload
例子:
www-data ALL=(ALL:ALL) NOPASSWD:/usr/bin/supervisorctl
然后,php代码可以使用
$result = shell_exec('sudo supervisorctl restart RocketMQ' . $queueName . ':*');
$num = (int)(count(explode("\n", $result)) / 2);
End.