如何在Linux中运行具有root权限的脚本

时间:2011-05-25 03:34:28

标签: linux permissions cgi root

我必须开发一个用CGI编写的网站。

我想知道如何从CGI运行具有root权限的脚本。

假设脚本名称为hello,我从CGI运行它,如 system(“pathToTheFile / hello”)

现在我想以root身份运行这个hello文件;任何人都可以帮我这个吗?

3 个答案:

答案 0 :(得分:2)

通常,最安全的方法是使用类UNIX操作系统的 setuid 功能。如果您将hello程序的所有者设置为root,然后设置setuid位:

chmod u+s hello

然后无论执行程序,它都将以root身份执行。这适用于本机可执行文件,但不适用于解释的脚本。如果“你好”必须是一个脚本,那么这对你不起作用。

现在,我不得不说,一般来说,setuid root程序并不是一个好主意。通常,您可以创建一个特殊用户来拥有该脚本,并为该用户提供所需的一些有限权限,然后将脚本setuid设置为该用户。

答案 1 :(得分:1)

正常的方法是让你想要运行它的用户拥有可执行文件,然后设置SUID位。

使用sudo的方法通常需要用户输入密码(有很多方法,但它们很复杂)。

我想我不需要提及设置SUID位是一件非常危险的事情,是吗?如果任何以其他方式做你想做的事,你应该使用它。


您可能想要考虑的一件事是,不是根据您需要的解决方案提出问题,而是根据您想要解决的问题提出问题。以root身份运行是解决方案,并不一定是好的。发布你想要实现的,而不是如何,,我们可以用更危险的方式帮助你。

答案 2 :(得分:1)

从网页以root身份执行操作的更安全的方法是断开程序执行与网页的连接。而是使用Unix本地套接字,命名管道或排队作业目录。

该目录可能是最容易处理的。设置网页可以将文件写入的目录。当您的页面需要完成某项操作时,请编写描述该作业的文件。然后你有一个以root身份运行的程序,等待新的工作。它可以在需要快速响应时连续运行,也可以使用crontab条目每分钟或每隔几分钟运行一次。