我如何在 PHP 中允许这些命令:
$output = exec('sudo nginx -t 2>&1');
$output2 = exec('sudo /usr/sbin/service nginx reload 2>&1');
我已经在终端中查看过sudo visudo
,但似乎这样可以访问全部sudo 命令,而我只需要上面两个。
我猜重新加载并不是那么重要,因为我只需运行 cron 作业即可完成。
我正在使用 NGINX,Ubuntu 20 + PHP 7
答案1
您可以输入以下几行/etc/sudoers.d/nginx
:
www-data ALL = (root) NOPASSWD: /usr/sbin/nginx -t
www-data ALL = (root) NOPASSWD: /usr/sbin/service nginx reload
这将禁用运行时的密码提示sudo /usr/sbin/service nginx reload
或以 身份登录时的其他命令www-data
。
www-data
这假设您的 PHP 在用户下运行。