通过 mod_php 从网络服务器 (Apache) 进行 sudo 挂载,结果对 root 不可见

通过 mod_php 从网络服务器 (Apache) 进行 sudo 挂载,结果对 root 不可见

初始问题:https://stackoverflow.com/questions/19598201/umounting-through-exec-with-sudo-the-user-is-a-sudoer-with-nopasswd

基本上,我有一个 PHP 脚本:

exec('sudo mount /dev/md/stone:supershare /mnt/supershare');

它完成时没有错误,退出代码为 0。

从单独的root会话来看,我cat /proc/mounts和它都没有显示出我的迹象supsershare

尝试:rootrm -r /mnt/supershare

[root@stone mnt]# rm -r supershare/
rm: cannot remove ‘supershare/’: Device or resource busy

尝试:rootumount /mnt/supershare

[root@stone mnt]# umount /mnt/supershare
umount: /mnt/supershare: not mounted

尝试:rootmdadm --stop /dev/md/stone:supershare

[root@stone mnt]# mdadm --stop /dev/md/stone\:supershare
mdadm: Cannot get exclusive access to /dev/md/stone:supershare:Perhaps a running process, mounted filesystem or active volume group?

任何从网络服务器使用 sudo 执行相同命令的尝试都会成功(它们显示挂载点的迹象,它们卸载设备,停止突袭等)。

是的,我是 root:

[root@stone mnt]# id
uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel),19(log)

为什么root没有收到有关网络服务器执行的安装的通知?
在什么场景下会mount成为有效用户的本地化?

答案1

简而言之,麻烦已经解决了

这是 Apache 的相应systemd服务,PrivateTmp=true指示。显然,该指令使用新的文件系统名称空间执行该进程。

您可以了解更多有关解决问题的冒险经历,这里

相关内容