如何在Linux中以root权限运行脚本

问题描述

| 我必须开发一个用CGI编写的网站。 我想知道如何使用CGI的根权限运行脚本。 假设脚本名称是“ 0”,我从CGI像system(\“ pathToTheFile / hello \”)这样运行。 现在,我想以根用户身份运行此hello文件;有人可以帮我吗?     

解决方法

通常,最安全的方法是使用类似UNIX的操作系统的setuid功能。如果将“ 0”程序的所有者设置为“ 2”,然后设置setuid位:
chmod u+s hello
这样,无论谁执行该程序,它都将以root身份执行。这适用于本机可执行文件,但不适用于解释脚本。如果\“ hello \”必须是脚本,那么这对您不起作用。 现在,我不得不说,setuid根程序并不是一个好主意。通常,您可以创建一个特殊用户来拥有该脚本,并为该用户提供所需的有限权限,然后将脚本setuid赋予该用户。     ,从网页上以root用户身份做事的一种更安全的方法是从网页上断开程序执行。而是使用Unix本地套接字,命名管道或排队的作业目录。 该目录可能是最容易处理的。设置您的网页可以将文件写入其中的目录。当页面需要完成某些工作时,编写一个描述作业的文件。然后,您有一个以root用户身份运行的程序,等待新作业。如果需要快速响应,它可以连续运行,也可以使用crontab条目每分钟或每几分钟运行一次。     ,通常的方法是让可执行文件由您要运行的用户所拥有,然后将SUID位置1。 使用“ 4”的方法通常需要用户输入密码(虽然有很多解决方法,但是它们非常复杂)。 我想我不必说设置SUID位是一件非常危险的事情,是吗?如果还有其他方法可以做您想做的事情,则应该使用它。 您可能要考虑的一件事是,不是根据所需的解决方案而是根据要解决的问题提出问题。以root用户身份运行是一种解决方案,不一定是一个好的解决方案。发布您要实现的目标,而不是发布目标,我们可以以危险程度更低的方式帮助您。     

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...