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".