Compreendendo o chmod: a diferença entre u+x e +x
O comando chmod é usado para atribuir permissões em arquivos e diretórios em um sistema Linux. Chmod pode aceitar muitas sintaxes variadas, como modo simbólico e modo absoluto, portanto pode ser um pouco confuso aprender todas as diferentes maneiras como o chmod pode ser usado. Quando se trata de conceder permissões de execução a um usuário, as opções u+x
e +x
são frequentemente usadas devido à sua sintaxe simples e direta. Mas você sabe a diferença entre essas duas opções?
Neste tutorial, você aprenderá sobre as diferenças entre as opções chmod u+x
e +x
na linha de comando do Linux. Também abordaremos um resumo básico dessa sintaxe de comando em geral, para que você obtenha uma compreensão fundamental de como utilizar chmod de forma rápida e eficiente para atribuir permissões de leitura, gravação e execução a usuários ou grupos em seu sistema Linux.
Neste tutorial você aprenderá:
- A diferença entre as opções
u+x
e+x
parachmod
- Como usar a sintaxe simbólica
chmod
para atribuir permissões a usuários, grupos e outras contas - Como a configuração
umask
afeta o comandochmod +x
?
A diferença entre as opções chmod u+x e +x
Resposta curta
Caso você esteja com pressa e não se importe com as nuances por trás do comando chmod
, aqui está a resposta que você procura:
u+x
atribuirá permissões de execução para o usuário (proprietário) do arquivo+x
atribuirá permissões de execução no arquivo para todos os usuários do seu sistema
Explicação mais longa
Vamos começar dando uma olhada no seguinte comando:
$ chmod u+x file.sh
Agora podemos decompô-lo começando pela primeira opção, que é u
. Ao atribuir permissões a um arquivo com chmod
e sintaxe de modo simbólico, podemos usar u
para atribuir permissões ao usuário atual (proprietário) do arquivo. Uma lista de opções totais inclui:
u
=o usuário/proprietário atualg
=o ggrupo que possui o arquivoo
=todas as outras contas de usuárioa
=todosos usuários (usuário; grupo; e todos os outros combinados)
Depois de especificar para quem queremos atribuir permissões (usuário, grupo, outros ou todos), o próximo caractere em nossas opções é o sinal de mais +
. Isso (intuitivamente) indica que estamos adicionando permissões. Como o símbolo +
vem depois da letra u
, sabemos que estamos adicionando permissões para o usuário. Neste local, poderíamos usar:
+
=adicionar permissões-
=remover permissões=
=atribuir permissões especificadas
Finalmente, o último caractere em nossas opções é o x
, que representa as permissões de execução. Agora que detalhamos o significado de cada caractere, podemos determinar que as opções u+x
estão adicionando permissões de execução para o usuário do arquivo. Tenha em mente que as seguintes opções podem ser usadas para esta parte das opções:
r
=permissões de leituraw
=permissões de gravaçãox
=permissões de execução
Então, o que significa se especificarmos +x
em nossas opções chmod
, sem especificar explicitamente para quem queremos adicionar as permissões de execução?
$ chmod +x file.sh
Na maioria das situações (veja abaixo quais), usar +x
é equivalente a usar a+x
. Em outras palavras, atribuirá permissões de execução para todos os usuários (usuário, grupo e todos os outros).
Valores variados de umask produzirão resultados diferentes
Há uma grande ressalva na resposta acima, graças à configuração umask
do sistema Linux.
$ umask
0002
Uma configuração umask
de 0002
, como no exemplo acima, significa que +x
será de fato equivalente a a+x
conforme discutido anteriormente. Uma configuração 0002
é o umask
padrão na maioria dos sistemas Linux, mas você pode encontrar resultados variados dependendo de qual distribuição você está usando ou de como o sistema foi configurado.
Podemos obter mais esclarecimentos adicionando a opção -S
ao comando umask
:
$ umask -S
u=rwx,g=rwx,o=rx
Digamos que nossa configuração umask
esteja definida como 0003
. Com esta configuração, a+x
e +x
para chmod
definitivamente nos darão resultados diferentes.
$ umask 0003
Podemos então verificar a configuração:
$ umask
0003
$ umask -S
u=rwx,g=rwx,o=r
Com umask
agora definido como 0003
, o comando chmod +x
atribuirá permissões de execução apenas ao usuário e ao grupo.
Considerações finais
Neste tutorial, aprendemos sobre a diferença entre as opções u+x
e +x
para o comando chmod
em um sistema Linux. Também vimos uma lista completa de opções semelhantes que podemos usar com o comando chmod
para atribuir ou revogar permissões de leitura, gravação e execução em arquivos para o usuário, grupo e outras contas. Finalmente, aprendemos sobre o impacto da configuração umask
quando se trata de atribuir permissões no Linux.