Como eu encontraria permissões de arquivos desiguais dentro de uma estrutura de diretórios?

1

Como eu poderia encontrar as permissões de arquivos / diretórios irregulares dentro de uma estrutura de diretórios? Eu fiz algumas tentativas de usar o comando find similar a:

find /bin ! \( -perm 777 -o -perm 776 -o -perm 775 -o -perm 774 -o -perm 773 -o -perm 772 -o -perm 771 -o -perm 770 -o -perm 760 -o -perm 750 -o -perm 740 -o -perm 730 -o -perm 720 -o -perm 710 -o -perm 700 -o -perm 600 -o -perm 500 -o -perm 400 , mas acabo a linha de comando antes de concluir as permutações restantes, além de um -exec ls -lL {} \;

Eu também tenho feito coisas manuais semelhantes a:

ls -lL /bin | grep -v ^-rwxr-xr-x | grep -v ^-rwx--x--x | grep -v ^-rwsr-xr-x | grep -v ^-r-xr-xr-x | grep -v ^-rwxr-xr-t , mas novamente, acabo a linha de comando antes de concluir as permutações restantes.

Ambos os métodos parecem estranhamente estranhos. Existe uma maneira melhor, mais rápida e mais fácil? Note que estou restrito no shell que estou usando (sh) e plataforma (Irix 6.5.22).

    
por Rob 25.10.2016 / 01:08

1 resposta

0

você está procurando por arquivos executáveis?

find . -type f -perm /+x

de qualquer forma, o modo / é mais do que provável que seja seu amigo ... aqui está a página do manual:

   -perm /mode
          Any  of  the  permission  bits mode are set for the file.  Symbolic modes are accepted in this form.  You must specify 'u', 'g' or 'o' if you use a symbolic mode.  See the
          EXAMPLES section for some illustrative examples.  If no permission bits in mode are set, this test matches any file (the idea here is to be consistent with  the  behaviour
          of -perm -000).

ATUALIZAÇÃO: certo, eu pensei que você estivesse procurando números ímpares (os executáveis) ...

isso deve funcionar (ainda usando o terceiro parâmetro de perm de find

dados da amostra:

$ ls
000  001  002  003  004  005  006  007  010  020  030  040  050  060  070  100  200  300  400  500  600  700

comando Localizar:

$ find . -type f \( -perm /u-x,g+x -o -perm /u-w,g+w -o -perm /u-r,g+r -o -perm /g-x,o+x -o -perm /g-w,o+w -o -perm /g-r,o+r -o -perm /u-x,o+x -o -perm /u-w,o+w -o -perm /u-r,o+r \) | sort
./001
./002
./003
./004
./005
./006
./007
./010
./020
./030
./040
./050
./060
./070

Basicamente você está dizendo, me dê arquivos onde o grupo tem perms mas o proprietário não, ou arquivos onde o mundo tem perms mas o grupo não, ou onde o mundo tem perms mas o proprietário não.

nota: o find tem 3x perm params;

  • perm mode
  • perm -mode
  • perm /mode

ps Não tenho muita certeza do valor disso ...

    
por 25.10.2016 / 01:20