PHP:挂载USB设备

PHP:挂载USB设备,php,bash,exec,shell-exec,Php,Bash,Exec,Shell Exec,我正在为CentOS服务器的GUI编写一个PHP脚本。出于测试目的,我将Apache设置为localhost。Cent OS不会自动安装已连接的USB设备。在PHP中,我需要检查是否插入了USB设备,然后挂载它并为用户列出文件内容。这在bash中非常简单,但是我无法使它在PHP中工作。我使用了exec()和shell\u exec()函数,但都没有用。我已手动尝试了两个命令,即: shell_exec("sudo mount /dev/sdb1 /mnt"); 通过bash脚本: exec("

我正在为CentOS服务器的GUI编写一个PHP脚本。出于测试目的,我将Apache设置为localhost。Cent OS不会自动安装已连接的USB设备。在PHP中,我需要检查是否插入了USB设备,然后挂载它并为用户列出文件内容。这在bash中非常简单,但是我无法使它在PHP中工作。我使用了
exec()
shell\u exec()
函数,但都没有用。我已手动尝试了两个命令,即:

shell_exec("sudo mount /dev/sdb1 /mnt");
通过bash脚本:

exec("./mountlist.sh");

在PHP中是否有一个函数可以调用以执行相同的操作,或者我是否缺少
exec
shell\u exec
函数。这两个函数在shell中都可以正常工作。因为mount是根命令,所以我在bash脚本中包含了
sudo

不能从PHP脚本中输入sudo-无法输入sudo密码

您可以创建一个shell脚本,并使用粘性位将其作为根用户运行

这就是passwd命令如何写入root用户拥有的密码文件,即使您是以普通用户的身份运行它


此外,您可以授予web用户装载/卸载文件系统的权限(将他添加到大多数系统的fuse组中),但如果您的web服务器遭到黑客攻击,这将更加开放,而且相当危险,因此出于您的目的,我将使用shell脚本和粘性位。

php运行的任何用户都具有sudo权限吗?这些特权是在没有密码提示的情况下被授予的吗?我对PHP和bash非常陌生,用户没有,但是如果他们这样做了也不会有问题。我该如何授予Apache用户root权限?Apache已经开始使用root权限(因此它可以绑定到端口80),然后放弃这些权限,因为以root身份运行Web服务器从根本上说是个坏主意。我明白了,那么我该如何通过PHP挂载USB密钥?@newfurniture:嗯,你读过其余的评论了吗?apache必须以root priv开始才能绑定到端口80。chroot与此无关。另外,如果你在apache上嵌入PHP,那么chroot就没有什么意义了——一个为囚犯提供完整工具箱的监狱,包括断线钳和钢锯,基本上根本就没有监狱。