如何从网页运行需要 root 权限的 Linux shell 脚本

如何从网页运行需要 root 权限的 Linux shell 脚本

我正在尝试通过 Apache 运行需要 root 权限的 linux shell 脚本,有没有办法运行需要 root 权限的脚本,而不是为 Apache 设置 suid 和 sudo 权限。

我正在尝试像控制面板那样编辑文件,例如在 Plesk 中“sw-cp-server”可以编辑根文件。

答案1

问题在于,无论您如何分割它,如果非特权用户可以对于脚本文件,您打开了一扇门,让该用户可以执行任何操作,因为在这种情况下,他/她可以修改脚本。但是,没有必要这样做,因为如果您愿意,它可以拥有 root 并设置 0700。

而不是为 Apache 设置 suid 和 sudo 权限

您不必在任何内容上设置 suid,并且可以使用 sudo,以便 apache 只能执行该脚本。如果 apache 以用户身份运行httpd,请添加/etc/sudoers

httpd ALL = NOPASSWD: /foo/bar/scripts/foobar.sh

替换那里的脚本的实际路径。然后调用必须使用sudo /foo/bar/scripts/foobar.sh.但这是用户唯一httpd被允许这样做的事情。

请参阅man 5 sudoers此处了解更多详情。

答案2

通过 Apache 运行需要 root 权限的脚本的唯一方法是为 Apache 提供所需的权限集以进行所需的修改。

另一种选择(这是一种肮脏的解决方法)是让 Apache 写入文件,并在服务器上运行一个守护程序来检查 Apache 已写入的文件,并根据 Apache 写入文件的内容采取操作。

答案3

如果您不想以 root 权限运行 Apache(您也不应该这样做),那么您可以为您授予 SUID 权限 ( chmod 4755) 并root作为所有者的脚本编写一个小型包装程序。然后,该包装程序可以调用该脚本,该脚本将以正确的权限执行。任何其他脚本都不会因此被“提升”,但当然您需要注意脚本的内容无论如何都不能更改。

相关内容