마운트 옵션 nodev 및 USB 플래시 드라이브와의 사용 이해 /net (autofs, nosuid, automounted, nobrowse) map auto_home on

mount (8) OS X 매뉴얼 페이지nodev옵션을 설명합니다 :

파일 시스템에서 문자를 해석하거나 특수 장치를 차단하지 마십시오. 이 옵션은 자체 아키텍처 이외의 아키텍처 용 특수 장치를 포함하는 파일 시스템이있는 서버에 유용합니다.

그것만으로, 나는 완전히 이해하지 못한다 … 

… 저에게이 질문의 더 중요한 부분은 – 옵션을 이해하는 데 도움이 될 수 있습니다 –

nodev 옵션으로 USB 플래시 드라이브가 마운트되는 이유는 무엇입니까?

예:

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 Little Big Disk – FireWire 400의 하드 디스크 드라이브에서이 볼륨에는 Time Machine이 포함됩니다Backups.backupdb
  3. Wuala – 파일 시스템 통합은 OS X 용 FUSE를 사용합니다
  4. 타임 머신 백업

느슨하게 말해서, 나는 2, 3, 4가 특별하다는 것을 이해할 수 있습니다. 하나:

  • nodevUSB 플래시 드라이브 와의 관련성을 이해할 수 없습니다 .

다른 참고 문헌

USB 디스크 자동 마운트 (작동 방식) – Unix 및 Linux

배경

Lion 및 Mountain Lion의 Time Machine이 USB 플래시 드라이브에서 백업 할 수없는 이유를 이해하고 싶습니다. 그러나이 질문은 더 일반적으로 nodev옵션 에 관한 것입니다.



답변

nodev옵션은 시스템이 장치 노드를 만들고 액세스하는 것을 허용하지 않도록 합니다 /dev.

예를 들어, /dev/disk0파일 시스템이나 권한 확인 코드와 같이 더 높은 수준을 거치지 않고도 첫 번째 디스크에 저장된 모든 데이터에 직접 액세스 할 수 있습니다. 확인 된 유일한 권한은 해당 특정 장치 노드를 열 수 있는지 여부입니다. 읽고 쓰기 위해.

/dev/disk0, 세계에서 읽을 수있게 만들면 모든 사용자 는에서 읽기만하면 동일한 디스크에서 다른 사용자의 파일을 쉽게 읽을 수 있습니다 (암호화되지 않은 경우) /dev/sda.

OS에 따라 /dev일반적으로 /dev/mem시스템의 전체 (물리적 및 / 또는 가상) 메모리에 대한 액세스를 제공하는 다른 종류의 장치 노드를 갖습니다 CONFIG_STRICT_DEVMEM( 루트가 아닌 경우 ).

이러한 이유로 일반적으로 루트 만 장치 노드를 작성할 수 있으며 (다른 사용자의 경우 mknod“조작이 허용되지 않음”으로 리턴 됨) 기존의 모든 장치 노드는 /dev일반 사용자에게 제공하지 않는 엄격한 파일 권한 으로 단일 위치 ( )에 유지됩니다. 읽기 또는 쓰기 권한. (일부 예외는 있지만)
현대에는 누구나 루트 액세스 권한이있는 다른 컴퓨터로 이동하여 USB 드라이브에 일부 장치 노드를 생성하고 매우 개방 된 권한을 설정하여 루트 전용 제한을 쉽게 우회 할 수 있습니다. 및 해당 드라이브를 연결 하여 컴퓨터.

이것은 nodev누군가가 자신의 드라이브에 세계 읽기 가능 / 세계 쓰기 가능 장치 노드를 생성하더라도, OS가 nodev마운트 할 때 사용되는 옵션으로 인해 아무것도하지 않을 것 입니다.


동일한 이유가 nosuid옵션에 적용되는데 , 이는 OS가 setuid 비트 를 무시하도록 하여 프로그램이 일반적으로 사용자와 다른 권한으로 실행되게합니다. 예를 들어, /usr/bin/sudosetuid를 항상 루트와 마찬가지로 동일한 권한을 가지게됩니다, 비트 루트가 소유하고 있습니다.


답변