O sistema de arquivos armazenado no disco não armazena permissões de arquivo, mas o driver do sistema de arquivos deve fornecê-las ao sistema operacional, pois são parte integrante do conceito de sistema de arquivos Unix e as interfaces de chamada do sistema não têm como apresentar que as permissões são ausência de.
Considere também o que aconteceria se um arquivo não tivesse nenhum bit de permissão? Seria o mesmo que 0777
, ou seja, acesso a todos; ou o mesmo que 0000
, ou seja, sem acesso a ninguém? Mas essas duas são permissões de arquivo, então por que não mostrá-las? Ou faça algo mais útil e tenha uma maneira de definir algumas permissões sensatas.
Portanto, o driver falsifica algumas permissões, mesmas para todos os arquivos. As permissões, juntamente com o proprietário e o grupo dos arquivos, são configuráveis no momento da montagem. Eles estão descritos em "Opções de montagem para gordura" na página do manual mount (8) :
Opções de montagem para fat
(Nota: fat não é um sistema de arquivos separado, mas uma parte comum dos sistemas de arquivos msdos, umsdos e vfat.)
uid=value
e gid=value
Defina o proprietário e o grupo de todos os arquivos. (Padrão: o UID e o GID do processo atual.)
umask=value
Defina a umask (a máscara de bits das permissões que não estão presentes). O padrão é a umask do processo atual. O valor é dado em octal.
dmask=value
Defina o umask aplicado apenas aos diretórios. O padrão é a umask do processo atual. O valor é dado em octal.
fmask=value
Defina o umask aplicado apenas aos arquivos regulares. O padrão é a umask do processo atual. O valor é dado em octal.
Observe que as permissões são apresentadas como máscaras; portanto, as permissões finais são a negação da máscara. fmask=0133
resultaria em todos os arquivos com permissões 0644
ou rw-r--r--
.
Além disso, os padrões são herdados da chamada de processo mount()
, portanto, se você chamar mount
da linha de comando, os shell umask
serão aplicados.