特定のUSBドライブを読み取り専用でマウントする方法

特定のUSBドライブを読み取り専用でマウントする方法

特定のUSBドライブを読み取り専用でマウントする必要があります。すべてのドライブではなく、アーカイブされたデータを含むドライブのみをマウントする必要があります。偶発的または悪意のある変更を防止したい。

これについて多くの記事が書かれており、udev可能になるようですが、私のルールは強制されていないようです。私は学んだUSBドライブを読み取り専用でマウントするudevルールを作成するにはどうすればよいですか?- 私はgvfsがなく、他の答えは役に立ちませんでした。

これは私の/etc/udev/rules.d/25-usb-read-only.rulesファイルです。テストには、ボリューム名がSCRATCHのドライブを使用しました。ドライブは/dev/sdaにマウントされますが、常に書き込み可能です。

#SUBSYSTEM=="usb", ACTION=="add", ENV{ID_FS_LABEL}=="SCRATCH", ENV{UDISKS_MOUNT_OPTIONS}="ro"
SUBSYSTEM=="usb", ACTION=="add", ENV{ID_FS_LABEL}=="SCRATCH", MODE="0550"
#SUBSYSTEMS=="usb", ACTION=="add", ENV{ID_FS_USAGE}=="filesystem", ENV{ID_FS_LABEL}=="SCRATCH", ENV{UDISKS_MOUNT_OPTIONS}="ro"
# The RUN here just to test the rule is executed
#KERNEL=="sd*", SUBSYSTEMS=="usb", ACTION=="add", ENV{ID_FS_USAGE}=="filesystem", ENV{ID_FS_LABEL}=="SCRATCH", RUN+="/home/test-udev.sh"

コメントアウトされた行は、以前に失敗した試みです。試験の間にそのことが思い出されましたsudo udevadm control --reload

RUNコマンドも失敗します。このスクリプトはデバッグファイルにのみ書き込み、コマンドラインから実行された場合にのみ機能します。

デバッグを有効にして確認しました/var/log/syslog。テストは数秒で数万行を確認しました。私は役に立つものが見つかりません。

私のシステムはLinux Mint 21.1 Cinnamonですが、上記のすべてはbashから得られました。

どんな助けでも大変感謝します。

ベストアンサー1

元の(事前systemd)実装はあまりにもudev強力であることが判明しました。競合状態やその他のセキュリティ問題が発生しました。その結果、最新バージョンはsystemd-udevd以前のバージョンよりも制限され、以前のバージョンと同じ機能をすべて実行することはできません。 old を使用してリムーバブルディスクをマウントする方法に関する多くの情報がありますが、udev現在の推奨事項は次のとおりです。あなたはそうしないでください。udevd新しいリリースで実装されたサンドボックスやその他のセキュリティ制限により、実際にはますます困難または非実用的になりました。

現在の理解は基本的にudevこれです。基本的なタイムリーに適切な所有権と権限を持つデバイスノードを作成および管理することがミッションであり、オプションで他のサービスで使用できるように、デバイスノードにいくつかの追加のメタデータを提供してください。基本的な作業を損なう可能性がある他のものは避けるべきです。したがって、udev長期実行プロセスを開始させるすべての動作は正しいです。

ファイルシステムのマウントに時間がかかることがあります。特に、ファイルシステムが大規模または破損した場合は、直接実行するのではなくudevd他のサービスに任せる必要があります。udisks2

Mint 21.1のバージョンが2.9.0以上であれば、より良い場所になりますudisks2(パッケージ名はおそらく現在のバージョンより前に他の実装があったからです)。libudisks2-0udisks/etc/udisks2/mount_options.conf

次のことができます。

[/dev/disk/by-label/SCRATCH]
defaults=ro
# removed "rw" from the global default list of allowed mount options
allow=exec,noexec,nodev,nosuid,atime,noatime,nodiratime,ro,sync,dirsync,noload

このドキュメントには、mount_options.conf特定の USB ストレージデバイスをデバイスのシリアル番号で一致させるサンプル udev ルールなど、多くの例が含まれています.これは、必要なファイルシステムラベルを使用するよりも安全です。 http://storagged.org/doc/udisks2-api/latest/mount_options.html

通常、リムーバブルメディアデバイスは、TAG+="uaccess"ローカルにログインしたユーザーにデバイスへの書き込みアクセスを提供するudevルールを取得します。これは、リムーバブルメディアデバイスでファイルシステムのラベルを変更するために必要なすべての権限を自動的に持つことを意味します。これは、悪意のある変更を防ぐためにファイルシステムラベルを使用する提案された戦略は簡単に解決できますが、安全ではないことを意味します。

おすすめ記事