【发布时间】:2020-03-23 17:29:02
【问题描述】:
我正在拼命尝试通过 Web 用户界面在 Debian 10 机器上挂载 CIFS 共享,并让整个系统都可以访问它。 mount 命令执行成功,但挂载点未在 /etc/mtab 或 /proc/mounts 中列出,因此 mount 命令也未显示。
我使用 apache2 作为网络服务器,我尝试了不同的方法,结果都一样。
我们的目标是使用 Apache 或 Nginx 的 php 脚本来挂载一个对整个操作系统有效且可见的共享,就像我在命令行上使用 mount 命令一样。
我尝试了不同的方式来调用一个调用 bash 脚本来挂载共享的 mount.php:
- 在没有密码的情况下将 www-data 添加到 sudoers 并调用包含“sudo mount ...”的脚本
- 使用了一个 c 编译的包装器,它以 root 身份执行,它调用一个 bash 脚本来装载共享
- 安装了 php-fpm 并带有启用 root 的套接字来调用 bash 脚本
- 让 bash 脚本将共享添加到 /etc/fstab 并执行 mount -a
如果从命令行调用,所有这些方法都可以正常工作,即使作为 www-data 用户调用(如果可能)。
当通过 Web 界面调用时,它们似乎也都挂载了共享,因为如果我使用相同的技术从网站的 php 脚本中启动没有任何参数的挂载,则挂载会按应有的方式列出。此外,再次尝试通过 Web 界面挂载共享会显示设备正忙的消息。
但是当我在命令行上使用不带任何参数的挂载命令时,挂载点没有列出,我也没有在 /etc/mtab 或 /proc/mounts 中找到它。
在最后一种方法中,我让脚本编辑 /etc/fstab 并调用“mount -a”,行为完全相同(在 Web 界面中列出但不在命令行中),但是当我重新启动共享已按预期安装且可见。
所以我很确定我忽略了运行 apache2 的某种用户空间/沙箱/终端限制,这对 mount 命令有一些影响。奇怪的是,因为我什至可以使用脚本编辑 /etc/fstab 并且似乎对所有内容都具有 root 访问权限 - 甚至可以挂载,否则它根本不会启动。但无论如何,当通过 Web 界面调用时,mount 命令似乎将它的 mount-results 写入其他地方。
有没有人能指出我正确的方向?`
提前致谢, 阿克塞尔
【问题讨论】: