0

我正在为 Cent OS 服务器的 GUI 编写 PHP 脚本。出于测试目的,我将 Apache 设置为 localhost。Cent OS 不会自动挂载连接的 USB 设备。在 PHP 中,我需要检查是否插入了 USB 设备,然后挂载它并为用户列出文件内容。这在 bash 中非常简单,但是我无法使其在 PHP 中工作。我玩弄了exec()shell_exec()功能都无济于事。我已经手动尝试了这些命令,即:

shell_exec("sudo mount /dev/sdb1 /mnt");

并通过 bash 脚本:

exec("./mountlist.sh");

PHP中是否有一个我可以调用的函数来做同样的事情,或者我错过了execandshell_exec函数的一些东西。这两个函数在 shell 中都能正常工作。由于 mount 是我包含sudo在 bash 脚本中的根命令。

4

1 回答 1

1

您不能在 PHP 脚本中使用 sudo - 无法输入 sudo 密码。

您可以创建一个 shell 脚本并使用 STICKY 位让它以 root 用户身份运行

http://www.dba-oracle.com/linux/sticky_bit.htm

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

另外 - 您可以授予 Web 用户安装/卸载文件系统的权限(将他添加到大多数系统上的 fuse 组),但是如果您的 Web 服务器被黑客入侵,这将更加开放且相当危险,所以我会使用 shell 脚本和粘性位为您的目的。

于 2012-08-27T19:30:38.490 回答