我已经做了一个简单的服务器管理脚本bash脚本,我无法确定如何在php页面内安全地运行它:我想创建一个php管理页面,但我显然不想硬编码根密码任何软件。让我们做出了榜样(这是一个富脚本,当然)通过php运行shell脚本(使用root权限)的最佳方式是什么?
#!/bin/bash
touch /$1
这个简单的/愚蠢的脚本将无法工作,如果谁运行它作为/没有写作权限的用户。
其实脚本中添加apache虚拟主机,ftp用户等等...... 有什么想法吗?
感谢
我已经做了一个简单的服务器管理脚本bash脚本,我无法确定如何在php页面内安全地运行它:我想创建一个php管理页面,但我显然不想硬编码根密码任何软件。让我们做出了榜样(这是一个富脚本,当然)通过php运行shell脚本(使用root权限)的最佳方式是什么?
#!/bin/bash
touch /$1
这个简单的/愚蠢的脚本将无法工作,如果谁运行它作为/没有写作权限的用户。
其实脚本中添加apache虚拟主机,ftp用户等等...... 有什么想法吗?
感谢
使用
sudo /path/to/executable/file
和设置sudo
,因此它可以为当前用户为根执行以下命令。
- 这里是sudoers手册,配置文件,你必须修改。
zerkms ALL = (ALL) NOPASSWD: /sbin/iptables -L FORWARD -n -v -x
这是我的/etc/sudoers
的示例。在这里我允许运行命令/sbin/iptables -L FORWARD -n -v -x
作为root
而不要求用户的密码zerkms
。
这听起来不像你想从网页访问脚本调用的东西。 – 2010-11-02 00:07:21
我会再次对Jason发出警告。除非脚本写得很细致,否则很可能会用它来做......意想不到的事情。举个例子,你的示例脚本可以用来在/ var/db/sudo中触摸密码验证文件,或者触摸多个文件(因为'$ 1'没有双引号,如果它包含空格,它将被视为多个“touch”的参数)。你的真实剧本可能要复杂得多,这意味着它可能会有更多的恶作剧机会。 – 2010-11-02 04:29:31