Vejo essas duas opções constantemente sugeridas na Web quando alguém descreve como montar um tmpfs ou ramfs. Muitas vezes também com noexec, mas estou especificamente interessado em nodev e nosuid. Eu basicamente odeio repetir cegamente o que alguém sugeriu, sem entender de verdade. E como só vejo instruções de copiar / colar na rede sobre isso, pergunto aqui.
Isto é da documentação:
nodev - Não interpreta dispositivos especiais de bloco no sistema de arquivos.
nosuid - Bloqueia a operação de bits suid e sgid.
Mas eu gostaria de uma explicação prática do que poderia acontecer se eu deixasse esses dois de fora. Digamos que eu configurei tmpfs ou ramfs (sem essas duas opções mencionadas definidas) que sejam acessíveis (leitura + gravação) por um usuário específico (não raiz) no sistema. O que esse usuário pode fazer para prejudicar o sistema? Excluindo o caso de consumir toda a memória do sistema disponível no caso de ramfs
Respostas:
Você não precisa seguir isso cegamente como uma regra difícil. Mas o raciocínio para situações mais focadas na segurança é o seguinte.
A opção de montagem nodev especifica que o sistema de arquivos não pode conter dispositivos especiais: Esta é uma precaução de segurança. Você não deseja que um sistema de arquivos acessível ao usuário como este tenha o potencial de criar dispositivos de caracteres ou acessar hardware de dispositivo aleatório.
A opção nosuid mount especifica que o sistema de arquivos não pode conter arquivos de ID do usuário definidos. Impedir binários setuid em um sistema de arquivos gravável em todo o mundo faz sentido, porque há um risco de escalonamento da raiz ou outras horrendas por lá.
Pelo que vale, eu não uso esses parâmetros frequentemente ... apenas em sistemas públicos, onde existem outras considerações de conformidade.
fonte
nosuid
o bit setuid não é ignorado? (em vez deThe nosuid mount option specifies that the filesystem cannot contain set userid files
)