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.