É possível representar a permissão simbólica +X com um valor octal?

É possível representar a permissão simbólica +X com um valor octal?

É possível representar a permissão simbólica +X com um valor octal? A página de manual chmod(1) diz:

execute/pesquise somente se o arquivo for um diretório ou já tiver permissão de execução para algum usuário

o que significa que chmod -R g+Xadicionará a permissão de execução do grupo somente se já houver um bit de execução definido para usuário, grupo ou outro. Você certamente poderia fazer isso da maneira mais difícil com find:

find . -perm /ugo=x -exec chmod g+x {} \;

No entanto, não é óbvio como alguém poderia fazer a mesma coisa com um modo octal sem usarencontraroutestepara verificar as permissões do arquivo primeiro. Isso é possível ou existem algumas áreas onde as permissões simbólicas e octais simplesmente não se sobrepõem?

Responder1

O conto: não é possível, não.

A história mais longa: permissões octais são estados. A [+-][rwxXst]notação representa operationsque culminam na mudança de estados. Observe, não =[rwxXst]aquele, queconjuntosestado e é equivalente aos modos octais, como disse Gilles. Uma Xé a única operação condicional, as outras são todas incondicionais.

Ao criar chmodum arquivo com permissões octais, você fornece o finalestadodos bits de permissão literalmente. Ao usar as operações, você escolhe o que desejafeitopara os bits de permissão.

Sua pergunta equivale a perguntar se existe um único número que representa todas as raízes quadradas. A resposta é obviamente “não”: cada raiz quadradarendimentosum número (pedantes: embora possa ser imaginário/irracional), mas sem o inícioestado(o número), você não sabe qual.

Responder2

Os modos simbólicos são mais expressivos que os modos octais, porque os modos octais só podem expressar mudanças absolutas. Mudanças relativas, o que significa não apenas, +Xmas qualquer modo que não especifique todos os novos bits (como g+x— ou mesmo a+rwx, que não remove nenhum bit setuid/setgid), não podem ser expressas com modos octais.

Por outro lado, qualquer modo octal pode ser expresso como um modo simbólico, em geral usando =, por exemplo, 4750= u+rwxs,g=rx,o-rwxt(ou u=rwxs,g=rx,o=ou muitas outras combinações).

informação relacionada