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

How to call superuser command from script without sudo

我需要通过可从 php 网页访问的脚本调用 postfix reloadpostfix 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 用户的默认路径中。

关于安全,您需要确保此命令不会经常启动,因为它可能会导致性能问题。 由于该命令指定了一个参数,即使您的网站会受到威胁,后缀重新加载也只会执行特定的操作而不可能改变该行为(只要 sudo 和后缀是 up2date)。