我希望用户能够重新启动 php5-fpm 服务。在 visudo 中,我有以下内容:
username ALL=NOPASSWD: /etc/init.d/php5-fpm
当我su
告诉用户并运行时sudo /etc/init.d/php5-fpm stop
,什么都没有发生。没有反馈,服务仍在运行。
我需要做什么才能username
控制该服务?运行 Ubuntu 13.10。
编辑:看着auth.log
我明白了
sudo: username : TTY=pts/1 ; PWD=/var/log ; USER=root ; COMMAND=/etc/init.d/php5-fpm stop
答案1
正如 rootslash 的评论所暗示的,我相信 PHP-FPM 二进制文件中的某些内容需要 root 权限,而该用户没有该权限(可能是打开端口?)。我决定让该用户接触一个文件,root 用户每分钟(cron)检查一次该文件,如果找到该文件,则重新启动服务,然后删除该文件。
虽然不太理想,但可以实现。
答案2
您能否按如下方式修改维苏多?
username ALL=NOPASSWD: /etc/init.d/php5-fpm stop
username ALL=NOPASSWD: /etc/init.d/php5-fpm stop, /etc/init.d/php5-fpm start
答案3
您是否正在运行 SELinux 或其他安全管理器?如果是这样,即使命令以 root 身份运行,用户可能仍具有其安全标签,并且无权执行 /etc 中的文件。
您可以暂时禁用 SELinux,然后测试该命令是否开始起作用。对于 SELinux,我相信您可以使用“setenforce”命令暂时禁用它。
答案4
你试过 sudo service php5-fpm stop/start 吗?
如果有效,只需将用户 ALL: NOPASSWD: /sbin/service 添加
到 /etc/sudoers 文件