Permissões especiais


As permissões especiais são um quarto tipo de permissão além dos tipos básicos usuário, grupo e outros. Como o nome indica, as permissões especiais fornecem recursos relacionados a acesso além do que os tipos básicos de permissão permitem. Esta seção descreve o impacto das permissões especiais, resumidas na tabela abaixo.

A permissão setuid em um arquivo executável significa que os comandos são executados como o usuário que é proprietário desse arquivo, e não o usuário que executou o comando. Um exemplo seria o comando passwd:

[user@host ~]$ ls -l /usr/bin/passwd
-rwsr-xr-x. 1 root root 35504 Jul 16  2010 /usr/bin/passwd

Em uma listagem longa, você pode identificar as permissões setuid por um caractere em letra minúscula s onde você normalmente esperaria que houvesse um caractere x (o proprietário executa permissões). Se o proprietário não tiver permissões de execução, esse caractere é substituído por uma letra maiúscula S.

A permissão especial setgid em um diretório significa que os arquivos criados no diretório herdam a propriedade do grupo do diretório em vez de herdá-la do usuário que o criou. Esse recurso é frequentemente usado em diretórios colaborativos de grupo para alterar de maneira automática um arquivo do grupo privado padrão para o grupo compartilhado ou se um grupo específico precisar sempre ser o proprietário de arquivos em um diretório. Um exemplo desse comportamento é o diretório /run/log/journal:

[user@host ~]$ ls -ld /run/log/journal
drwxr-sr-x. 3 root systemd-journal 60 May 18 09:15 /run/log/journal

Se setgid estiver definido em um arquivo executável, os comandos serão executados como o grupo que é proprietário desse arquivo, e não o usuário que executou o comando. Essa condição é semelhante à maneira como setuid funciona. Um exemplo seria o comando locate:

[user@host ~]$ ls -ld /usr/bin/locate
-rwx--s--x. 1 root slocate 47128 Aug 12 17:17 /usr/bin/locate

Em uma listagem longa, você pode identificar as permissões setgid por um caractere em letra minúscula s onde você normalmente esperaria que houvesse um caractere x(o grupo executa permissões). Se o grupo não tiver permissões de execução, esse caractere é substituído por uma letra maiúscula S.

Por fim, o sticky bit para um diretório define uma restrição especial na exclusão de arquivos. Apenas o proprietário do arquivo (e o usuário root) consegue excluir arquivos dentro do diretório. Um exemplo é o diretório /tmp:

[user@host ~]$ ls -ld /tmp
drwxrwxrwt. 39 root root 4096 Feb  8 20:52 /tmp

Em uma listagem longa, você pode identificar as permissões sticky por um caractere em letra minúscula t onde você normalmente esperaria que houvesse um caractere x (outro executa permissões). Se o outro não tiver permissões de execução, esse caractere é substituído por uma letra maiúscula T.

Definição de permissões especiais

  • Simbólico:

    • setuid = u+s;

    • setgid = g+s;

    • sticky = o+t

  • Octal:

    No quarto dígito anterior adicionado;

    • setuid = 4;

    • setgid = 2;

    • sticky = 1

Exemplos de permissões especiais que adicionam o bit setgid no diretório example usando o método simbólico:

[user@host ~]# chmod g+s example

Remova o bit setuid no diretório example usando o método simbólico:

[user@host ~]# chmod u-s example

Defina o bit setgid e adicione permissões de leitura, gravação e execução ao usuário e grupo, sem acesso para outros, no diretório example usando o método octal:

[user@host ~]# chmod 2770 example

Remova o bit setgid e adicione permissões de leitura, gravação e execução ao usuário e grupo, sem acesso para outros, no diretório example usando o método octal. Observe que você precisa adicionar um 0 adicional no início do valor de permissões ao remover permissões especiais usando o método octal:

[user@host ~]# chmod 00770 example

Referências