从非 root 用户执行 root 需要的脚本

Executing root-required script from non-root user

我正在使用 Apache CGI mod 以允许通过 HTTP(S) 请求执行 python 脚本。问题是我要执行的脚本 backup.py 在某一点执行子进程调用,其中 mysqldump 命令是被输送到 sudo -i。问题是 CGI "user", www-data, 没有 root 访问权限,我当然不想给它一般,只是为了这个具体任务。如何允许 www-data 仅在 sudo -i 下执行 mysqldump 命令?

提升特定脚本权限的一种方法是使用 sudoers 文件。

创建一个包含您不想使用 root 权限执行的脚本的文件,比如 /path/to/script.sh

然后,使用 sudo visudo 编辑 sudoers 文件,并添加以下行:

www-data ALL = (root) NOPASSWD: /path/to/script.sh

根据需要设置用户名和路径。