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

10

A página de manual do OS X mount (8) descreve a nodevopção:

Não interprete caracteres ou bloqueie dispositivos especiais no sistema de arquivos. Essa opção é útil para um servidor que possui sistemas de arquivos contendo dispositivos especiais para arquiteturas diferentes da sua.

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

... para mim, a parte mais importante desta pergunta - 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 nodevsã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 uma Time MachineBackups.backupdb
  3. Wuala - a integração do sistema de arquivos usa o FUSE para OS X
  4. Backups de Time Machine

Em termos gerais, compreendo que 2, 3 e 4 são especiais. Contudo:

  • Não consigo entender a relevância de nodevuma unidade flash USB.

Outras referências

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

fundo

Desejando entender por que o Time Machine no Lion e no Mountain Lion não pode fazer backup a partir de unidades flash USB. Mas essa questão é mais geral sobre a nodevopção.

Graham Perrin
fonte

Respostas:

17

A nodevopção instrui o sistema a não permitir a criação e o acesso aos nós do dispositivo - o tipo de arquivo especial em que você está /dev.

Por exemplo, /dev/disk0fornece 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 única permissão marcada é se você pode abrir esse nó de dispositivo específico para ler ou escrever.

Isso significa que, se /dev/disk0fosse tornado legível pelo mundo, qualquer usuário poderia facilmente ler os arquivos de qualquer outro usuário no mesmo disco (se não estivesse criptografado), simplesmente lendo /dev/sda.

Dependendo do sistema operacional, /devnormalmente haverá muitos outros tipos de nós de dispositivo, incluindo o /dev/memque dá acesso a toda a memória (física e / ou virtual) do sistema - embora não com sistemas executando um kernel compilado CONFIG_STRICT_DEVMEM(a menos que seja root ).

Por esse motivo, somente o root geralmente tem permissão para criar nós de dispositivo (para outros usuários, mknodretornará "Operação não permitida") e todos os nós de dispositivo existentes são mantidos em um único local ( /dev) com permissões estritas de arquivo que não dão aos usuários normais acesso de leitura ou gravação. (Com algumas exceções.) No entanto, nos dias de hoje, qualquer pessoa pode facilmente ignorar a restrição somente raiz, indo para outro computador ao qual já tenha acesso raiz, usando-a para criar alguns nós de dispositivo em uma unidade USB, definindo permissões muito abertas, e conectar essa unidade ao seu computador.

Isso é o que a nodevopção impede - mesmo que alguém crie um nó de dispositivo legível / gravável no mundo em sua própria unidade, o sistema operacional se recusará a fazer qualquer coisa por causa da nodevopção usada na montagem.


Os mesmos motivos se aplicam à nosuidopção, que diz ao sistema operacional para ignorar o bit setuid, que normalmente faria com que um programa fosse executado com privilégios diferentes dos do usuário. Por exemplo, /usr/bin/sudopossui o bit setuid e pertence ao root, portanto, ele sempre terá os mesmos privilégios que o root.

user1686
fonte
Esta é uma ótima resposta - obrigado. Se eu entendo as coisas corretamente, surge outra pergunta ... no fórum de suporte do ZEVO: Por que as montagens do ZEVO ZFS são sem a opção nodev? (No momento eu não tenho nenhuma unidade de disco de reposição USB duro para dar a HFS Plus sozinho.)
Graham Perrin
@GrahamPerrin: opções como nodevdesativadas por padrão e precisam ser explicitamente definidas durante a montagem. O montador automático de disco removível do OS X os define, os programas equivalentes no Linux também, mas eles não serão definidos ao executar mountno terminal, a menos que você os adicione manualmente -o nodev. (Isso não prejudica a segurança, pois mountrequer privilégios de root.) Portanto, depende de como o disco do ZEVO ZFS está montado.
precisa saber é o seguinte
Com o ZEVO Community Edition 1.1.1, a importação é dinâmica (automática) e parece que o padrão é montar automaticamente sem nodev. Nem a importação nem a montagem do ZFS requerem autenticação ... vamos ver como as coisas se espalham na área do ZEVO.
Graham Perrin
@ grrawity: Errado, a nodevopção diz para rejeitar leituras e gravações nos arquivos do dispositivo, para que os existentes também estejam preocupados. Você ainda pode criá-los.
precisa saber é o seguinte