
Como eu poderia encontrar permissões irregulares de arquivo/diretório dentro de uma estrutura de diretório? Fiz algumas tentativas de usar o comando find semelhante 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 fico sem linha de comando antes de poder completar as permutações restantes mais um-exec ls -lL {} \;
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, fico sem linha de comando antes de poder concluir as permutações restantes.
Ambos os métodos parecem estranhamente estranhos. Existe uma maneira melhor, mais rápida e mais fácil? Observe que estou restrito ao shell que estou usando (sh) e à plataforma (Irix 6.5.22).
Responder1
você está procurando arquivos executáveis?
find . -type f -perm /+x
independentemente, o modo / é mais do que provável que seja seu amigo... aqui está a página de 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, pensei que você estivesse procurando números ímpares (executáveis) ...
isso deve funcionar (ainda usando o terceiro parâmetro permanente do find
dados de 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: forneça-me arquivos onde o grupo tenha permissões, mas o proprietário não, ou arquivos onde o mundo tenha permissões, mas o grupo não, ou onde o mundo tenha permissões, mas o proprietário não.
nota: find tem 3x parâmetros permanentes;
- modo permanente
- modo permanente
- permissão /modo
ps: Não tenho muita certeza do valor disso ...