Розуміння опції кріплення 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)

У цьому прикладі чотири томи з nodev:

  1. експеримент - на флеш-накопичувачі USB
  2. Маленький великий диск LaCie - на жорсткому диску на FireWire 400 цей том включає машину часуBackups.backupdb
  3. Інтеграція файлової системи Wuala використовує FUSE для OS X
  4. Резервні копії машини часу

Коли я кажу, я можу зрозуміти, що 2, 3 і 4 є особливими. Однак:

  • Я не можу зрозуміти релевантність nodevUSB-флешки.

Інші посилання

Автоматичне встановлення USB-дисків (як це працює) - Unix та Linux

Фон

Бажаючи зрозуміти, чому Time Machine у ​​Lion та Mountain Lion не може створити резервну копію з флеш-накопичувачів USB. Але це питання більш загальне щодо nodevваріанту.

Відповіді:


17

Цей nodevпараметр повідомляє системі забороняти створювати та отримувати доступ до вузлів пристроїв - виду спеціальних файлів, які у вас є /dev.

Наприклад, /dev/disk0надає вам прямий доступ до всіх даних, що зберігаються на першому диску, без необхідності проходити через більш високі рівні, такі як файлова система або код перевірки дозволу. Єдиний дозвіл, що перевіряється, - чи вам дозволяється відкривати конкретний вузол пристрою для читання чи письма

Це означає, що, якщо це /dev/disk0було зроблено для читання у всьому світі, будь-який користувач міг легко прочитати файли інших користувачів на тому ж диску (якщо вони не були зашифровані), просто прочитавши з нього /dev/sda.

Залежно від ОС, /devяк правило , буде багато інших типів вузлів пристроїв, включаючи /dev/memякі надають доступ до всієї (фізичної та / або віртуальної) пам'яті системи, хоча і не для систем, де працює ядро, зібране з CONFIG_STRICT_DEVMEM(крім кореневого ).

З цієї причини для створення вузлів пристрою зазвичай дозволено лише root (для інших користувачів mknodповертається "Операція не дозволена"), а всі існуючі вузли пристрою зберігаються в одному місці ( /dev) із суворими дозволами файлів, які не дають нормальним користувачам доступ для читання або запису. (За деякими винятками.) Однак у сучасні дні кожен може легко обійти обмеження, що має лише корінь, перейшовши на інший комп'ютер, до якого вже є кореневий доступ, використовуючи його для створення деяких вузлів пристрою на USB-накопичувачі, встановлюючи дуже відкриті дозволи, і підключення цього диска до вашого комп'ютера.

Це те, що nodevперешкоджає цьому варіанту - навіть якщо хтось створює на власному диску примірник читання у всьому світі пристрою, ОС відмовляється робити з цим що-небудь через nodevопцію, яка використовується при монтажі.


З тих же причин звернутися до nosuidваріанту, який говорить ОС ігнорувати Setuid біт , який зазвичай викликає програма повинна бути виконана з різними привілеями , ніж у користувача. Наприклад, /usr/bin/sudoмає біт setuid і належить root, тому він завжди матиме ті ж привілеї, що і root.


Це чудова відповідь - дякую. Якщо я все зрозумів правильно, виникає інше питання ... на форумі підтримки ZEVO : Чому ZEVO ZFS кріпиться без опції nodev? (На даний момент у мене немає запасного жорсткого диска USB, щоб віддати лише HFS Plus.)
Грем Перрін

@GrahamPerrin: Такі параметри, nodevякі відключені за замовчуванням, і повинні бути чітко встановлені під час монтажу. Автоматично встановлює знімний диск OS X, встановлює їх еквівалентні програми в Linux, але вони не встановлюватимуться під час запуску mountз терміналу, якщо ви не додасте вручну -o nodev. (Це не шкодить безпеці, оскільки mountсама вимагає привілеїв root.) Отже, це залежить від того, як встановлений ваш ZEVO ZFS диск.
користувач1686

З ZEVO Community Edition 1.1.1 імпорт динамічний (автоматичний), і здається, що за замовчуванням встановити автоматично без нього nodev. Ні імпорт, ні кріплення ZFS не вимагають автентифікації ... давайте подивимося, як все відбувається в області ZEVO.
Грехем Перрін

@grawity: Неправильно, nodevопція вказує на відхилення читання та запису у файли пристрою, щоб вони також стосувались існуючих. Ви все одно можете їх створити.
користувач2284570
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.