Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 如何在没有sudo的情况下从脚本调用超级用户命令_Bash_Apache_Superuser - Fatal编程技术网

Bash 如何在没有sudo的情况下从脚本调用超级用户命令

Bash 如何在没有sudo的情况下从脚本调用超级用户命令,bash,apache,superuser,Bash,Apache,Superuser,我需要从一个可以从php网页访问的脚本调用postfix reload后缀重新加载需要超级用户权限。我可以使用echo“password”| sudo…来实现这一点,但我不想将超级用户权限授予可从apache访问的脚本,也不想将密码以明文形式写入其中。如何调用这样的命令而不产生安全问题?像ISPConfig这样的软件如何解决这一需求?必须允许运行Apache的用户(例如Apache)在没有密码的情况下执行“sudo postfix reload”。为此,您需要添加 “/etc/sudoers”文

我需要从一个可以从php网页访问的脚本调用
postfix reload
<代码>后缀重新加载需要超级用户权限。我可以使用
echo“password”| sudo…
来实现这一点,但我不想将超级用户权限授予可从apache访问的脚本,也不想将密码以明文形式写入其中。如何调用这样的命令而不产生安全问题?像ISPConfig这样的软件如何解决这一需求?

必须允许运行Apache的用户(例如Apache)在没有密码的情况下执行“sudo postfix reload”。为此,您需要添加 “/etc/sudoers”文件中的以下行:

apache   ALL = NOPASSWD: /path/to/postfix reload
我建议在脚本中使用'sudo/path/to/postfix reload',因为后缀文件可能不在apache用户的默认路径中

关于安全性,您需要确保不会经常启动此命令,因为它可能会导致性能问题。
由于该命令已指定参数,即使您的站点会受到损害,postfix重新加载也只会执行特定的操作,而不可能改变该行为(只要sudo和postfix被禁用).

您可以将
sudo
配置为允许任何用户
apache
运行,以便在不使用密码的情况下运行特定命令。如何做到这一点是有点离题的堆栈溢出;试试superuser.com。我的建议是将web服务与服务重新加载任务分离。1001实现这一点的不同方法,同时,我不会实现来自生产web服务器的特权命令的直接操作/反应。