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. эксперимент - на флешке
  2. LaCie Little Big Disk - на жестком диске FireWire 400 этот том включает в себя резервные копии Time Machine. Backups.backupdb
  3. Wuala - интеграция файловой системы использует FUSE для OS X
  4. Резервное копирование машины времени

Грубо говоря, я могу понять, что 2, 3 и 4 особенные. Тем не мение:

  • Я не могу понять актуальность nodev для флэш-накопителя USB.

Другие ссылки

Монтирование USB-дисков автоматически (как это работает) - Unix и Linux

Фон

Желающим понять, почему Time Machine в Lion и Mountain Lion не могут создавать резервные копии с USB-накопителей. Но этот вопрос в более общем плане касается опции nodev .

1 ответ1

16

Опция nodev говорит системе запретить создание и доступ к узлам устройства - это особые файлы, которые есть в /dev .

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

Это означает, что если бы /dev/disk0 был доступен для чтения всем пользователям , любой пользователь мог легко прочитать файлы любого другого пользователя на том же диске (если они не были зашифрованы), просто прочитав из /dev/sda .

В зависимости от ОС, /dev обычно будет иметь множество других типов узлов устройств, включая /dev/mem который дает доступ ко всей (физической и / или виртуальной) памяти системы - хотя не в системах, работающих под управлением ядра, скомпилированного с CONFIG_STRICT_DEVMEM (если только не root).).

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

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


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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .