Já se encontrou em uma situação em que precisava realizar uma tarefa em um sistema Linux, apenas para se deparar com uma frustrante negação de acesso? Bem, diga adeus a esses problemas e dê as boas-vindas ao mundo das permissões especiais no Linux!
Este tutorial é o seu bilhete para dominar os pontos mais finos das permissões especiais no Linux – Bit Pegajoso, Identificação de Usuário Definida (SUID) e Identificação de Grupo Definida (SGID). Essas permissões especiais oferecem um nível mais alto de controle de segurança.
Continue lendo e gerencie seus arquivos com precisão e confiança!
Pré-requisitos
Antes de mergulhar nos detalhes das permissões especiais no Linux, certifique-se de ter uma máquina Linux. Este tutorial usa o Ubuntu 22.04 LTS (Jammy Jellyfish) para demonstrações práticas.
Executando Arquivos com Permissões Especiais no Linux (SUID)
As permissões de arquivo do Linux geralmente determinam a capacidade de um usuário ler, escrever ou executar um arquivo com base em suas permissões e as de seu grupo. No entanto, existem situações em que um usuário deve executar um arquivo com as permissões do proprietário do arquivo em vez das suas próprias.
Por exemplo, considere um programa que apenas usuários root podem executar, mas há uma necessidade de um usuário regular executá-lo para uma tarefa específica. Em tais casos, o SUID se torna inestimável.
Para ver como definir permissões SUID, siga estas etapas:
1. Abra o terminal e execute os seguintes comandos para criar um usuário (useradd
) chamado A-usuario
(arbitrário) e atribua uma senha (passwd
).

2. Em seguida, execute o comando stat
abaixo para visualizar as permissões existentes do comando cat
.
Anote as permissões de acesso abaixo, pois você precisará delas para comparações posteriores:
- 0755 – Permite que o arquivo seja executado com as permissões de seu proprietário, concedendo privilégios elevados a usuários não privilegiados ao executar o arquivo.
- -rwxr-xr-x – Define permissão para o proprietário ler, escrever e executar o arquivo (rwx), enquanto membros do grupo e outros usuários podem ler e executar o arquivo (r-x e r-x).

cat
command3. Agora, execute o comando chmod
abaixo, que não fornece saída, mas define o bit SUID no comando cat
.
Este comando permite que o comando cat
seja executado com as permissões do proprietário do arquivo, em vez das permissões do usuário que está executando o comando.
? Observação: o uso do SUID deve ser feito com cautela, pois pode potencialmente introduzir riscos de segurança se não implementado corretamente. Certifique-se de aplicar o SUID apenas a comandos e arquivos confiáveis.
4. Depois de definir o bit SUID, execute o seguinte comando stat
para verificar o bit SUID ao rechecar as permissões do comando cat
.
Se bem-sucedido, você verá o seguinte, onde fará uma comparação com as informações anotadas no passo dois:
- 0755 alterado para 4755, onde o número 4 representa o bit SUID.
- -rwxr-xr-x alterado para -rwsr-xr-x, onde s representa o local de permissão de execução do usuário (x) respectivamente.

5. Execute o seguinte comando cat
para testar a permissão do usuário atualmente logado para acessar o arquivo /etc/shadow
. Este arquivo é um arquivo de sistema crítico que armazena senhas de usuário criptografadas e informações relacionadas, que apenas um usuário root pode acessar.
Por padrão, o comando cat
permite visualizar o conteúdo de um arquivo no Linux. Mas esse comportamento nem sempre é verdadeiro para todos os arquivos.
A mensagem abaixo aparece porque o usuário atual não tem permissão para acessar o arquivo.

6. Agora, execute cada comando abaixo para trocar (su
) para o novo usuário (A-usuario
), e tente acessar o arquivo /etc/shadow
novamente.
Desta vez, o comando cat
será executado com as permissões do proprietário do arquivo (geralmente root) ao invés das permissões do usuário que executou o comando.
Como você temporariamente concedeu permissão ao A-usuario para ler o conteúdo desse arquivo, você obterá uma saída como a abaixo.

7. Por motivos de segurança, execute os seguintes comandos para sair
do usuário atual (A-usuario) e reverter as permissões do comando cat
para seu estado original.

cat
command8. Por fim, execute o comando abaixo para verificar se o bit SUID foi removido.
Observe que o bit SUID 4 e s não estão mais nas permissões de acesso.

Habilitando Fluxos de Trabalho Colaborativos em Diretórios do Linux (SGID)
Executar arquivos com permissões especiais no Linux via SUID funciona bem. Mas e se você visar fluxos de trabalho colaborativos, onde múltiplos usuários colaboram em projetos? Tipicamente, você deve garantir que os arquivos recém-criados herdem a propriedade do grupo do diretório pai.
Ao enfrentar esse cenário, o SGID se mostra um fator decisivo. Este recurso poderoso simplifica a gestão de recursos compartilhados e melhora os fluxos de trabalho baseados em grupo em ambientes Linux.
Para ver como funciona o SGID, você criará um grupo, adicionará usuários a ele, definirá permissão SGID em um diretório e testará sua funcionalidade da seguinte forma:
1. Execute os seguintes comandos para fazer login como usuário root e criar um novo grupo chamado demo
(arbitrário). Este grupo é o que você usará para testar a funcionalidade SGID.
Esses comandos não fazem

2. Em seguida, execute os comandos abaixo para criar dois usuários (userA
e userB
) que você usará para simular um ambiente colaborativo.

3. Após criar novos usuários, execute os comandos usermod
abaixo, que não produzem saída no terminal, mas adicionam os usuários (userA
e userB
) ao grupo demo
.
4. Agora, execute cada comando abaixo, crie um diretório (mkdir
) chamado /demo-dir
(arbitrário) e defina as propriedades de usuário e grupo do diretório para userA
e demo
, respectivamente.
? Quando bem-sucedidos, esses comandos não produzem saída, o que se aplica a todo este tutorial.
5. Em seguida, execute o seguinte comando ls
para visualizar as permissões do diretório /demo-dir
.
A saída abaixo verifica que o usuário do diretório /demo-dir está definido como userA e o grupo como demo.

6. Com as permissões verificadas, execute o comando chmod
abaixo para definir o bit SGID no diretório /demo-dir/
da seguinte maneira:
g+s
– Set the SGID bit on the/demo-dir/
directory.o-rwx
– Remove all permissions (read, write, execute) for others.u+rwx
– Grant read, write, and execute permissions to the owner.g+rwx
– Grant read, write, and execute permissions to the group.
7. Depois que o SGID estiver definido, execute o seguinte comando para verificar as permissões do diretório /demo-dir
.
Se for bem-sucedido, você verá o bit SGID definido, representado pelo número 2
antes do modo de permissão octal e s
no local de permissão de execução do proprietário do grupo (x
) (rws
).

8. Em seguida, execute cada comando abaixo para criar um diretório /home
para o usuário userA
.
9. Execute os seguintes comandos para trocar (su
) para o userA
e criar um arquivo (touch
) chamado textA.txt
(arbitrário) no diretório /demo-dir
.
Esses comandos não têm saída (o que se aplica durante todo este tutorial), mas você verificará as permissões do arquivo na etapa seguinte.
10. Execute o comando ls
abaixo para visualizar as permissões do arquivo textA.txt
.
Abaixo, o proprietário do grupo do arquivo textA.txt é demo, que é o grupo principal do criador, userA. Os membros do grupo demo podem ler e modificar o arquivo, enquanto outros só podem lê-lo.
Para garantir que novos arquivos no diretório /demo-dir herdem a propriedade do grupo do diretório, um bit SGID deve ser definido no diretório, o que você cobrirá nos seguintes passos.

11. Agora, invoque os seguintes comandos para sair
do usuário atual (userA) e definir o bit SGID (chmod g+s
) no diretório /demo-dir

12. Uma vez que o SGID está definido, execute o comando abaixo para verificar o bit SGID que você adicionou ao diretório /demo-dir
.
Como mostrado abaixo, você notará que o bit SUID 2 é adicionado, e há um s no local de execução do proprietário do grupo. Esta saída confirma que o bit SGID foi definido com sucesso para o diretório /demo-dir.

13. Em seguida, volte para userA
e crie outro arquivo chamado testA.txt
(arbitrário) no diretório /demo-dir
.
14. Uma vez criado, execute o comando ls
abaixo para verificar a propriedade do novo arquivo (testA.txt
).
Se o SGID funcionar conforme o esperado, a saída mostra que enquanto userA é o proprietário, a propriedade do grupo é demo devido ao bit SGID definido no diretório /demo-dir.

15. Agora, crie um diretório /home
para o userB
para testar ainda mais a funcionalidade do SGID.
16. Mude para o userB
e crie um arquivo chamado testB.txt
(arbitrário) no mesmo diretório /demo-dir
.

17. Visualize (ls
) as informações do novo arquivo (testB.txt
).
Verifique a propriedade do arquivo textB.txt.

Protegendo Arquivos Dentro de Diretórios (Bit de Acesso Restrito)
A habilitação de fluxos de trabalho colaborativos em diretórios Linux promove o trabalho em equipe e colaboração contínua. Mas quando é necessário estabelecer um ambiente seguro para gerenciar arquivos de forma eficaz, as permissões do Bit de Acesso Restrito fazem o truque.
Ao definir as permissões do Bit de Acesso Restrito, você está basicamente colocando as “chaves do castelo” nas mãos do proprietário do arquivo, proprietário do diretório ou usuário root. Isso garante que apenas eles tenham autoridade para excluir ou renomear o arquivo dentro do diretório, proporcionando uma proteção adicional para dados sensíveis.
Para definir as permissões do Bit de Acesso Restrito, você deve primeiro criar um diretório compartilhado com as seguintes etapas:
1. Faça login como usuário root e crie um diretório (compartilhado) (mkdir
) onde vários usuários podem criar arquivos.
2. Em seguida, execute os comandos abaixo para alterar as permissões do diretório /shared-dir
para conceder permissão de gravação a todos.
O primeiro número (1
) em 1777
define o Sticky Bit, enquanto o restante (777
) torna o diretório legível, gravável e executável por todos.
As seguintes são características ou atributos do Sticky Bit em um sistema Linux:
Feature | Function |
Directory Protection | When the Sticky Bit is set on a directory, it allows only the owner of a file within that directory to delete or rename their own files. Other users, even if they have write permissions to the directory, cannot delete or rename files owned by other users. |
Shared Directories | The sticky bit is handy for directories that are shared among multiple users. For example, on a system with a /tmp directory used by all users to store temporary files, setting the Sticky Bit prevents users from accidentally or maliciously deleting files owned by other users. |
Abaixo, você pode ver a letra ‘t’ na última parte do campo de permissão, o que indica que o Sticky Bit está definido para o diretório /shared-dir.

3. Troque para userA
e crie um arquivo chamado fileA.txt
(arbitrário) no diretório /shared-dir
:
4. Saia do usuárioA, mude para userB
e crie outro arquivo chamado fileB.txt
(arbitrário) no mesmo diretório /shared-dir
.
5. Agora, saia do usuárioB
, mude para usuárioA
e tente excluir o arquivo fileB.txt
do usuárioB
.
Você receberá uma saída como a mostrada abaixo, pois apenas o proprietário do arquivo pode fazer alterações ou excluí-lo.

6. Por fim, execute a seguinte lista de comandos (ls
) para listar todos os arquivos dentro do diretório compartilhado (/shared-dir
).
Se as permissões do Sticky Bit estiverem funcionando, você verá que o arquivo fileB.txt criado pelo usuárioB está seguro e não foi excluído.

Conclusão
Ao concluir esta exploração das permissões especiais no Linux, você desbloqueou um conjunto robusto de ferramentas: o SUID, SGID e Bit Pegajoso (Sticky Bit). Armado com esse conhecimento, agora você pode ajustar o controle de acesso e proteger seus arquivos com precisão.
Mas não pare por aqui! Que tal tentar configurar um diretório compartilhado com SGID e experimentar como os arquivos herdam a propriedade do grupo? O mundo Linux está ao seu alcance, e a cada empreendimento, você dominará a arte de proteger seu sistema com maestria!
Source:
https://adamtheautomator.com/special-permissions-in-linux/