通过 Web 界面在 Linux 上安装 CIFS 共享

Mounting CIFS share on Linux by webinterface

我拼命尝试通过 Web 用户界面在 Debian 10 机器上安装 CIFS 共享,并让整个系统都可以访问它。挂载命令执行成功,但挂载点未在 /etc/mtab 或 /proc/mounts 中列出,因此挂载命令也未显示。

我正在使用 apache2 作为网络服务器,我尝试了不同的方法,但都得到了相同的结果。

目标是将 php-script 与 Apache 或 Nginx 一起使用,以安装对整个 OS 有效且可见的共享,就像我在命令行上使用 mount 命令一样.

我尝试过使用 mount.php 调用 bash 脚本来挂载共享的不同方法:

如果从命令行调用,所有这些方法都可以正常工作,即使是作为 www-data 用户调用(如果可能)。

它们似乎都在通过 Web 界面调用时挂载共享,因为如果我使用相同的技术在网站的 php 脚本中不带任何参数启动挂载,则会列出挂载应该如此。此外,第二次尝试通过 Web 界面装载共享时会显示设备正忙的消息。

但是当我在命令行上使用不带任何参数的 mount 命令时,挂载点没有列出,我也没有在 /etc/mtab 或 /proc/mounts 中找到它。

在最后一种方法中,我让脚本编辑 /etc/fstab 并调用 'mount -a' 行为完全相同(在 Web 界面中列出,但不在命令行中列出),但是当我重新启动共享按预期安装并可见。

所以我非常确定我忽略了 apache2 在其中运行的某种用户空间/沙箱/终端限制,这对 mount 命令有一些影响。奇怪的是,因为我什至可以用脚本编辑 /etc/fstab 并且似乎对所有内容都有 root 访问权限 - 甚至可以挂载,否则它根本不会启动。但是无论如何,当通过 Web 界面调用时,mount 命令似乎将它的 mount-results 写在其他地方。

有没有人给我指出正确方向的想法?`

提前致谢, 阿克塞尔

如果您在权限方面遇到问题,并且不想深入研究,我建议在 PHP 中使用简单的写入文件功能,然后使用 CRON JOB 执行脚本,如果找到那个文件,删除它,然后执行你想要的功能。该 cron 作业在整台计算机上不应有任何权限问题。

Apache2 有一个 属性 "PrivateTmp" 设置在 /etc/systemd/multi-user.target.wants/apache2.service 中。尝试通过在该行前面放置井号 (#) 来对其进行注释。

装载使用临时文件夹,如果 Apache 使用私有临时文件夹,它可能不会出现在装载列表中。