我在 /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/
答案1
请umount
根据需要重复该命令,直到/mnt/smb
根据ls
shell 中的说明 u(n) 挂载该文件夹。那么也应该按照mount
命令:
mount | grep /mnt/smb
这样共享就不再被挂载了。如果某些进程仍然列出偏僻的内容,它必须被缓存(php
尽管在这个系统调用情况下不太可能)。
任何命令仍然可以看到挂载点当然,因为它是一个目录。任何当地的php
该目录包含的文件将由shell列出。
为了解决最后一个问题,您可以首先从本地目录移动/删除文件(而共享是不是已安装),然后chmod 0 /mnt/smb
以 root 身份指示未安装并在未安装时创建 ls 错误。