Zrozumienie opcji montowania nodev i jego zastosowania z napędami flash USB

10

mount (8) OS X Podręcznik Strona opisuje nodevopcję:

Nie interpretuj znaków ani nie blokuj urządzeń specjalnych w systemie plików. Ta opcja jest przydatna na serwerze, który ma systemy plików zawierające specjalne urządzenia dla architektur innych niż własne.

Samo to nie do końca rozumiem… 

… Dla mnie ważniejsza część tego pytania - która może pomóc mi zrozumieć tę opcję - to:

Dlaczego dyski flash USB są montowane z opcją nodev?

Przykład:

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)

W tym przykładzie cztery tomy z nodevto:

  1. eksperyment - na dysku flash USB
  2. LaCie Little Big Disk - na dysku twardym FireWire 400 ten wolumin obejmuje maszynę czasuBackups.backupdb
  3. Wuala - integracja systemu plików wykorzystuje FUSE dla OS X.
  4. Kopie zapasowe wehikułu czasu

Mówiąc luźniej, rozumiem, że 2, 3 i 4 są wyjątkowe. Jednak:

  • Nie rozumiem znaczenia nodevdysku flash USB.

Inne referencje

Automatyczne montowanie dysków USB (jak to działa) - Unix i Linux

tło

Chcąc zrozumieć, dlaczego Time Machine in Lion i Mountain Lion nie mogą tworzyć kopii zapasowych z dysków flash USB. Ale to pytanie dotyczy bardziej ogólnie nodevopcji.

Graham Perrin
źródło

Odpowiedzi:

17

Ta nodevopcja mówi systemowi, aby zabronił tworzenia i dostępu do węzłów urządzeń - takich specjalnych plików, w których się znajdujesz /dev.

Na przykład /dev/disk0daje bezpośredni dostęp do wszystkich danych przechowywanych na pierwszym dysku bez konieczności przechodzenia przez wyższe poziomy, takie jak system plików lub kod sprawdzania uprawnień - jedynym sprawdzonym uprawnieniem jest to, czy możesz otworzyć dany węzeł urządzenia do czytania lub pisania.

Oznacza to, że jeśli /dev/disk0uczyniono go światowym, każdy użytkownik mógłby łatwo odczytać pliki innych użytkowników na tym samym dysku (jeśli nie były zaszyfrowane), po prostu czytając z /dev/sda.

W zależności od systemu operacyjnego /devzwykle będzie mieć wiele innych rodzajów węzłów urządzeń, w tym /dev/memdających dostęp do całej pamięci (fizycznej i / lub wirtualnej) systemu - chociaż nie w systemach z jądrem skompilowanym CONFIG_STRICT_DEVMEM(chyba że root ).

Z tego powodu zwykle tylko root może tworzyć węzły urządzeń (dla innych użytkowników mknodzwróci „Operacja niedozwolona”), a wszystkie istniejące węzły urządzeń są przechowywane w jednym miejscu ( /dev) z surowymi uprawnieniami do plików, które nie dają normalnym użytkownikom dostęp do odczytu lub zapisu. (Z pewnymi wyjątkami). Jednak w dzisiejszych czasach każdy może łatwo ominąć ograniczenie tylko do rootowania, przechodząc do innego komputera, do którego już ma dostęp do roota, używając go do tworzenia niektórych węzłów urządzeń na dysku USB, ustawiając bardzo otwarte uprawnienia, i podłączeniu tego dysku do Twojego komputera.

To właśnie nodevzapobiega tej opcji - nawet jeśli ktoś utworzy czytelny na świecie / zapisywalny na świecie węzeł urządzenia na własnym dysku, system operacyjny odmówi wykonania jakichkolwiek czynności z powodu nodevopcji użytej podczas montowania.


Te same powody dotyczą nosuidopcji, która mówi systemowi operacyjnemu, aby zignorował bit setuid, który normalnie spowodowałby, że program miałby być uruchamiany z innymi uprawnieniami niż uprawnienia użytkownika. Na przykład /usr/bin/sudoma bit setuid i jest własnością root, więc zawsze będzie miał takie same uprawnienia jak root.

użytkownik1686
źródło
To świetna odpowiedź - dzięki. Jeśli dobrze rozumiem, pojawia się kolejne pytanie… na forum wsparcia ZEVO: Dlaczego montowania ZEVO ZFS bez opcji nodev? (W tej chwili nie mam zapasowego dysku twardego USB do samodzielnego przekazania HFS Plus.)
Graham Perrin
@GrahamPerrin: takie opcje, które nodevsą domyślnie wyłączone i muszą być jawnie ustawione podczas montażu. Auto-montowanie dysku wymiennego OS X ustawia je, podobnie robią programy w systemie Linux, ale nie zostaną ustawione podczas uruchamiania mountz terminala, chyba że ręcznie dodasz -o nodev. (Nie szkodzi to bezpieczeństwu, ponieważ mountsamo wymaga uprawnień roota.) Tak więc zależy to od sposobu zamontowania dysku ZEVO ZFS.
user1686,
W ZEVO Community Edition 1.1.1 import jest dynamiczny (automatyczny) i wydaje się, że domyślnie jest montowany automatycznie bez nodev. Ani import, ani montaż ZFS nie wymaga uwierzytelnienia… zobaczmy, jak się układa w obszarze ZEVO.
Graham Perrin,
@grawity: Źle, nodevopcja mówi, aby odrzucić odczyty i zapisuje do plików urządzeń, tak aby dotyczyły również plików istniejących. Nadal możesz je tworzyć.
user2284570 12.04.16