Sudoers - 允许特定用户执行一个特定命令

Sudoers - 允许特定用户执行一个特定命令

我有一个 PHP 脚本需要调用 python 脚本。但是,我不希望 python 脚本作为 www-data (php 用户)执行,而是作为 pycert 执行。因此,我尝试允许 www-data 执行 sudoers 文件中的脚本,但这似乎不起作用。 PHP代码:

exec("timeout --preserve-status -k 10 15s sudo -u pycert /bin/python /var/www/files/certs/creation/cert.py $file", $resulta, $result);

维苏多文件:

www-data ALL=(pycert:pycert) NOPASSWD:/bin/python /var/www/files/certs/creation/cert.py /var/www/files/certs/creation/cert-[0-9a-ZA-Z]+

这是 auth.log :

sudo: www-data : command not allowed ; TTY=pts/1 ; PWD=/var/www/files.git ; USER=pycert ; GROUP=pycert ; COMMAND=/bin/python /var/www/files/certs/creation/cert.py /var/www/files/certs/creation/cert-Wi1S9a

我错了什么?

答案1

首先,不存在“visudo 文件”这样的东西。 Visudo 是一个用于更改 sudoers 文件的编辑器。

其次,您省略了提及这是什么 Linux 发行版 - 这可能为我们提供了一些关于是否存在强制访问控制系统的线索。

第三,您尝试构建最终结果,而不是将问题分解为可以根据需要轻松重现的任务,即尝试使用普通的交互式用户帐户实现 sudo 操作。

第四,你没有看说明书。特别是“请注意,这些不是正则表达式”的部分。[0-9a-ZA-Z]+不匹配一组重复的字母字符和数字,它匹配单个 aplpha 字符或数字后跟文字“+”。

尝试...

user ALL=(pycert:pycert) NOPASSWD:/bin/python /var/www/files/certs/creation/cert.py /var/www/files/certs/creation/cert-*

相关内容