Понимание опции монтирования nodev и ее использования с USB-флешками

10

mount (8) OS X Manual Page описывает 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. эксперимент - на флешке
  2. LaCie Little Big Disk - на жестком диске в FireWire 400 этот том включает в себя Time MachineBackups.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 ).

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

Это то, что nodevпредотвращает опция - даже если кто-то создаст на своем диске доступный для чтения / записи для всех устройств узел ОС, ОС откажется что-либо с ним делать из-за nodevопции, используемой при монтировании.


Те же причины применимы к nosuidопции, которая говорит ОС игнорировать бит setuid, который обычно приводит к тому, что программа выполняется с привилегиями, отличными от привилегий пользователя. Например, /usr/bin/sudoимеет бит setuid и принадлежит пользователю root, поэтому у него всегда будут те же привилегии, что и у root.

user1686
источник
Это отличный ответ - спасибо. Если я правильно понимаю, возникает другой вопрос ... на форуме поддержки ZEVO: почему монтируются ZEVO ZFS без опции nodev? (На данный момент у меня нет запасного жесткого диска USB, который можно отдать только HFS Plus.)
Грэм Перрин,
@GrahamPerrin: такие параметры nodevпо умолчанию отключены и должны быть явно установлены при монтировании. Автоматическое монтирование на съемном диске OS X устанавливает их, аналогичные программы в Linux также устанавливают, но они не будут установлены при запуске mountс терминала, если вы не добавите их вручную -o nodev. (Это не вредит безопасности, поскольку mountсамо по себе требует прав суперпользователя.) Так что это зависит от того, как смонтирован диск ZEVO ZFS.
user1686
В ZEVO Community Edition 1.1.1 импорт является динамическим (автоматическим), и кажется, что по умолчанию монтируется автоматически без него nodev. Ни импорт, ни монтирование ZFS не требуют аутентификации… давайте посмотрим, как обстоят дела в области ZEVO.
Грэм Перрин
@grawity: Неправильно, nodevопция говорит об отказе от чтения и записи в файлы устройства, так что это касается и существующего. Вы все еще можете создать их.
user2284570