【问题标题】:what is the best way to run shell script (with root privilege) via php?通过 php 运行 shell 脚本(具有 root 权限)的最佳方式是什么?
【发布时间】:2011-05-03 17:02:50
【问题描述】:

我为服务器管理制作了一个简单的 bash 脚本,但我不知道如何在 php 页面中安全地运行它:我想创建一个 php 管理页面,但我显然不想硬-代码根密码。让我们举个例子(当然这是一个 foo 脚本)

#!/bin/bash
touch /$1

如果运行它的用户没有 / 的写入权限,这个简单/愚蠢的脚本将无法工作。
实际上脚本添加了apache虚拟主机,ftp用户等等...... 有什么想法吗?
谢谢

【问题讨论】:

  • 这听起来不像是你想从可访问网络的脚本中调用的东西。
  • 我会同意 Jason 的警告。除非脚本写得很仔细,否则很可能它可以用来做……意想不到的……事情。例如,您的示例脚本可用于触摸 /var/db/sudo 中的密码验证文件,或触摸多个文件(因为 $1 不带双引号使用,如果它包含空格,它将被视为多个touch 的参数)。你的真实剧本可能要复杂得多,这意味着它可能会有更多的恶作剧机会。

标签: php bash scripting permissions


【解决方案1】:

使用

sudo /path/to/executable/file

并设置sudo,以便它可以以root身份为当前用户执行以下命令。

http://www.sudo.ws/sudo/sudoers.man.html - 这是 sudoers 手册,配置文件,您必须修改。

zerkms ALL = (ALL) NOPASSWD: /sbin/iptables -L FORWARD -n -v -x

这是来自我的/etc/sudoers 的示例。在这里,我允许以root 运行命令/sbin/iptables -L FORWARD -n -v -x,而无需询问用户zerkms 的密码。

【讨论】:

    猜你喜欢
    • 2012-12-18
    • 2011-02-17
    • 2012-12-11
    • 2022-06-15
    • 2011-09-15
    • 1970-01-01
    • 2013-02-14
    • 2015-10-12
    • 1970-01-01
    相关资源
    最近更新 更多