Explicando os 4 bytes do chmod

Existe muita confusão sobre o primeiro dos 4 bits de permissões de arquivos em linux. Vou tentar explicar aqui.

O comando chmod pode receber argumentos em formato de texto (Exemplo: o-rwx) e também em formato de bits de controle 0700.
Cada dígito representa o valor decimal de um byte de controle, que é a somatória dos bits marcados.
Quando usando o formato de dígitos, pode-se informar 3 ou 4 dígitos, representando os bits de controle. O primeiro byte é opcional, então primeiro deixe-me relembrá-los como funcionam os 3 últimos bytes:

Os 3 últimos bytes todos sabem que significam as permissões do usuário, grupo e outros, respectivamente. e os seus valores de bit são:
bit: 001, decimal: 1 - direito a executar o arquivo.
bit: 010, decimal: 2 - direito de escrever no arquivo.
bit: 100, decimal: 4 - direito de ler o arquivo.

Deste modo, apenas precisamos somar os valores decimais dos bits que queremos e colocar no byte relativo ao item que queremos definir. (Ex: chmod 777 arquivo - dá permissão total a todos).

Mas e o primeiro byte (que é opcional) ?

O primeiro dígito referencia como o arquivo o diretório deve se comportar, o significado dos bits aplicados a este byte(digito), depende se está sendo aplicado a um arquivo ou a um diretório:

Se estiver sendo aplicado a um diretório:
bit: 001, decimal 1 - Ativa a RESTRICTED DELETION FLAG que significa que somente o mesmo que o usuário que criou o arquivo, pode removê-lo ou renomeá-lo, mesmo que outros tenham permissão para isto.
bit: 010, decimal 2 - Todos os arquivos e diretórios criados dentro deste diretório vão receber o mesmo grupo do diretório, não do usuário que criou o arquivo(que é o padrão).
bit: 100, decimal 4 - Todos os arquivos e diretórios criados dentro deste diretório vão receber o mesmo owner(priprietário) do diretório, não do usuário que criou o arquivo(que é padrão)

Se estiver sendo aplicado a um arquivo:
bit: 001, decimal 1 - Ativa o STICKY BIT, salva o arquivo também na memória(normalmente swap) para permitir que ele seja carregado mais rapidamente. Isto é útil para contextos muito específicos e não deve ser abusado.
bit: 010, decimal 2 - Se executado, sempre usará as permissões do grupo setado no arquivo, não do usuário que está solicitando a execução (que é o padrão)
bit: 100, decimal 4 - Se executado, sempre usará as permissões do dono(owner) do arquivo, não do usuário que está solicitando a execução (que é o padrão)

Espero que isto esclareça este bit.

Comentários

Postagens mais visitadas