Comando Linux chmod
Nos sistemas operacionais do tipo Unix, o comando chmod define as permissões de arquivos ou diretórios .
Este documento descreve a versão GNU / Linux do chmod .
Descrição
Em sistemas operacionais do tipo Unix , um conjunto de sinalizadores associados a cada arquivo determina quem pode acessar esse arquivo e como eles podem acessá-lo. Esses sinalizadores são chamados de permissões ou modos de arquivo, como no “modo de acesso”. O nome do comando chmod significa “alterar modo”. Ele restringe a maneira como um arquivo pode ser acessado.
Para obter mais informações sobre modos de arquivo, consulte O que são permissões de arquivo e como elas funcionam? na nossa documentação do comando umask . Ele contém uma descrição abrangente de como definir e especificar permissões de arquivo.
Em geral, os comandos chmod assumem a forma:
nome do arquivo de permissões das opções chmod
Se nenhuma opção for especificada, o chmod modifica as permissões do arquivo especificado pelo nome do arquivo para as permissões especificadas pelas permissões .
permissões define as permissões para o proprietário do arquivo (o “usuário”), membros do grupo que possui o arquivo (o “grupo”) e qualquer outra pessoa (“outros”). Há duas maneiras de representar essas permissões: com símbolos ( caracteres alfanuméricos ) ou com números octais (os dígitos de 0 a 7 ).
Digamos que você seja o proprietário de um arquivo chamado myfile e deseje definir suas permissões para que:
- o usuário pode ler, escrever e executar;
- os membros do seu grupo podem lê-lo e executá-lo; e
- outros podem apenas lê-lo.
Este comando fará o truque:
chmod u = rwx, g = rx, o = r meu arquivo
Este exemplo usa notação de permissões simbólicas. As letras u , g e o representam ” usuário “, ” grupo ” e ” outro “. O sinal de igual (” = “) significa “definir as permissões exatamente assim” e as letras ” r “, ” w ” e ” x ” representam “leitura”, “gravação” e “execução”, respectivamente. As vírgulas separam as diferentes classes de permissões e não há espaços entre elas.
Aqui está o comando equivalente usando a notação de permissões octal:
chmod 754 myfile
Aqui, os dígitos 7 , 5 e 4 representam individualmente as permissões para o usuário, grupo e outros, nessa ordem. Cada dígito é uma combinação dos números 4 , 2 , 1 e 0 :
- 4 significa “ler”,
- 2 significa “gravação”,
- 1 significa “executar” e
- 0 significa “sem permissão”.
Portanto, 7 é a combinação de permissões 4 + 2 + 1 (leitura, gravação e execução), 5 é 4 + 0 + 1 (leitura, não gravação e execução) e 4 é 4 + 0 + 0 (leitura, não escrever e não executar).
Sintaxe
chmod [ OPÇÃO ] ... MODO [, MODO ] ... ARQUIVO ... chmod [ OPÇÃO ] ... ARQUIVO DE MODO OCTAL ... chmod [ OPÇÃO ] ... --reference = RFILE FILE ...
Opções
-c , –changes | Como –verbose , mas fornece saída detalhada apenas quando uma alteração é realmente feita. |
-f , –silent , –quiet | Modo silencioso; suprima a maioria das mensagens de erro. |
-v , –verbose | Modo verboso; enviar uma mensagem de diagnóstico para cada arquivo processado. |
–no-preserve-root | Não trate ‘ / ‘ (o diretório raiz ) de nenhuma maneira especial, que é a configuração padrão. |
–preserve-root | Não opere recursivamente em ‘ / ‘. |
–reference = RFILE | Defina permissões para corresponder às do arquivo RFILE , ignorando qualquer MODO especificado. |
-R , –recursivo | Altere arquivos e diretórios recursivamente. |
–Socorro | Exiba uma mensagem de ajuda e saia. |
–versão | Informações de versão de saída e saída. |
Descrição técnica
O chmod altera o modo de arquivo de cada ARQUIVO especificado de acordo com MODE , que pode ser uma representação simbólica das alterações a serem feitas ou um número octal representando o padrão de bits para os novos bits de modo.
O formato de um modo simbólico é:
[ ugoa …] [[ + – = ] [ permanente …] …]
onde perms é zero ou mais letras do conjunto r , w , x , X , se t , ou uma única letra do conjunto u , g e o . Vários modos simbólicos podem ser dados, separados por vírgulas.
Uma combinação das letras u , g , o e os controles de acesso dos usuários ao arquivo serão alterados: o usuário que é o proprietário ( u ), outros usuários do grupo de arquivos ( g ), outros usuários que não pertencem ao arquivo grupo ( o ) ou todos os usuários ( a ). Se nada disso for dado, o efeito é como se um fosse, mas os bits definidos no umask não serão afetados.
O operador + faz com que os bits do modo de arquivo selecionado sejam adicionados aos bits do modo de arquivo existente de cada arquivo; – faz com que sejam removidos; e = faz com que eles sejam adicionados e faz com que os bits não mencionados sejam removidos, exceto que os bits de ID de grupo e usuário não mencionados de um diretório não são afetados.
As letras r , w , x , X , se selecionam os bits do modo de arquivo para os usuários afetados: leitura ( r ), gravação ( w ), execução ( x ), execução somente se o arquivo for um diretório ou já tiver permissão de execução para alguns usuários ( X ), defina o ID do usuário ou grupo nas execuções, sinalizador de exclusão restrito ou bit adesivo ( t ). Para diretórios, as opções de execução X e X definem permissão para exibir o conteúdo do diretório.
Em vez de uma ou mais dessas letras, você pode especificar exatamente uma das letras u , g ou o : as permissões concedidas ao usuário que possui o arquivo ( u ), as permissões concedidas a outros usuários membros do arquivo grupo ( g ) e as permissões concedidas a usuários que não estão em nenhuma das duas categorias anteriores ( o ).
Um modo numérico é de um a quatro dígitos octais ( 0 – 7 ), derivado da soma dos bits com os valores 4 , 2 e 1 . Dígitos omitidos são assumidos como zeros à esquerda. O primeiro dígito seleciona o ID do usuário definido ( 4 ) e o ID do grupo definido ( 2 ) e os atributos de exclusão restrita ou aderente ( 1 ). O segundo dígito seleciona permissões para o usuário que possui a leitura ( 4 ), gravação ( 2 ) e execução ( 1 ); o terceiro seleciona permissões para outros usuários no grupo do arquivo, com os mesmos valores; e o quarto para outros usuários que não estão no grupo do arquivo, com os mesmos valores.
O chmod nunca altera as permissões de links simbólicos ; a chamada do sistema chmod não pode alterar suas permissões. No entanto, isso não é um problema, pois as permissões de links simbólicos nunca são usadas. No entanto, para cada link simbólico listado na linha de comando , o chmod altera as permissões do arquivo apontado. Por outro lado, o chmod ignora os links simbólicos encontrados durante as travessias recursivas do diretório.
Bits Setuid e Setgid
O chmod limpa o bit set-group-ID de um arquivo regular se o ID do grupo do arquivo não corresponder ao ID do grupo efetivo do usuário ou a um dos IDs de grupo suplementares do usuário, a menos que o usuário tenha privilégios apropriados. Restrições adicionais podem fazer com que os bits set-user-ID e set-group-ID do MODE ou RFILE sejam ignorados. Esse comportamento depende da diretiva e da funcionalidade da chamada do sistema chmod subjacente. Em caso de dúvida, verifique o comportamento do sistema subjacente.
O chmod preserva os bits set-user-ID e set-group-ID de um diretório, a menos que você especifique explicitamente o contrário. Você pode definir ou limpar os bits com modos simbólicos como u + se eg , e pode definir (mas não limpar) os bits com um modo numérico.
Sinalizador de exclusão restrita (ou “Bit Sticky”)
O sinalizador de exclusão restrita ou bit adesivo é um bit único, cuja interpretação depende do tipo de arquivo. Para diretórios, impede que usuários sem privilégios removam ou renomeiem um arquivo no diretório, a menos que sejam proprietários do arquivo ou diretório; isso é chamado de sinalizador de exclusão restrita para o diretório e geralmente é encontrado em diretórios graváveis em todo o mundo como / tmp . Para arquivos regulares em alguns sistemas mais antigos, o bit salva a imagem de texto do programa no dispositivo de troca, para que seja carregado mais rapidamente quando executado; isso é chamado de bit pegajoso.
Exibindo permissões de arquivos
Uma maneira rápida e fácil de listar as permissões de um arquivo é com a opção de listagem longa ( -l ) do comando ls . Por exemplo, para visualizar as permissões de file.txt , você pode usar o comando:
ls -l file.txt
… que exibe uma saída semelhante à seguinte:
-rwxrw-r-- 1 hope hopestaff 123 fev 03 15:36 file.txt
Aqui está o que cada parte dessas informações significa:
– | O primeiro caractere representa o tipo de arquivo: ” – ” para um arquivo regular, ” d ” para um diretório, ” l ” para um link simbólico. |
rwx | Os próximos três caracteres representam as permissões para o proprietário do arquivo: nesse caso, o proprietário pode ler, escrever ou executar o arquivo. |
rw- | Os próximos três caracteres representam as permissões para os membros do grupo de arquivos. Nesse caso, qualquer membro do grupo proprietário do arquivo pode ler ou escrever no arquivo. O traço final é um espaço reservado; os membros do grupo não têm permissão para executar este arquivo. |
r– | As permissões para “outros” (todos os outros). Outros podem apenas ler este arquivo. |
1 | O número de links físicos para este arquivo. |
esperança | O proprietário do arquivo. |
hopestaff | O grupo ao qual o arquivo pertence. |
123 | O tamanho do arquivo em blocos . |
03 de fev 15:36 | O mtime do arquivo (data e hora em que o arquivo foi modificado pela última vez). |
file.txt | O nome do arquivo. |
Exemplos
chmod 644 file.htm
Defina as permissões de file.htm como “o proprietário pode ler e escrever; o grupo pode ler apenas; outros podem ler apenas”.
chmod -R 755 myfiles
Recursivamente ( -R ) Altere as permissões do diretório myfiles e todas as pastas e arquivos que ele contém, para o modo 755 : O usuário pode ler, gravar e executar; membros do grupo e outros usuários podem ler e executar, mas não podem gravar.
chmod u = rw exemplo.jpg
Altere as permissões para o proprietário do example.jpg para que o proprietário possa ler e gravar o arquivo. Não altere as permissões para o grupo ou para outros.
chmod u + s comphope.txt
Defina o bit “Set-User-ID” do comphope.txt , para que qualquer pessoa que tente acessar esse arquivo o faça como se fosse o proprietário do arquivo.
chmod us comphope.txt
O oposto do comando acima; desativa o bit SUID.
chmod 755 file.cgi
Defina as permissões de file.cgi para “ler, gravar e executar pelo proprietário” e “ler e executar pelo grupo e todos os outros”.
chmod 666 file.txt
Defina a permissão do arquivo.txt como “ler e escrever por todos”.
chmod a = rw arquivo.txt
Realiza o mesmo que o comando acima, usando notação simbólica.
Comandos relacionados
getfacl – exibe listas de controle de acesso a arquivos.
ls – lista o conteúdo de um diretório ou diretórios.