php - 编辑 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
该用户执行命令(也是多个特定命令)?sudo
sudoers
解决方案
您可以通过像这样的文件条目授予用户以 root 身份执行命令的权限sudoers
(假设www-data
是 PHP 进程所有者用户):
www-data ALL=(root) NOPASSWD: /path/to/uapi
uapi
通过命令获取文件的路径which uapi
。您应该仔细考虑此操作的安全隐患。
这个 UNIX stackexchange question对 sudo 条目语法有很好的详细解释。
推荐阅读
- scala - spark sql:如何在组级别实现数据帧的并行处理,但是在每个组中,我们需要对行进行顺序处理
- sql - 无法重置分区组(特别是 Window 函数和 PostgreSQL)
- python - Python:对列表中的列表使用 AST 时出错
- python - Sqlalchemy 在 USE 命令中使用模式名称而不是数据库名称
- python - python3.7 django 在 runserver 命令 127.0.0.1:8000 后不可用,没有错误信息(Linux Gentoo)
- c# - 在运行时将游戏对象捕捉到 Unity 3D 中的另一个游戏对象
- if-statement - Netlogo:嵌套的 if/ifelse 语句
- html - SVG 圆形笔划有一个奇怪的结局?如何平均分布笔划破折号?
- mysql - 如何在sql中的查询之间添加一个月的第一天和最后一天?
- c# - Control.Location.X in dynamic controls.?