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: 14.177 ]

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


Modo Octal em sua forma única ("redefinição")



Já o Modo Octal, por seu turno, embora não seja de difícil compreensão, se torna menos intuitivo em virtude, sobretudo, da sua forma direta e minimalista de operação com números.

Um Octal é um caractere que permite 8 possibilidades de números. Essas possibilidades estão contidas nos numerais que variam de "zero" à "sete" (0 a 7).

Cada uma dessas possibilidades, no sistema de permissão do GNU/Linux, representa a permissividade ou não de um ou mais atributos de permissão. Todo atributo de permissão tem um correspondente em número; a soma dos numerais de todos ou de parte desses atributos de permissão é representado por um número (uma possibilidade) que agrega os atributos somados.

Por exemplo, o numeral "1" representa a permissão de execução, o número "4" representa a permissão de leitura; o "5" representa simultaneamente a permissão de execução e a permissão de leitura, porque é a soma dos dois numerais (1+4=5).

Caso queira ser permissivo a todos os atributos de permissão, bastaria acrescentar, aos números que já mencionamos, o numeral "2" (que representa a permissão de execução). Assim, para dar permissão, ao mesmo tempo, de execução, leitura e escrita utilizaria-se do numeral "7", porque é a soma dos três números (1+4+2=7).

Segue um quadro sintético com todas as possibilidades do Octal na representação das permissões aos atributos (em negrito aqueles decisivos nos limites deste artigo):
  • 0 → nenhuma permissão
  • 1 → permissão de execução ("x")
  • 2 → permissão de escrita ("r")
  • 3 → permissão de execução + escrita ("xw")
  • 4 → permissão de leitura ("r")
  • 5 → permissão de execução + leitura ("xr")
  • 6 → permissão de leitura + escrita ("r")
  • 7 → permissão de execução + leitura + escrita ("xrw")

Um Octal, conforme é possível inferir, apenas diz respeito aos atributos de permissão, não diz respeito à amplitude do escopo de usuários. O elemento que faz a "indicação do escopo" de usuários, especificando a quais usuários o número Octal está dando permissão, no entanto, é a posição em que cada Octal ocupa na tríade de Octal.

No Modo Octal de atribuição da permissão de execução, portanto, cada Octal faz o "indicativo do atributo" e a posição de cada Octal no interior do agrupamento dos três Octal é que faz a "indicação do escopo" de usuários. A posição de cada Octal indica, respectivamente, as permissões do "usuário dono", do "grupo do qual o usuário dono faz parte", dos "outros usuários que não são nem o dono nem compõem o grupo de usuário do dono".

Assim, quando se passa ao comando "chmod", por exemplo, os argumentos compondo o parâmetro "540", logo, se estaria indicando permissão de leitura para o "grupo" e permissão de execução e de leitura apenas para o "proprietário" do arquivo: aqui, o primeiro Octal da tríade representa a permissão de execução e leitura (1+4=5) para o "usuário dono" do arquivo; o segundo Octal representa permissão de leitura (4) para o "grupo"; o terceiro Octal representa "nenhuma" (0) permissão aos "outros" usuários.

Se quiséssemos, por exemplo, que "todos" os usuários tivessem permissão de leitura, mas apenas o "grupo" tivesse permissão de execução (logo, execução e leitura) e, no interior deste, apenas o "usuário dono" tivesse permissão de escrita, então, utilizaríamos o seguinte conjunto de argumentos: "754" (1+4+2=7 | 1+4=5 | 4=4).

Obs.: é possível indicar apenas um ou dois Octal. Nestes casos, a posição do Octal em relação aos escopos de usuários possíveis são lidos da maior amplitude para a menor amplitude. Deste modo, informar apenas um argumento como parâmetro ao comando "chmod", por exemplo o numeral "5", estaria indicando permissão de execução e leitura aos "outros" usuários que não são nem o dono do arquivo nem fazem parte do grupo do dono; informar dois Octal (exemplo: "55") estaria indicando permissão, além de para os "outros" usuário, também ao "grupo" do usuário dono do arquivo.

Neste sentido, para definir as permissões ao "dono" do arquivo, obrigatoriamente, deveria ser informado os três Octal:
  • {"usuário" dono | "grupo" | "outros"}

Segue um apanhado de argumentos no código em Modo Octal que julgo serem de necessidades mais recorrentes:

chmod 500 nome_do_arquivo.ext # permissão de execução e leitura apenas ao "proprietário"

chmod 555 nome_do_arquivo.ext # permissão de execução e leitura a todos os usuários

chmod 777 nome_do_arquivo.ext # permissão de execução, leitura e escrita a todos os usuários

chmod 755 nome_do_arquivo.ext # permissão de execução e leitura a "todos os "usuários" e permissão de escrita apenas ao "proprietário" arquivo

chmod 740 nome_do_arquivo.ext # permissão de leitura ao "grupo" com permissão de execução apenas ao "proprietário

chmod 700 nome_do_arquivo.ext # permissão de execução, leitura e escrita apenas ao "proprietário" arquivo

A partir do que expomos neste sub-item, é importante observar que o formato para dar permissão de execução a um determinado arquivo, por meio do Modo Octal, é diferente do formato que se dá por meio do "acréscimo de permissões" (sinal de adição "+") do Modo Textual, porém, é similar ao formato que se dá permissão de execução por meio da "redefinição de permissões" (sinal de igualdade "=") desse mesmo Modo Textual.

Enquanto que no primeiro formato do Modo Textual que expomos, o "acréscimo de permissões" ("+"), as permissões de atributos informadas como parâmetro se somam às permissões dos atributos já existentes do arquivo (apenas sendo possível, assim, ampliar as permissões; jamais restringi-las), aqui, no Modo Octal, assim como também no outro formato do Modo Textual, todos os atributos de permissão, de certa maneira, são redefinidos; as permissões de todos os atributos são sobrepostas pelos argumentos que compõem o novo parâmetro da atribuição (alguns atributos redefinidos a partir da explicitação desses atributos no argumento; outros, redefinidos por sua ausência no argumento).

Ou seja, na primeira forma de atribuição da permissão de execução do Modo Textual, logo, é possível definir apenas os atributos que se queiram, já no Modo Octal e na utilização do sinal de igualdade ("=") no Modo Textual, por sua vez, a definição das permissões dos atributos que se queiram, impreterivelmente, passa pela definição de todos os atributos ao mesmo tempo (seja essa definição realizada explicitamente ou implicitamente).

No primeiro caso, conforme vimos, é possível definir apenas o atributo de execução ("+x"), em que todos os outros atributos permanecem intactos; no segundo caso, conforme também vimos antes e agora, embora seja possível explicitarmos apenas parte dos atributos, necessariamente todos os atributos são redefinidos: o parâmetro informado define, sempre por completo, as permissões para todos os atributos de uma vez só.

O que distingue a "redefinição de permissões" por meio do uso do sinal de igualdade ("="), o segundo formato que expomos do Modo Textual, da redefinição dos atributos de permissão por meio do formato de atribuição do Modo Octal é que, para um, o parâmetro é formado por um conjunto de argumentos (exemplo: "=+xr"), para outro, o parâmetro é formado por um único argumento (exemplo: "5" {1+4=5} - em outros termos: {1+4+0=5} {permissão de execução+leitura | nenhuma permissão de escrita}).

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

Utilizando certificados e-CNPJ e e-CPF no Linux

Openfire integrado em uma floresta Active Directory

Como desabilitar RAID 1

ArchLinux: Configuração pós-instalação

Windows e Linux no mesmo micro

  
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