首页 > 解决方案 > 编辑 sudoers 文件以仅允许特定命令

问题描述

我需要通过 PHP 的函数从命令行运行一个 cPanel 脚本exec(其他 cPanel 选项不可行)。命令大致是:

uapi --user=[user] Email suspend_incoming email=[user]%40[domain].[tld]

我收到以下错误:

setuids 失败:尝试将 setuid 设置为具有 RUID 的普通用户 ***

这反过来又让我意识到运行 PHP 的用户没有权限执行导致我进入这个线程的命令。但是,正如您不应该像 777 那样公然使用 CHMOD 文件,我不想sudo在从命令行或 PHPexec脚本使用时盲目地为此用户启用所有命令。

通过编辑文件使用时,如何允许uapi该用户执行命令(也是多个特定命令)?sudosudoers

标签: phplinuxconsolesudoers

解决方案


您可以通过像这样的文件条目授予用户以 root 身份执行命令的权限sudoers(假设www-data是 PHP 进程所有者用户):

www-data  ALL=(root) NOPASSWD: /path/to/uapi

uapi通过命令获取文件的路径which uapi。您应该仔细考虑此操作的安全隐患。

这个 UNIX stackexchange question对 sudo 条目语法有很好的详细解释。


推荐阅读