マウントによって「隠された」ファイルにアクセスすることは可能ですか?


17

Linuxでは、別のファイルシステムがサブディレクトリにマウントされたときに「シャドウ」されているマウントされたファイルシステム上のファイルにアクセスする方法はありますか?

例えば。

cd /
mkdir /foo
touch /foo/bar
mount /dev/sda1 /foo
# now, can I still get to /foo/bar on the / filesystem?

私の夢の解決策は、高い権限を必要とせず、特定のファイルシステムに固有のものでもありませんが、破損したファイルシステムを危険にさらすことなく、できることはすべて取り上げます。

回答:


27

基礎となるファイルシステムにアクセスするには、mountコマンドを使用できます。

$ mkdir /mnt/root
$ sudo mount --bind / /mnt/root
$ cat /mnt/root/foo/bar

これを行っても破損の問題はありませんが、ファイルシステムをマウントする権限が必要です。


+1、私はそれを考えた mount --bind 答えでした。しかし、よくわかりませんでした。
Dan D.

1
+0.95、バインドがデフォルトで非再帰的であることを完全に忘れていました。しかし、前回/別の場所にバインドマウントしたときは、再起動しないとマウント解除できませんでした。それをつかむのGUIコンポーネントだったかもしれません。あなたはそれをテストしましたか?
grawity

ありがとうございます。私はちょっとの間バインドマウントについて考えました、しかし、彼らはパス名書き換えに基づいて働くと思い、そしてそれ故に再帰的であると思いました...
themel

5

rootがあれば、 mount --move マウントされたファイルシステムを一時ディレクトリの上に置き、その後それを元に戻します。

mkdir /bar
mount --move /foo /bar

rootになると、基礎となるブロックデバイスがある場合は直接アクセスすることもできます。 ext4の場合は、あなたが使用することができます debugfs ファイルをエクスポートします。

読み取り専用 アクセス缶 決して ファイルシステムを破壊します。


ディレクトリは、それらのために取得されたハンドルまたはファイル記述子を持つことができます。 「現在のディレクトリ」もハンドルであり、パスではありません。ディレクトリへのハンドルがある場合は、その場所がマウントされていても内部のファイルにアクセスできます。これは特別な特権を必要とせず、特別な準備のみを必要とします。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.