Entendendo a opção de montagem nodev e seu uso com drives flash USB

10

mount (8) Página manual do OS X descreve a opção nodev :

Do not interpret character or block special devices on the file system. This option is useful for a server that has file systems containing special devices for architectures other than its own.

Só isso, eu não entendo completamente ...

... para mim, a parte mais importante desta questão - que pode me ajudar a entender a opção - é:

Por que as unidades flash USB são montadas com a opção nodev?

Exemplo:

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)

Nesse exemplo, os quatro volumes com nodev são:

  1. experimento - em uma unidade flash USB
  2. LaCie Little Big Disk - em uma unidade de disco rígido no FireWire 400, este volume inclui um Time Machine Backups.backupdb
  3. Wuala - a integração do sistema de arquivos usa o FUSE for OS X
  4. Backups do Time Machine

Falando vagamente, posso entender que 2, 3 e 4 são especiais. No entanto:

  • Não consigo entender a relevância de nodev para uma unidade flash USB.

Outras referências

Montando discos USB automaticamente (Como funciona) - Unix e Linux

Antecedentes

Desejando entender por que o Time Machine no Lion e no Mountain Lion não pode fazer backup de unidades flash USB. Mas esta questão é mais geralmente sobre a opção nodev .

    
por Graham Perrin 19.01.2013 / 09:14

1 resposta

16

A opção nodev diz ao sistema para não permitir a criação e o acesso de nós de dispositivos - o tipo de arquivos especiais que você tem em /dev .

Por exemplo, /dev/disk0 lhe dá acesso direto a todos os dados armazenados no primeiro disco sem ter que passar pelos níveis mais altos, como o sistema de arquivos ou o código de verificação de permissão - a permissão somente Verificado é se você tem permissão para abrir esse nó de dispositivo específico para leitura ou gravação.

Isso significa que se /dev/disk0 fosse legível por todos, qualquer usuário poderia facilmente ler os arquivos de outros usuários no mesmo disco (se não fossem criptografados), basta ler /dev/sda .

Dependendo do SO, /dev normalmente terá muitos outros tipos de nós de dispositivos, incluindo /dev/mem , que dá acesso a toda a memória (física e / ou virtual) do sistema - embora não com sistemas executando um kernel compilado com CONFIG_STRICT_DEVMEM (a menos que raiz ).

Por esse motivo, somente root geralmente é permitido criar nós de dispositivo (para outros usuários, mknod retornará "Operação não permitida") e todos os nós de dispositivos existentes serão mantidos em um único nó local ( /dev ) com permissões de arquivo restritas que não fornecem acesso de leitura ou gravação aos usuários normais. (com algumas exceções.) No entanto, nos dias de hoje, qualquer pessoa poderia facilmente ignorar a restrição de root acessando outro computador ao qual já tem acesso root, usando-o para criar alguns nós de dispositivos em uma unidade USB, definindo permissões muito abertas e conectando essa unidade a < em> seu computador.

Isto é o que a opção nodev evita - mesmo que alguém crie um nó de dispositivo gravável no mundo inteiro e legível em sua própria unidade, o sistema operacional se recusará a fazer nada devido à opção nodev usada quando montagem.

As mesmas razões se aplicam à opção nosuid , que diz ao SO para ignorar o bit setuid que normalmente faria com que um programa fosse executado com privilégios diferentes daqueles do usuário. Por exemplo, /usr/bin/sudo tem o bit setuid e é de propriedade de root, então ele sempre terá os mesmos privilégios que root.

    
por 19.01.2013 / 12:19