ルートに対するフルアクセス権と他のすべてのユーザーに対する読み取り専用権限でマウントするデバイスがあります。マニュアルページではこれが可能であることを伝えます。
だから:
sudo mkdir /mnt/foo
sudo mkdir /mnt/fooReadOnly
sudo chmod 700 /mnt/foo
(rwはルートでのみ動作します)sudo chmod 555 /mnt/fooReadOnly
(ro/すべてが閲覧を許可する)- デバイスが
/dev/sdaX
次のように取り付けられていることを確認します。/mnt/foo
その後、マニュアルページのアドバイスに従いました。
sudo mount --bind /mnt/foo /mnt/fooReadOnly
sudo mount -o remount,bind,ro /mnt/foo /mnt/fooReadOnly
今テストしてみましょう:
ls /mnt/foo
-->Permission denied
...正しいsudo ls /mnt/foo
働く..正しいls /mnt/fooReadOnly
-->Permission denied
...間違っていますか?
そのバインドマウントでは何も変更できないというメッセージが表示されますRead-only file system
。
どうすれば解決できますか?
/etc/fstab
また、起動時に自動的に再インストールされるようにどのように追加しますか?
ベストアンサー1
ルートに対するフルアクセス権と他のすべてのユーザーに対する読み取り専用権限でマウントするデバイスがあります。
sudo mkdir /root/mnt/foo
sudo mkdir /mnt/fooReadOnly
mount -oro /dev/sdaX /mnt/foo
- これにより、/dev/sdaX デバイスがマウントされます。読み取り専用/mnt/fooにあります。一度に読み取り専用のバインドマウントを作成できないため、最初に設定しました。私はユーザーに一瞬でも読み書きバインドマウントへのアクセスを許可したくありません。
ls -ld /root
- 表示されるモードdr-xr-x---
と所有者をもう一度確認してくださいroot root
。sudo mount --bind /mnt/fooReadOnly /root/mnt/foo
sudo mount -oremount,rw /root/mnt/foo
上記のコマンドを試してください。各マウントコマンドの後に実行すると、grep foo /proc/self/mountinfo
各ファイルシステムと各マウントポイントフラグが別々の列に表示されます。
これを理解するには、すべてのファイルシステムフラグとすべてのマウントポイントフラグを同時に変更する必要がありますmount -oremount,rw
。mount -oremount,ro
ただし、各取り付けポイントのフラグには影響しません。その他マウントポイント。
unshare -rm
sdaXの代わりにtmpfsマウントに切り替えても、ユーザーの名前空間()内で上記のコマンドを試すことはできません。 「Permission Denied」により失敗しますmount -oremount,rw
。代わりに、次の順序を使用する必要があります。
mount tmp -ttmpfs /root/mnt/foo
mount --bind /root/mnt/foo /root/mnt/fooReadOnly
mount -oremount,bind,ro /root/mnt/fooReadOnly
mount --bind /root/mnt/fooReadOnly /mnt/fooReadOnly
また、起動時に自動的に再マウントされるように/etc/fstabにどのように追加しますか?
fstab はハッキングが多すぎるため、最初のシーケンスを fstab に適用しないことをお勧めします。代わりに、2番目の順序を調整できます。
/dev/sdaX /root/mnt/foo ...
/root/mnt/foo /root/mnt/fooReadOnly none bind,ro
/root/fooReadOnly /mnt/fooReadOnly none bind