ディレクトリへの読み取り専用リンクを作成する方法は?


18

私のスクリプトの1つは、次のようなシンボリックリンクを動的に作成します。

ln -s /home/hosting/projects/images /home/hosting/projects/demo/images

リンクを介したアクセスが読み取り専用になるようにするにはどうすればよいですか?

回答:


18

読み取り専用bind-mountを作成できます。

mount --bind /path/to/source/ /path/to/dest/
mount -o bind,remount,ro /path/to/dest

はい、これはLinuxカーネル2.6.25以降のカーネルで2つのステップで実行する必要があります(理由については上記のリンクを参照してください)。

または、代わりに、/etc/fstab行の例refとして:

/path/to/source/ /path/to/dest/ none bind,ro

どちらのアプローチでも、バインドマウントは仮想ファイルシステムレイヤー(VFS)に存在するため、これはどのファイルシステムにも固有ではなく、実際に何かを「マウント」することもありません。したがって、基本的に、これは一種のシンボリックリンクを作成しますが、そのようには表示されません。

そして、データ損失に関する以下のコメントに返信するために...いいえ、これらの指示はファイルを削除しません。宛先パスにファイルが存在する場合、このマウントはこれを覆います。マウントを解除するだけで、その下のファイルシステムのパスにファイルをリストできます。さらに良い。一般的に、空でない宛先パスの上にマウントすることは避けてください。


1
注意してください。これらの手順を実行すると、バックアップディレクトリ全体が削除され、バックアップデーモンによる書き込みができなくなりました。

このソリューションをfstabエントリとして提供できますか?
スローズ

@Throozeそこに行きます;)
gertvdijk

再マウントコマンドはおそらく次のようになります。同じスレッドのlwn.net/Articles/637501mount -o bind,remount,ro /path/to/dest参照してください。
アノン

mount -o remount,ro /path/to/dest次のエラーが表示されます:mount: mount point is busy.@gertvdijk
alper

2

1つのコマンドでバインド読み取り専用をマウントするには:

mount --bind -r /path/to/source/ /path/to/dest/

アンマウントする

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