Permissão de Execução a Arquivo (script ou binário) no GNU/Linux - Abordagem Sistemática

O artigo aborda de modo sistemático e sob diversas maneiras a respeito de como dar permissão de execução a um arquivo, quer seja este arquivo um script ou binário. Veremos, pois, algumas formas de definir sua propriedade com permissão de execução, isso tanto por intermédio do Terminal (em seus Modos Textual e Octal) quanto por intermédio da Interface Gráfica.

[ Hits: 13.349 ]

Por: Rodrigo Albuquerque Serafim em 11/10/2017 | Blog: https://www.vivaolinux.com.br/~raserafim


Modo Textual na sua distinção entre "adição" e "redefinição" de permissões



Adição (sinal de adição "+")

O sinal de adição ("+") utilizado como "operador do atributo", argumento do qual expomos nos dois sub-itens anteriores, designa que o argumento passado como "indicativo do atributo" ("x","r", ...) será acrescentado (adicionado) ao conjunto de permissões já definidas de acordo com a "indicação do escopo" de usuários ("u","g","o","a").

Por acréscimo (adição) ao conjunto de permissões já definidas, devemos entender como sendo uma operação de permissão que amplia permissões; jamais suprime ou restringe permissões: tanto em relação a outros atributos (por exemplo, às permissões de "leitura" e de "escrita"), quanto em relação ao próprio atributo em questão (por exemplo, preservando a permissão sobre o atributo para os usuários que já estavam contemplados)

Em poucas palavras, quando o argumento do sinal de adição ("+") efetiva a operação de permissão essa operação representa, deste modo, um incremento no escopo de permissão dos atributos indicados ao mesmo tempo em que preserva todas as permissões dos atributos não indicados.

Por exemplo, quando se utiliza apenas o conjunto de argumentos "+x" ocorre que todos os usuários passam a adquirir a permissão de execução (uma vez que, conforme vimos, "+x" é equivalente ao argumento "a+x") e, a um só tempo, é mantida intacta as permissões já constantes nos demais atributos do arquivo. Se o arquivo já continha ou não continha, digamos, permissão para leitura ou para escrita, seja para o "dono", para o "grupo", para "outros" ou para "todos", nada muda para esses atributos de leitura e de escrita; o estado atual desses atributos permanece igual ao momento da nova atribuição de permissões.

Ainda como exemplo, quando um determinado arquivo tem o seu atributo de execução configurado para a permissão ao "grupo do qual o usuário dono faz parte" ("g+x" ou "g+xr") e se tenta adicionar a permissão de execução para o "usuário dono" ("u+x" ou "u+xr"), há aí uma efetiva ampliação de permissão. Ampliou-se o escopo: não apenas o "grupo" tem permissão de execução (e de leitura); mas agora, o "usuário" dono também passa a ter permissão de execução (e de leitura)

É sempre importante, lembremos que não há sobreposição de escopos, que um escopo nunca está contido em outro escopo, que cada escopo possui um conjunto único de usuários. Neste sentido, ter um arquivo com permissão para o "grupo" e atribuir a esse arquivo a permissão ao "usuário", então, como já assinalamos, não significa reduzir a permissão do "grupo" para o "usuário" dono. Não há aqui uma redução de escopo. Dar permissão de "usuário" dono a um determinado arquivo que já tem permissão ao "grupo", como também destacamos, significa incrementar (adicionar) o "usuário" dono ao conjunto das permissões que o arquivo já possui.

Obs.: para atribuir uma permissão com o "escopo de usuário" mais restrito do que a permissão que está concedida no arquivo alvo, assim, antes, seria necessário excluir a permissão do atributo que se quer atribuir uma pressão mais restritiva (utilizando-se do sinal de subtração "-" enquanto "operador do atributo").

Por exemplo, se a atual permissão foi definida com "+x", mas agora se quer definir apenas com "g+x", deve-se utilizar primeiro "-x", depois "g+x". Conforme pode ser visto na sequência do texto, a "redefinição" dá conta da necessidade de substituir um conjunto de permissão por um outro conjunto de permissão.

Redefinição (sinal de igualdade "=")

Já quando utilizamos o sinal de igualdade ("=") como um argumento em acréscimo aos argumentos que já fizemos menção, logo, não substituindo o "operador do atributo", mas o fazendo parceria, ao invés da permissão atribuída ser adicionada ao conjunto das permissões já existentes no arquivo alvo (como é o caso para o sinal de adição "+"), por seu turno, a permissão atribuída se torna, por assim dizer, a permissão exclusiva.

O sinal de igualdade ("=") como um argumento que se soma aos argumentos da "indicação do escopo" ("u","g","o","a"), do "operador do atributo" ("+","-") e do "indicativo do atributo" ("x","r" ...), portanto, acaba por fazer com que a permissão que se tenta atribuir ao arquivo alvo se torne a sua única permissão vigente.

Seu uso, de certa forma, "remove" as permissões de todos os atributos não informado no conjunto de argumentos passados como parâmetro para o comando "chmod". "Remove", aqui, no sentido de tornar as permissões o mais restritiva possível (configurando-a como não tendo permissão alguma de escrita e de execução, tendo permissão de leitura apenas para o "proprietário").

Os comandos que se segue imediatamente abaixo são, o primeiro de cada quadro, uma variação do nosso código na "forma elementar" com o acréscimo do argumento que opera a "redefinição"; o segundo de cada quadro, uma variação do nosso "código elementar na forma explícita" também com o acréscimo do argumento de "redefinição":

chmod =+x nome_do_arquivo.ext # permissão de execução a "todos" os usuários, permissão de leitura apenas ao "dono" e nenhuma permissão de escrita

É equivalente a... | é similar a:

chmod a=+x nome_do_arquivo.ext # permissão de execução a "todos" os usuários, permissão de leitura apenas ao "dono" e nenhuma permissão de escrita

E:

chmod =+xr nome_do_arquivo.ext # permissão de execução e de leitura a "todos" os usuários e nenhuma permissão de escrita

É equivalente a... | é similar a:

chmod a=+xr nome_do_arquivo.ext # permissão de execução e de leitura a "todos" os usuários e nenhuma permissão de escrita

Nestes dois códigos, o sinal de igualdade ("=") configura todos os atributos de permissão para o status de permissão mínima (restritiva). Porém, no primeiro quadro, o sinal de adição ("+") define o atributo de execução para "todos os usuários"; enquanto que no segundo quadro o sinal de adição ("+") define para "todos os usuários" tanto o atributo de execução quanto o atributo de leitura.

Assim, o resultado final ficaria sendo, para o primeiro quadro de código, um arquivo com permissão de leitura apenas para o "usuário dono", a permissão de escrita para "nenhum usuário" e a permissão de execução para "qualquer um" dos usuários; para o segundo quadro de código, o resultado final seria um arquivo com a permissão de escrita para "nenhum usuário" e a permissão de execução e de leitura para "qualquer um" dos usuários.

Caso não queira dar a permissão de execução para "todos os usuários", mas apenas para "o grupo do qual o usuário dono faz parte", ou então apenas para o "proprietário", bastaria fazer a "indicação do escopo" de usuários, respectivamente, com "g=+xr" e "u=+x" (lembrando que apenas tem sentido definir o escopo de "grupo" para o atributo de execução caso se defina, também, para o atributo de leitura).

O acréscimo do argumento em questão, qual seja, o sinal de igualdade ("="), portanto, deixa a sintaxe do conjunto de argumentos ao comando "chmod" da seguinte forma:
  • {"indicação do escopo" [u,g,o,a]} {"redefinição" [=]} {"operador do atributo" [+,-]} {"indicativo do atributo" [x,r...]}

Obs.: o mesmo efeito do argumento que põe a "redefinição" pode ser conseguido, também e similarmente, valendo-se apenas do "operador de atributo" combinando, em momentos diferentes, o sinal de adição ("+") e o sinal de subtração ("-"). Para conseguirmos o mesmo efeito, por exemplo, de "a=+x" poderíamos utilizar, primeiro, "a-xrw", depois, "+x". O sinal de igualdade "=" seria o equivalente ao "a-xrw".

Página anterior     Próxima página

Páginas do artigo
   1. Introdução
   2. Terminal: Modo Textual e Modo Octal
   3. Modo Textual em seu código elementar (suficiente quando de um usuário)
   4. Modo Textual em seu código ampliado (recomendado quando de vários usuários)
   5. Modo Textual na sua distinção entre "adição" e "redefinição" de permissões
   6. Modo Octal em sua forma única ("redefinição")
   7. Atribuição em lote (Textual e Octal)
   8. Interface Gráfica: particularidades e layouts de categorização
   9. Considerações Finais
Outros artigos deste autor

Permissão de Execução de Arquivo (Script ou Binário) no GNU/Linux - Elementos Básicos para Compreensão

Leitura recomendada

Instalando MariaDB no Debian e Ubuntu

Bind9 + Debian Linux 4.0: Configuração de um servidor de nomes interno

Configuração fácil de um servidor PPP

Instalando e usando o Gentoo GNU/Linux

Instalando Apache, PHP e PostgreSQL no Slackware 12 (compilando)

  
Comentários
[1] Comentário enviado por Sandson em 17/10/2017 - 15:10h

Nesse comentário:
u → indica permissão {de execução} ao usuário [user] dono do arquivo alvo (proprietário)
g → indica permissão {de execução} ao usuário [user] dono do arquivo alvo (proprietário)
o → indica permissão {de execução} ao grupo [group] do qual o usuário dono faz parte
a → indica permissão {de execução} a todos [all] os usuários (é o mesmo que utilizar a sua supressão)

Não estaria errado não? O certo não seria?
u → indica permissão {de execução} ao usuário [user] dono do arquivo alvo (proprietário)
g → indica permissão {de execução} ao grupo [group] do qual o usuário dono faz parte
o → indica permissão {de execução} ao usuário que não faz parte do grupo do usuário dono
a → indica permissão {de execução} a todos [all] os usuários (é o mesmo que utilizar a sua supressão)

[2] Comentário enviado por raserafim em 18/10/2017 - 11:01h

colega Sandson,

você tem toda razão!

os erros que você indicou procedem sim!

obrigado pela leitura atenta do artigo!

obrigado por apontar os erros!

[3] Comentário enviado por raserafim em 18/10/2017 - 11:07h

ERRATA:

na página de número 4 {Modo Textual em seu código ampliado (recomendado quando de vários usuários)}, há um erro no "quadro sintético de todos os caracteres possíveis referentes ao argumento da "indicação do escopo" de usuários":

segue o "quadro sintético" correto:

u    -->    indica permissão {de execução} ao usuário [user] dono do arquivo alvo (proprietário);
g    -->    indica permissão {de execução} ao grupo [group] do qual o usuário dono faz parte;
o    -->    indica permissão {de execução} aos outros [other] usuários que não são nem o dono nem compõem o grupo de usuários do dono;
a    -->    indica permissão {de execução} a todos [all] os usuários (é o mesmo que utilizar a sua supressão);

[4] Comentário enviado por raserafim em 30/10/2017 - 18:46h

Os erros apontados nos comentários anteriores já foram corrigidos diretamente no artigo pela moderação do VOL!

Obrigado Izaías!

[5] Comentário enviado por removido em 21/01/2018 - 14:05h


[4] Comentário enviado por raserafim em 30/10/2017 - 18:46h

Os erros apontados nos comentários anteriores já foram corrigidos diretamente no artigo pela moderação do VOL!

Obrigado Izaías!


Ok.
Sempre que precisarem de correções, avisem à moderação para que possamos editar e evitar que nossos leitores cometam erros.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts