Memahami mount option nodev dan penggunaannya dengan USB flash drive

10

mount (8) Halaman Manual OS X menjelaskan nodevopsi:

Jangan menafsirkan karakter atau memblokir perangkat khusus pada sistem file. Opsi ini berguna untuk server yang memiliki sistem file yang berisi perangkat khusus untuk arsitektur selain miliknya.

Itu saja, saya tidak sepenuhnya mengerti ... 

... bagi saya, bagian yang lebih penting dari pertanyaan ini - yang dapat membantu saya untuk memahami opsi - adalah:

Mengapa USB flash drive dipasang dengan opsi nodev?

Contoh:

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)

Dalam contoh itu, empat jilid dengan nodevadalah:

  1. percobaan - pada flash drive USB
  2. LaCie Little Big Disk - pada hard disk drive di FireWire 400, volume ini termasuk Time MachineBackups.backupdb
  3. Wuala - integrasi sistem file menggunakan FUSE untuk OS X
  4. Cadangan Mesin Waktu

Secara longgar, saya dapat mengerti bahwa 2, 3, dan 4 adalah spesial. Namun:

  • Saya tidak dapat memahami relevansi nodevke USB flash drive.

Referensi lain

Memasang disk USB secara otomatis (Cara kerjanya) - Unix dan Linux

Latar Belakang

Ingin memahami mengapa Time Machine di Lion dan Mountain Lion tidak dapat mencadangkan dari USB flash drive. Tetapi pertanyaan ini lebih umum tentang nodevopsi.

Graham Perrin
sumber

Jawaban:

17

The nodevpilihan memberitahu sistem untuk melarang menciptakan dan mengakses node perangkat - jenis file khusus yang Anda miliki dalam /dev.

Misalnya, /dev/disk0memberi Anda akses langsung ke semua data yang disimpan di disk pertama tanpa harus melewati level yang lebih tinggi seperti sistem file atau kode pemeriksaan izin - satu - satunya izin yang diperiksa adalah apakah Anda diizinkan untuk membuka node perangkat tertentu itu untuk membaca atau menulis.

Ini berarti bahwa jika /dev/disk0dibuat dapat dibaca dunia, setiap pengguna dapat dengan mudah membaca file pengguna lain pada disk yang sama (jika tidak dienkripsi), dengan hanya membaca dari /dev/sda.

Tergantung pada OS, /devbiasanya akan memiliki banyak jenis perangkat node termasuk /dev/memyang memberikan akses ke seluruh memori sistem (fisik dan / atau virtual) - meskipun tidak dengan sistem yang menjalankan kernel yang dikompilasi CONFIG_STRICT_DEVMEM(kecuali root ).

Karena alasan ini, hanya root yang biasanya diizinkan untuk membuat node perangkat (untuk pengguna lain, mknodakan mengembalikan "Operasi tidak diizinkan"), dan semua node perangkat yang ada disimpan di satu lokasi ( /dev) dengan izin file ketat yang tidak memberikan pengguna normal baca atau tulis akses. (Dengan beberapa pengecualian.) Namun, di zaman modern ini, siapa pun dapat dengan mudah melewati pembatasan root-only dengan pergi ke komputer lain yang sudah memiliki akses root, menggunakannya untuk membuat beberapa node perangkat pada drive USB, mengatur izin yang sangat terbuka, dan menghubungkan drive itu ke komputer Anda .

Inilah yang nodevmencegah opsi - bahkan jika seseorang membuat node perangkat yang dapat dibaca dunia / dapat ditulis dunia pada drive mereka sendiri, OS akan menolak untuk melakukan apa pun dengan itu karena nodevopsi yang digunakan saat pemasangan.


Alasan yang sama berlaku untuk nosuidopsi, yang memberitahu OS untuk mengabaikan bit setuid yang biasanya akan menyebabkan program dieksekusi dengan hak istimewa yang berbeda dari yang dimiliki pengguna. Sebagai contoh, /usr/bin/sudomemiliki setuid bit dan dimiliki oleh root, sehingga ia akan selalu memiliki hak yang sama dengan root.

pengguna1686
sumber
Ini jawaban yang bagus - terima kasih. Jika saya memahami hal-hal dengan benar, pertanyaan lain muncul ... di forum dukungan ZEVO: Mengapa ZEVO ZFS dipasang tanpa opsi nodev? (Saat ini saya tidak punya drive hard disk USB cadangan untuk diberikan kepada HFS Plus sendirian.)
Graham Perrin
@GrahamPerrin: Opsi seperti nodevitu dinonaktifkan secara default, dan harus ditetapkan secara eksplisit saat pemasangan. Auto-mounter removable disk OS X mengaturnya, program yang setara di Linux juga melakukannya, tetapi mereka tidak akan diatur ketika dijalankan mountdari terminal kecuali Anda menambahkan secara manual -o nodev. (Ini tidak mengganggu keamanan karena mountitu sendiri membutuhkan hak akses root.) Jadi itu tergantung pada bagaimana ZEVO ZFS disk Anda dipasang.
user1686
Dengan ZEVO Community Edition 1.1.1, impor bersifat dinamis (otomatis) dan tampaknya defaultnya adalah untuk memasang secara otomatis tanpa nodev. Baik impor maupun ZFS mount tidak memerlukan otentikasi ... mari kita lihat bagaimana hal-hal menyebar di wilayah ZEVO.
Graham Perrin
@grawity: Salah, nodevopsi memberitahu untuk menolak membaca dan menulis ke file perangkat sehingga yang ada juga prihatin. Anda masih bisa membuatnya.
user2284570