Você está cansado de ter que mudar manualmente as permissões de arquivos e diretórios? Você está procurando por uma maneira mais rápida e eficiente de modificar as permissões dos seus arquivos e diretórios? Se sim, então você veio ao lugar certo porque, neste artigo, você aprenderá como alterar as permissões de arquivos e diretórios usando o comando chmod
recursivamente!
Continue lendo para saber mais!
Pré-requisitos
Para acompanhar, você precisa de um dispositivo Linux e um diretório cujas permissões de arquivos e subdiretórios estejam disponíveis para praticar.
Aprendendo sobre Usuários e Grupos do Linux
Proprietários e grupos são importantes no Linux, necessários para gerenciar arquivos e diretórios de forma segura. O proprietário é para quem um arquivo ou diretório é atribuído, que é o criador, por padrão. No Linux, arquivos e diretórios também pertencem a grupos. Tanto usuários quanto grupos são definidos via chown
comando.
Na captura de tela abaixo, o conteúdo destacado em verde mostra o usuário que possui o arquivo ou diretório, mihail
neste exemplo. O conteúdo destacado em azul mostra a qual grupo o arquivo ou diretório pertence, de propriedade do grupo staff
neste exemplo.

Entendendo as Permissões de Arquivos e Diretórios do Linux
Permissões definem quais ações um usuário ou grupo pode realizar em um arquivo ou diretório específico. Elas são indicadas por uma representação de caractere e também atribuídas a um valor numérico.
- Leitura (
r
ou4
): Indica se um usuário ou grupo pode ler o conteúdo do arquivo ou diretório. A permissão de leitura é concedida por padrão a todos os arquivos e diretórios recém-criados para todas as partes envolvidas. - Escrita (
w
ou2
): Indica se um usuário ou grupo pode editar o conteúdo de um objeto. Essa permissão é concedida por padrão apenas ao proprietário do arquivo ou diretório. - Execução (
x
ou1
): Indica se um usuário ou grupo pode executar um arquivo ou comandos dentro de um diretório. A permissão de execução é concedida por padrão apenas a diretórios, mas não a arquivos.
Se você não conceder permissões de execução ao usuário (
u
) para um diretório, eles não conseguirão listar o conteúdo, pois o usuário não poderá executar comandos dentro do diretório!
Um exemplo é mostrado abaixo, a saída do comando ls -l
demonstra os diferentes tipos de permissões. Aquelas permissões precedidas pelo valor d
indicam um diretório.

Então, por que aparentemente existem três conjuntos de permissões para cada objeto? O controle granular de permissões é alcançado dividindo as permissões nas seções (referenciadas como partes para o propósito deste tutorial) listadas abaixo.
- Utilizador (
u
): O proprietário de um arquivo ou diretório, destacado a azul. - Grupo (
g
): Membros do grupo ao qual um arquivo ou diretório pertence, destacados a verde. - Outros (
o
): Todos os utilizadores e grupos adicionais não atribuídos explicitamente, destacados a vermelho.

Alterar Permissões de Arquivo via Comando Recursivo chmod
Compreendendo as permissões adequadas do Linux, continue a ler para aprender como alterar as permissões de arquivo. As permissões são modificadas através do comando recursivo chmod
, conforme mostrado nos exemplos abaixo.
1. Primeiro, verifique as permissões atuais com o comando ls -l
. Aqui, o arquivo my_dir/index.js é mostrado.

2. Execute o comando chmod
, especificando o grupo, a
(todos), e as permissões, rwx
, ou ler/escrever/executar. O comando completo é o seguinte: chmod a=rwx index.js
.

3. Como pode ver, ao executar chmod
recursivamente não é devolvida qualquer saída. Para verificar se as permissões foram alteradas, execute novamente o comando ls -l
.

Definir Permissões de Arquivo via Valores Numéricos
Lembre-se dos números associados às permissões como ler ou escrever? Em vez de especificar os valores de caracteres, pode especificar permissões específicas através de um número. Ao adicionar os valores, cria uma permissão específica como 6
, que é uma combinação das permissões de escrever (2
) e ler (4
).
No exemplo abaixo, defina permissões para o arquivo main.py via o comando chmod 664 main.py
. Os valores numéricos se desdobram da seguinte maneira.
- Usuário: Leitura e Escrita (
6
). - Grupo: Leitura e Escrita (
6
). - Outros: Leitura (
4
).

Após as permissões serem alteradas, verifique as novas permissões para o arquivo main.py com o comando ls -l
.

Removendo e Adicionando Permissões de Arquivos
Os comandos não numéricos que você executou até agora usaram o parâmetro de atribuição (=
) com chmod
recursivo, para definir permissões explícitas. Em vez disso, você pode remover (-
) ou adicionar (+
) permissões aos conjuntos de permissões existentes.
1. Primeiro, liste as permissões existentes para o arquivo README.md via o comando ls -l README.md
.

2. Em seguida, adicione (+
) permissões de execução (x
) para o usuário (u
), enquanto remove (-
) permissões de leitura (r
) do outro usuário (o
) para README.md, com o seguinte comando chmod u+x,o-r README.md
. As permissões de diferentes usuários são separadas por vírgulas (,
).

3. Execute o comando ls -l README.md
para verificar se as permissões foram modificadas.

Alterando Recursivamente as Permissões de Arquivos e Diretórios
Embora esteja progredindo, está operando apenas em um arquivo de cada vez. E se você tiver um grande número de arquivos para alterar permissões? É hora de elevar seu jogo e aprender a alterar permissões para vários arquivos.
Uma das opções para alterar vários arquivos é executar o chmod
recursivamente com a opção -R
(recursiva, em minúsculas). A opção recursiva irá alterar as permissões de todos os arquivos, incluindo aqueles em subdiretórios, dentro de um determinado caminho.
1. Considere o seguinte comando, chmod -R a=r,u=rwx meu_dir
. A maioria das opções você já viu antes.
Este comando irá alterar as permissões de todos os arquivos no diretório, meu_dir e subdiretórios, via opção recursiva (-R
). Os arquivos serão configurados como legíveis (r
) para todos (a
), com permissão diferente para o usuário atual (u
) configurado para permissões completas (ler, escrever, executar).
Na captura de tela abaixo, você vê as permissões resultantes após a execução do comando, que não gera saída.

2. Suponha que você execute o comando, chmod -R a=rwx meu_dir
, no mesmo diretório que antes, meu_dir. Novamente, você está alterando todos os arquivos em meu_dir, e seus subdiretórios, para conceder todas as permissões (a
) completas (ler, escrever, executar). Aqui está o resultado do comando, já que o chmod
recursivo não exibe saída.

3. Como é o método numérico? Como mostrado abaixo, o método recursivo também funciona com permissões numéricas, chmod -R 770 my_dir
. Aqui você está dando permissões totais para o usuário e grupo, mas nenhuma permissão para a outra parte.

4. Execute ls -l
para verificar que as permissões de arquivos e subdiretórios de my_dir estão configuradas com o método numérico.

Definindo o Comportamento de Arquivos e Pastas via Permissões Especiais
Permissões especiais permitem vários privilégios adicionais únicos dos conjuntos de permissões padrão. Existem três permissões especiais. Veja como essas permissões especiais funcionam e como você pode adicioná-las a um arquivo ou diretório.
Configurando as Permissões SUID (Usuário + S)
Comumente indicada como SUID, é uma permissão especial para o usuário. O SUID tem uma única função: um arquivo com SUID sempre é executado como o usuário que possui o arquivo, independentemente de quem está executando o arquivo.
Por exemplo, considere index.js. Para dar permissão adicional de SUID, execute chmod u+s index.js
.
Agora, se você executar ls -l index.js
, você encontrará que o usuário tem um s em suas permissões em vez de um x.

Configurando as Permissões SGID (Grupo + S)
Comumente indicada como SGID, esta permissão especial tem duas funções:
- Se definida para um arquivo, permite que o arquivo seja executado como o grupo que possui o arquivo, independentemente de quem está executando o arquivo.
- Se definido para um diretório, quaisquer arquivos criados no diretório terão sua propriedade de grupo definida como a do proprietário do diretório.
Pratique no arquivo index.php. Para adicionar a permissão SGID a este arquivo, execute o seguinte comando: chmod g+s index.php
.
Agora, se você executar ls -l index.php
, verá que o grupo tem um s em suas permissões.

Mova-se para um diretório: meu_dir. Você pode adicionar a permissão SGID a este diretório usando o seguinte comando: chmod g+s meu_dir
. Quaisquer arquivos criados neste diretório agora terão sua propriedade de grupo definida como a do proprietário do diretório. Você pode verificar as novas permissões do diretório usando ls -ld meu_dir
(o parâmetro d
limita a saída apenas para diretórios).

Alterando a Permissão do Bit de Proteção
A última permissão especial também é conhecida como “bit de proteção”. Esta permissão não afeta arquivos individuais. Mas, no nível do diretório, ela restringe a exclusão de arquivos. Apenas o proprietário de um arquivo pode remover um arquivo dentro desse diretório.
Adicione o bit de proteção ao velho e familiar diretório meu_dir. Para fazer isso, execute o comando da seguinte forma: chmod +t meu_dir
.
Observe que, para adicionar o bit de proteção, você não indica o grupo outro(o) antes do
+t
.
Ao verificar as novas permissões de meu_dir, você verá um T maiúsculo nas permissões outro, conforme mostrado na captura de tela abaixo.

Conclusão
Parabéns! Você abordou muitos tópicos sobre o chmod
recursivo. Agora você está pronto para enfrentar quaisquer problemas de permissão irritantes que surgirem com a poderosa ferramenta chmod
. Você até aprendeu como aproveitar o poder da opção recursiva (-R
).
Como você pretende implementar a funcionalidade versátil do chmod
a seu favor na próxima vez que precisar gerenciar permissões de arquivo ou diretório?