Entendendo o comando chmod
Dica publicada em Linux / Comandos
Entendendo o comando chmod
O comando chmod é um utilitário via linha de comando usado nos sistemas Linux/Unix/Unix-like para mudar as permissões de um arquivo ou diretório.
Os parâmetros passados para o programa podem ser números ou letras. Nesta dica abordarei a passagem de parâmetros através de números octais.
Exemplo:
chmod 750 arquivo.txt
No exemplo acima aplicamos o comando chmod no arquivo arquivo.txt passando 750 como parâmetro.
Explicação:
O primeiro dígito do parâmetro refere-se às permissões para o dono do arquivo. O segundo, às permissões para os usuários do grupo do dono do arquivo e o terceiro, às permissões que os outros usuários do sistema têm para com o arquivo.
Para entendermos melhor, veja a tabela abaixo:
Quando utilizamos o número 0 significa que negamos determinada permissão. Quando utilizamos 1, significa que a aceitamos.
r -> read
w -> write
x - > execute
r w x
0 0 0 -> 0 -> nenhuma permissão
0 0 1 -> 1 -> apenas execução
0 1 0 -> 2 -> apenas escrita
0 1 1 -> 3 -> escrita e execução
1 0 0 -> 4 -> apenas leitura
1 0 1 -> 5 -> leitura e execução
1 1 0 -> 6 -> leitura e escrita
1 1 1 -> 7 -> leitura, execução e escrita
Portanto, no nosso exemplo, daríamos permissão de leitura, escrita e execução (7) para o dono do arquivo, permissão de leitura e execução (5) para os usuários do mesmo grupo do dono do arquivo e não daríamos nenhuma permissão para os outros usuários do sistema.
Entendendo melhor:
7 -> r=1 (ok, permissão de leitura.) w=1 (Ok, permissão de escrita), x=1 (Ok, permissão de execução)
5 -> r=1 (ok, permissão de leitura), w=0 (permissão de escrita negada), x=1 (Ok, permissão de execução)
0 -> não dá permissão nenhuma.
No nosso exemplo, alteramos as permissões de apenas um arquivo. Mas se quiséssemos alterar as de um diretório todo, incluindo seus subdiretórios? Usamos então a opção -R. Exemplo:
chmod -R 755 /home/usuário/teste
No exemplo acima alteramos as permissões do diretório teste e de tudo que havia contido nele. Para mudarmos as permissões de todos os arquivos contidos em determinado diretório, utilizamos o asterisco (*).
Exemplo:
chmod 777 /home/usuário/pasta/*
No exemplo anterior, alteramos as permissões de todos os arquivos contidos no diretório "pasta". Para visualizarmos as permissões dos arquivos de um diretório, utilizamos o comando "ls -l".
Obs.: Para entender melhor como converter números binários em decimais e vice-versa, acesse o tutorial de conversão de números binários.
Espero que tenham entendido.
Abração.
Os parâmetros passados para o programa podem ser números ou letras. Nesta dica abordarei a passagem de parâmetros através de números octais.
Exemplo:
chmod 750 arquivo.txt
No exemplo acima aplicamos o comando chmod no arquivo arquivo.txt passando 750 como parâmetro.
Explicação:
O primeiro dígito do parâmetro refere-se às permissões para o dono do arquivo. O segundo, às permissões para os usuários do grupo do dono do arquivo e o terceiro, às permissões que os outros usuários do sistema têm para com o arquivo.
Para entendermos melhor, veja a tabela abaixo:
Quando utilizamos o número 0 significa que negamos determinada permissão. Quando utilizamos 1, significa que a aceitamos.
r -> read
w -> write
x - > execute
r w x
0 0 0 -> 0 -> nenhuma permissão
0 0 1 -> 1 -> apenas execução
0 1 0 -> 2 -> apenas escrita
0 1 1 -> 3 -> escrita e execução
1 0 0 -> 4 -> apenas leitura
1 0 1 -> 5 -> leitura e execução
1 1 0 -> 6 -> leitura e escrita
1 1 1 -> 7 -> leitura, execução e escrita
Portanto, no nosso exemplo, daríamos permissão de leitura, escrita e execução (7) para o dono do arquivo, permissão de leitura e execução (5) para os usuários do mesmo grupo do dono do arquivo e não daríamos nenhuma permissão para os outros usuários do sistema.
Entendendo melhor:
7 -> r=1 (ok, permissão de leitura.) w=1 (Ok, permissão de escrita), x=1 (Ok, permissão de execução)
5 -> r=1 (ok, permissão de leitura), w=0 (permissão de escrita negada), x=1 (Ok, permissão de execução)
0 -> não dá permissão nenhuma.
No nosso exemplo, alteramos as permissões de apenas um arquivo. Mas se quiséssemos alterar as de um diretório todo, incluindo seus subdiretórios? Usamos então a opção -R. Exemplo:
chmod -R 755 /home/usuário/teste
No exemplo acima alteramos as permissões do diretório teste e de tudo que havia contido nele. Para mudarmos as permissões de todos os arquivos contidos em determinado diretório, utilizamos o asterisco (*).
Exemplo:
chmod 777 /home/usuário/pasta/*
No exemplo anterior, alteramos as permissões de todos os arquivos contidos no diretório "pasta". Para visualizarmos as permissões dos arquivos de um diretório, utilizamos o comando "ls -l".
Obs.: Para entender melhor como converter números binários em decimais e vice-versa, acesse o tutorial de conversão de números binários.
Espero que tenham entendido.
Abração.
Muito bom seu artigo...mas..eu ainda tenho uma duvida....
Ja vi em alguns lugares usarem um 4o. numero no chmod, exemplo 0755.... Pra que serve ? (aparece tb umas permissoes que nao sao as wrx e sim uma S)
Se puder dar uma luz, valeu.
Abração