私はblockdevがどのように機能するのか理解していないと確信しています。
フラッシュドライブをマウントしてにマッピングしました/dev/sdb1
。その後、端末にrootとして次のように入力しました。
root# blockdev --setro /dev/sdb1
root# blockdev --report
レポートの内容は次のとおりです。
ご覧のとおり、レポートには/dev/sdb1
読み取り専用(ro)に設定されていることがわかります。ただし、まだフラッシュドライブにファイルとフォルダを作成できます。
私は何を見逃していますか?
答え1
blockdev
これは、HDDと対話するために使用されるドライバに問題があるようです。
> Another option that I recently found was the 'blockdev' command. You can
> specify that the blockdev is ro even before mounting.
>
> $ blockdev --report
> $ blockdev --setro /dev/device
>
> But my professor brought up the point - these probably depend on the
> driver used. Maybe a driver for ntfs totally ignores the ro switch? I
> don't totally agree that blockdev would be based on the driver, but how do
> you test whether the drive actually is in ro without writing? What if
> it fails?
このセクションも関連しています。
さて、ファイルシステムコードは(またはしなければならない)はブロックレイヤーを通過するため、
blockdev --setro
有効にする必要があります。しかし、パーティションが読み取り専用フラグを継承していないようです!つまり、/dev/sda
単一のパーティションを持つハードドライブがある場合はこれを行うこと/dev/sda1
ができますが、blockdev --setro /dev/sda
これにより、blockdev --getro /dev/sda1
sda1の読み取り専用フラグが設定されていないことがわかります。この場合、sda1への書き込みが可能であることを確認しませんでした。
したがって、特定のパーティションは、ユーザーが使用する必要がある読み取り/書き込み権限を継承しているようには見えませんmount
。
別の抜粋
> Then the saving grace - loopback devices. Mount the partition as a file.
> You don't need to worry about drivers, support, etc.
> To do this use losetup to create a loopback device:
>
> $ losetup -r /dev/loop1 /dev/hda1
>
> This creates a read-only loopback device pointing to `/dev/hda1`
> Then you can mount the loopback device (read-only if you are paranoid)
>
> $ mount -o ro /dev/loop1 /media/test
> This mounts the loopback device loop1 at `/media/test`. You can then
> traverse the directory of `/dev/hda1` just like it was mounted.
> According to the PDF document I mentioned above, doing this:
>
> $ mount -o ro,loop /dev/hda1 /media/test
答え2
blockdev --setro
これは、ファイルシステムをマウントした後ではなく、マウントする前に実行する必要があります。それ以外の場合は、再インストールする必要があります。マンページにはこんな感じです。これは単に実行するよりも多くの書き込みを実行しますmount -o ro
が、まだすべての低レベルの書き込みを必ずしもブロックするわけではありません(特にソフトウェアのバグのため)。これは、ドライブの書き込み禁止スイッチ/ジャンパが反転したことをファイルシステムドライバに通知すると考えることができますが、blockdev --setro
ドライブ/メディアには実際にこれらのスイッチ/ジャンパがあることを覚えておいてください。実際に書き込みを防止しません。
mount -o ro
ユーザー/プログラムはファイルを作成/変更することはできませんが、ファイルシステムドライバ自体は最後のインストール日の更新やログの再生などの操作を続行できます。
より効率的な読み込み専用ループデバイス()を使用できますが、losetup -r
ファイルシステムがデバイスにまたがっていない場合にのみ可能です。
より多くの機能を提供するいくつかのLinuxフォレンジック書き込みブロックパッチがありますが、デバイスに書き込むことができると--setro
思われるマウントされたファイルシステムでデバイスを読み取り専用に変更することは依然として失礼です。この資料では、これらの問題について詳しく説明します。
https://github.com/msuhanov/Linux-write-blocker
マンページでは、ディスク装置全体()の設定が必ずしも--setro
パーティション装置()に影響を与えるわけではないことを無視します。/dev/sdb1
/dev/sdb