php - 如何在 root 用户下从 PHP 运行 bash 脚本

标签 php linux bash shell unix

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

那是我在 sudo 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

最佳答案

你可以使用 sudo:

exec("sudo /your/script");

您应该允许在没有密码提示的情况下执行您的脚本。在控制台中运行 sudo visudo 并在末尾添加以下字符串:

nobody ALL = NOPASSWD: /your/script

您必须正确设置文件模式以确保没有人可以修改此脚本并将危险内容放入其中(在根控制台中):

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

关于php - 如何在 root 用户下从 PHP 运行 bash 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10915241/

相关文章:

linux - 使用 sudo 作为另一个用户运行时的 Perl 系统调用

linux - 如何在 bash 中优雅地存储和回显多行?

linux - 指定配置文件数据位置的任何方式

bash - 在 bash 中,如何在变量中捕获一些输出,让休息到达标准输出

javascript - 如何创建一个表单,该表单将在单击按钮时添加包含多个输入字段的行

php - 定义变量时 undefined variable 通知

bash - 如果上一个命令成功,则在 bash 中运行命令,bash 如何判断命令是否成功

linux - 如何提取键名后包含空格或引号的键值

php - 多个文件/图像上传 CakePHP 3

php - 如何使用 PHP 的 SoapClient 类使用有状态 Web 服务?