我在 /mnt/smb/ 下安装了一个 SMB 共享文件夹,我可以访问这些文件。当我使用命令卸载此共享文件夹时:
umount /mnt/smb/
自然我不能使用命令列出共享文件夹的内容:
ls /mnt/smb/
但问题是当我从同一台机器上的 PHP 文件运行 ls 命令时,可以列出共享 SMB 文件夹的内容!PHP文件的内容是:
<?php
$command = 'ls /mnt/smb/';
$result = shell_exec($command);
echo $result;
?>
我的错误是什么。完全卸载 SMB 共享是否需要任何其他命令?我也使用了下面的命令,但没有运气:
fusermount -u /mnt/smb/
请根据需要重复该
umount
命令,直到根据shell 中的/mnt/smb
u(n)mount 文件夹。ls
那么也应该是按照mount
命令:这样共享就真的不再挂载了。如果某些进程仍然列出远程内容,则必须对其进行缓存(但在这种
php
系统调用情况下不太可能)。当然,任何命令仍然可以看到挂载点,因为它是一个目录。目录包含的任何本地文件都将通过
php
shell 或从 shell 列出。为了解决最后一个问题,您可以首先从本地目录移动/删除文件(当未安装共享时),然后
chmod 0 /mnt/smb
以 root 身份指示未安装并在未安装时创建 ls-errors。