【问题标题】:Edit sudoers file to only allow specific commands编辑 sudoers 文件以仅允许特定命令
【发布时间】:2018-06-15 22:17:45
【问题描述】:

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

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

我收到以下错误:

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

这反过来又让我意识到运行 PHP 的用户确实没有有权执行导致我转到this thread 的命令。 然而正如你不应该公然将 CHMOD 文件设置为 777 我不想在从命令行使用 sudo 或 PHP 的 exec 脚本时盲目地为此用户启用所有命令。

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

【问题讨论】:

  • 这里有什么帮助吗? unix.stackexchange.com/questions/18830/…。请注意,如果您授予 PHP 用户执行此命令的权限,它将在系统范围内通过服务器上的任何脚本可用(假设它以同一用户身份执行)。

标签: php linux console sudoers


【解决方案1】:

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

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

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

This UNIX stackexchange question 对 sudo 条目语法有很好的详细说明。

【讨论】:

  • Awesome 除了,去看看,cPanel 会产生某种复杂性。我使用了$ which uapi(非常感谢您非常添加该位)但是它返回“找不到命令”。我确实知道uapi 是如何注册的,并且完全不知道该问什么,更不用说在这种情况下做什么了?
  • 另外,我必须重新启动 Linux 才能生效吗?
  • 如果找不到命令,which 命令应该不返回任何输出。如果发生这种情况,则PATH 中可能不存在搜索到的命令。您可能必须手动搜索文件系统。此外,您不必重新启动系统即可使更改生效。
猜你喜欢
  • 2013-02-16
  • 2017-09-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-16
  • 1970-01-01
  • 2010-12-29
  • 1970-01-01
相关资源
最近更新 更多