Quais são as diferenças entre -perm / a + x, -perm / a = x, -perm -a = xe -perm -a + x com find?

0

Estou tão confuso em todas essas opções, porque sei que -perm /a+x significa arquivos que têm permissões executáveis para qualquer usuário e -perm -a+x significa arquivos que precisam ter permissões executáveis para todos os usuários, mas então quais são os diferenças entre a+x e a=x ?

[user@j6727961 ~]$ find -name 'perm*' -perm /a+x
./perm
./perm1
[user@j6727961 ~]$ find -name 'perm*' -perm /a=x
./perm
./perm1
[user@j6727961 ~]$ ll
total 57280
drwxrwxr-x. 2 user user       54 Dec  9 20:06 exercises
-rwxrwxrwx. 1 user user        0 Dec 10 21:08 perm
----rwxrwx. 1 user user        0 Dec 10 21:09 perm1
[user@j6727961 ~]$ find -name 'perm*' -perm -a=x
./perm
[user@j6727961 ~]$ find -name 'perm*' -perm -a+x
./perm
    
por VaTo 10.12.2016 / 22:30

1 resposta

1

Para fins de usá-lo com o find, nenhum bit será alterado, tanto a=x quanto a+x significam o mesmo.

Mas, em geral, as três opções são (o modo + é obsoleto):

 mode    # exactly
-mode    # ALL bits SET
/mode    # ANY bit  SET

Isso significa que mode 760 procurará arquivos com permissões exatamente 760 .

Um -mode 220 (em binário 010 010 000, ou -w - w ----) procurará todos os arquivos que tenham o bit de gravação para proprietário e grupo (ambos) definido, e qualquer outro bit também definido , não importa,
como 630 (110 011 000 ou rw-rx ---).

E um /mode 220 corresponderá a QUALQUER bit definido.
Como 220.230.360.270 e de fato:
qualquer (em binário) x1x x1x xxx, onde x significa "não se importa".

A outra maneira de expressar o conjunto de bits é:

a (for all)
u (for user)
g (for group) and
o (for others)

Um a+r significa o mesmo que a configuração (adição ou binário OR) r-- r-- r-- às permissões que um arquivo pode ter. Ou a + x significa (adiciona) --x - x - x ou 001001001 ou 111.

Então, misturando ambos:

  • perm a + x === > perm 111 === > Um arquivo que tem exatamente exatamente as permissoes 111
  • perm -a + x === > perm -111 === > Executável por u (ser) g (grupo) AND o (thers)
  • perm / a + x === > perm / 111 === > Executável por u (ser) g (grupo) OU o (thers)

O a=x ou a+x tem apenas um significado específico para o comando chmod .
O u+x altera o bit de execução (defina-o) para o usuário, ou seja, OR 100 . Mas o u=x irá limpar os outros dois bits para o usuário e deixar set apenas o bit de execução, tornando assim as permissões do usuário exatamente 1 .
Um chmod u+rwx file definirá os bits exatamente para 7 ou rwx para o usuário.
Um chmod u=rwx file fará exatamente o mesmo.

Para encontrar, nenhum bit será alterado, tanto a=x quanto a+x significam o mesmo.

    
por 10.12.2016 / 23:35

Tags