As opções de montagem não afetam os bits das permissões armazenadas, mas afetam as permissões efetivas. Por exemplo, é possível ter um arquivo com permissões de execução (ou seja, chmod a+x myfile
foi bem-sucedido, ls -l
mostra o arquivo com permissões de execução etc.), mas se o sistema de arquivos for montado com a opção noexec
, tente executar os resultados do arquivo em um erro de "permissão negada". Da mesma forma, a opção ro
faz com que qualquer tentativa de gravação falhe, a opção nodev
faz com que qualquer tentativa de acessar um dispositivo falhe (mesmo que dispositivos possam ser criados) e a opção nosuid
causa qualquer tentativa de executar um arquivo para ignorar os bits setuid e setgid.
Outra maneira de dizer é que o algoritmo para decidir se uma operação de arquivo é permitida é algo assim:
- Se for necessária permissão de gravação e o sistema de arquivos estiver montado
ro
, negue imediatamente. - Se for necessária permissão de execução e o sistema de arquivos estiver montado
noexec
, negue imediatamente. - Se o arquivo for um dispositivo e o sistema de arquivos estiver montado
nodev
, negue imediatamente. - Se o usuário do arquivo for um dos grupos do processo que está tentando acessar, permita ou negue com base nos bits de permissão do usuário armazenados no sistema de arquivos.
- Se o grupo do arquivo for um dos grupos do processo que está tentando acessar, permita ou negue com base nos bits de permissão do usuário armazenados no sistema de arquivos.
- Permitir ou negar com base nos "outros" bits de permissão armazenados no sistema de arquivos.
(simplifiquei para mostrar apenas as partes mais importantes para os nossos propósitos aqui. Outras considerações incluem listas de controle de acesso , atributos estendidos como módulos de segurança imutáveis e exclusivos, como o SELinux e o AppArmor. O mais completo e preciso - mas não fácil- to-read - referência seria o código-fonte, por exemplo, o may_open
função no kernel Linux.)
E a determinação do setuid / setgid não é feita (os bits setuid / setgid dos metadados do arquivo não são levados em consideração) se o sistema de arquivos estiver montado nosuid
.