マウントオプションnodevとそのUSBフラッシュドライブでの使用について


10

mount(8)OS Xのマニュアルページでnodevオプションについて説明しています。

ファイルシステム上の文字を解釈したり、特殊デバイスをブロックしたりしないでください。このオプションは、独自のアーキテクチャ以外の特別なデバイスを含むファイルシステムを持つサーバーに役立ちます。

それだけでは、よくわかりません… 

…私にとって、この質問のより重要な部分-オプションを理解するのに役立つかもしれない–は次のとおりです。

USBフラッシュドライブがnodevオプションでマウントされるのはなぜですか?

例:

sh-3.2$ mount
/dev/disk1 on / (hfs, local, journaled)
devfs on /dev (devfs, local, nobrowse)
/dev/disk0s2 on /Volumes/swap (hfs, local, journaled)
/dev/disk0s4 on /Volumes/spare (hfs, local, journaled)
map -hosts on /net (autofs, nosuid, automounted, nobrowse)
map auto_home on /home (autofs, automounted, nobrowse)
localhost:/Eiu9XWYlwq4E8x9l_bQTiX on /Volumes/MobileBackups (mtmfs, nosuid, read-only, nobrowse)
/dev/disk3 on /Volumes/gjp22 (zfs, local, journaled, noatime)
/dev/disk3s1 on /opt (zfs, local, journaled, noatime)
/dev/disk6 on /Volumes/zhandy (zfs, local, journaled, noatime)
/dev/disk8s1 on /Volumes/experiment (hfs, local, nodev, nosuid, journaled, noowners)
/dev/disk10 on /Volumes/tall (zfs, local, journaled, noatime)
/dev/disk11s2 on /Volumes/LaCie Little Big Disk (hfs, local, nodev, nosuid, journaled, noowners)
/dev/disk12 on /Volumes/twoz (zfs, local, journaled, noatime)
Wuala on /Volumes/WualaDrive (osxfusefs, local, nodev, nosuid, synchronous, mounted by gjp22)
/dev/disk14s2 on /Volumes/Time Machine Backups (hfs, local, nodev, nosuid, journaled)

その例では、4つのボリュームnodevは次のとおりです。

  1. 実験 – USBフラッシュドライブ
  2. LaCie Little Big Disk – FireWire 400のハードディスクドライブでは、このボリュームにはTime Machineが含まれていますBackups.backupdb
  3. Wuala –ファイルシステムの統合にはFUSE for OS Xを使用
  4. Time Machineバックアップ

大まかに言えば、2、3、4が特別であることは理解できます。しかしながら:

  • nodevUSBフラッシュドライブとの関連性を理解できません。

その他の参考文献

USBディスクの自動マウント(仕組み) – UnixおよびLinux

バックグラウンド

LionとMountain LionのTime MachineがUSBフラッシュドライブからバックアップできない理由を知りたい。しかし、この質問はより一般的にはnodevオプションについてです。

回答:


17

このnodevオプションは、デバイスノードの作成とアクセスを禁止するようにシステムに指示します。これは、にある特殊ファイルの一種です/dev

たとえば/dev/disk0、最初のディスクに保存されているすべてのデータに直接アクセスできます。ファイルシステムや権限チェックコードなどの上位レベルを通過する必要はありません。チェックされる唯一の権限は、特定のデバイスノードを開くことが許可されているかどうかだけです。読み取りまたは書き込み用。

つまり/dev/disk0誰でも読み取り可能にした場合、ユーザーは単にから読み取るだけで、同じディスク上の他のユーザーのファイルを(暗号化されていない場合)簡単に読み取ることができ/dev/sdaます。

OSによっては、/dev通常含むデバイスノードの他の多くの種類があります/dev/memではないがシステムがでコンパイルしたカーネル実行している-システムの全体(物理および/または仮想)メモリへのアクセスを提供しますCONFIG_STRICT_DEVMEM(しない限り、ルートを)。

このため、通常、ルートのみがデバイスノードの作成を許可され(他のユーザーの場合、mknod「操作は許可されていません」が返されます)、既存のすべてのデバイスノードは/dev、通常のユーザーに付与されない厳密なファイル権限を持つ単一の場所()に保持されます読み取りまたは書き込みアクセス。(一部の例外はあります) ただし、現代では、誰でも簡単にrootのみの制限を回避できます。これは、すでにrootアクセス権がある別のコンピューターに移動し、それを使用してUSBドライブにデバイスノードを作成し、非常にオープンなアクセス許可を設定することで、そのドライブをコンピュータに接続します

これがnodevオプションの妨げです。誰かが自分のドライブに誰でも読み取り/書き込み可能なデバイスノードを作成してもnodev、マウント時に使用されるオプションのため、OSはそれを使用して何もしません。


同じ理由がこのnosuidオプションに当てはまります。このオプションは、通常はプログラムをユーザーの特権とは異なる特権で実行させるsetuidビットを無視するようにOSに指示します。たとえば、/usr/bin/sudoにはsetuidビットがあり、rootが所有しているため、常にrootと同じ特権を持っています。


これは素晴らしい答えです–ありがとう。私が物事を正しく理解している場合、ZEVOサポートフォーラムで別の質問が発生します。なぜnodevオプションを使用せずにZEVO ZFSマウントを行うのですか?(現時点では、HFS Plusだけに提供する予備のUSBハードディスクドライブはありません。)
Graham Perrin 2013年

@GrahamPerrin:nodevデフォルトでは無効になっているオプションで、マウント時に明示的に設定する必要があります。OS Xリムーバブルディスクの自動マウンターはそれらを設定しますが、Linuxの同等のプログラムも設定しmountますが、手動でを追加しない限り、ターミナルから実行する場合は設定されません-o nodev(これはmountroot権限を必要とするため、セキュリティを損なうことはありません。)したがって、ZEVO ZFSディスクのマウント方法によって異なります。
user1686

ZEVOコミュニティ版1.1.1を使用すると、インポートがダイナミック(自動)であり、デフォルトはなしで自動的にマウントするようですnodev。インポートもZFSマウントも認証を必要としません。ZEVO領域でどのように機能するか見てみましょう。
Graham Perrin 2013年

@grawity:間違っていnodevます。オプションは、デバイスファイルへの読み取りと書き込みを拒否するように指示しているため、既存のファイルも関係しています。まだ作成できます。
user2284570
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.