如何从PHP运行在root用户bash脚本(How to run from PHP a bash s

2019-06-25 06:09发布

如何从PHP运行在root用户 bash脚本(所有权限),而不是nobody用户- PHP的默认用户?

那须藤visudo命令后,我的输出:

Defaults        env_keep += "LINES COLUMNS"
Defaults        env_keep += "LSCOLORS"
Defaults        env_keep += "SSH_AUTH_SOCK"
Defaults        env_keep += "TZ"
Defaults        env_keep += "DISPLAY XAUTHORIZATION XAUTHORITY"
Defaults        env_keep += "EDITOR VISUAL"
Defaults        env_keep += "HOME MAIL"

#User privilege specification
root    ALL=(ALL) ALL
%admin  ALL=(ALL) ALL


# Uncomment to allow people in group wheel to run all commands
# %wheel        ALL=(ALL) ALL

# Same thing without a password
# %wheel        ALL=(ALL) NOPASSWD: ALL

# Samples
# %users  ALL=/sbin/mount /cdrom,/sbin/umount /cdrom
# %users  localhost=/sbin/shutdown -h now

Answer 1:

您可以使用sudo:

exec("sudo /your/script");

你应该让没有密码提示执行你的脚本。 运行sudo visudo控制台和下面的字符串添加到末尾:

nobody ALL = NOPASSWD: /your/script

您必须正确设置文件模式,以确保没有人可以修改此脚本,并把危险的内容进去(根控制台):

chown root:root /your/script
chmod 755 /your/script


Answer 2:

你可以被设置的uid根节目。 这导致程序总是以root身份运行。 这并不shell脚本的工作,所以你必须使用一个程序,它调用你的脚本 。



Answer 3:

在Linux下你通常做这个使用sudo 。 尝试是尽可能具体,所以不给剧本太多的权限。

有关如何使用示例sudo : http://aplawrence.com/Basics/sudo.html



Answer 4:

我想补充一个特定的规则,允许该脚本通过调用nobody用户使用sudo



Answer 5:

我最近出版的一期工程,使PHP获得和一个真正的Bash shell交互(如用户:如有需要,阿帕奇/ www数据或根)。 在这里获得: https://github.com/merlinthemagic/MTS

下载后,你会简单地使用下面的代码:

$shell    = \MTS\Factories::getDevices()->getLocalHost()->getShell('bash', true);
$return1  = $shell->exeCmd('/full/path/to/script.sh');


文章来源: How to run from PHP a bash script under root user