As permissões para arquivos (sujeitas a umask
) estão definidas no open
chamar quando o arquivo é criado pela primeira vez. Em fopen
, as permissões são definidas como 0666, mas isso lida com o fluxo I / O. Dependendo do aplicativo que cria os arquivos, eles podem usar o nível aberto de abertura / leitura / gravação - ou não.
Dispositivos especiais seriam criados usando mknod
, novamente com o aplicativo especificando as permissões iniciais. Por exemplo, os comandos mkfifo
usados com o Linux e OSX tem uma opção para definir a permissão. Da mesma forma, o comando [mknod][6]
tem uma opção para definir a permissão. Os manuais para estes não especificam as permissões iniciais.
Curiosamente, a descrição POSIX de mkfifo
não indica nenhum conjunto particular de permissões (além de documentar uma opção para defini-los).
Considerando a falta de especificidade, existe a possibilidade de que algumas implementações desses comandos não usem 0666 para permissões, mas se essa implementação hipotética é mais flexível ou mais rigorosa não é clara. Se você examinar o conteúdo de /dev
, geralmente não encontrará dispositivos especiais que sejam graváveis pelo mundo. Isso pode ser imposto por uma determinada implementação. Por exemplo, se um dispositivo especial tiver permissão executar , isso pode não ser uma coisa boa >, já que seu conteúdo (normalmente) não é como um arquivo normal, e coisas inesperadas podem acontecer se foi "executado".
Sem documentação, qualquer resposta sobre as permissões convencionais teria que ficar restrita a observações de implementações específicas. As permissões 0666 são amplamente usadas para arquivos não executáveis, mas não há garantia de que isso seja uma verdade universal.
As permissões de um link simbólico , por outro lado, são decididamente específicas do sistema. A symlink(7)
página de manual do Linux diz que eles são sempre 0777:
On Linux, the permissions of a symbolic link are not used in any
operations; the permissions are always 0777 (read, write, and execute
for all user categories), and can't be changed.
Em outros sistemas, pode ser possível, por exemplo, os BSDs como FreeBSD e OSX documenta uma opção -h
que pode ser usada para modificar as permissões, embora a documentação da chamada symlink(2)
correspondente ( FreeBSD , OSX não menciona as permissões iniciais.
Leitura adicional: