/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
シェルの指示に従ってフォルダがu(n)マウントされるumount
まで、必要に応じてこのコマンドを繰り返します。その後、次のコマンドも従う必要があります。/mnt/smb
ls
mount
mount | grep /mnt/smb
これにより、共有がマウントされなくなります。一部のプロセスがまだリストされている場合離れてコンテンツをキャッシュする必要があります(php
このシステムコールのケースではそうではありませんが)。
すべてのコマンドを引き続き表示できます。マウントポイントもちろんディレクトリだからです。どの地元のphp
このディレクトリには、シェルによってリストされるファイルが含まれています。
最後の問題を解決するには、まずローカルディレクトリでファイルを移動/削除することができます(一方、共有はいいえインストールされている場合)chmod 0 /mnt/smb
ルートはインストールされていないことを示し、インストールされていない場合はlsエラーを生成します。