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