Pesquisa de site

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 para chmod
  • 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 comando chmod +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 atual
  • g=o ggrupo que possui o arquivo
  • o=todas as outras contas de usuário
  • a=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 leitura
  • w=permissões de gravação
  • x=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.

Artigos relacionados: