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

5

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

execute/search only if the file is a directory or already has execute permission for some user

, o que significa que chmod -R g+X adicionará 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 o 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 usar find ou test para verificar as permissões do arquivo primeiro. Isso é possível ou há algumas áreas em que as permissões simbólicas e octal simplesmente não se sobrepõem?

    
por CodeGnome 26.06.2012 / 02:05

2 respostas

3

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

A história mais longa: as permissões octal são estados. A notação [+-][rwxXst] representa operations que culminam na mudança de estados. Note, não o =[rwxXst] one, que define estado e é equivalente aos modos octal como Gilles disse. O X one é a única operação condicional, os outros são todos incondicionais.

Quando você chmod um arquivo com permissões octal, você fornece o estado final dos bits de permissão textualmente. Quando você usa as operações, você escolhe o que você quer fazer > para os bits de permissão.

Sua pergunta é equivalente a perguntar se há um único número que represente todas as raízes quadradas. As respostas são obviamente 'não': toda raiz quadrada produz um número (pedantes: embora possa ser imaginário / irracional), mas sem o estado inicial (o número), você não pode dizer qual.

    
por 26.06.2012 / 02:18
4

Os modos simbólicos são mais expressivos que os octal, porque os modos octal só podem expressar mudanças absolutas. Alterações relativas, o que significa não apenas +X , mas 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 pode ser expresso com modos octal.

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

    
por 26.06.2012 / 02:17