Como localizar todos os arquivos e pastas com 0 ** permissões?

3

Eu tive uma situação estranha em que encontrei vários arquivos e pastas que tinham 000 permissões configuradas. Isso foi facilmente reparável via:

sudo find . -perm 000 -type f -exec chmod 664 {} \; 
sudo find . -perm 000 -type d -exec chmod 775 {} \;

Infelizmente, de repente, percebi que o problema era um pouco mais complicado com algumas permissões estranhas, como 044 e algumas outras configurações estranhas. Acontece que estes estão espalhados e imprevisíveis.

Existe uma maneira de procurar permissões como 0 ** ou outras configurações de permissão limitantes?

    
por ylluminate 27.08.2018 / 15:25

3 respostas

8

Eu usaria algo assim:

find . ! -perm -u=r ! -perm -u=w ! -perm -u=x -ls

Ou se você preferir a notação octal:

find . ! -perm -400 ! -perm -200 ! -perm -100 -ls

Infelizmente, não faço ideia de como considerá-lo como uma opção -perm .

Essa sintaxe acima é padrão, exceto pela -ls part (comum, mas não POSIX), que você pode substituir com -exec ls -disl {} + em sistemas em que find não suporta -ls para obter uma saída semelhante.

    
por 27.08.2018 / 15:53
7

Com GNU find , você pode fazer isso procurando por arquivos que não corresponde a "qualquer bit definido para o proprietário":

find . ! -perm /700

O mesmo em e. FreeBSD find é

find . ! -perm +700

Ambos funcionam da mesma maneira. -perm /700 ou -perm +700 correspondem se algum dos bits de permissão do proprietário estiver definido; ! nega isso, então ! -perm /700 ou ! -perm +700 correspondem se nenhum dos bits de permissão do proprietário estiver definido. Os outros bits são ignorados.

    
por 27.08.2018 / 15:29
1

Se você usa sfind ou qualquer programa usando libfind ou se você usa BSD find , você pode usar:

find path -perm +0xxx

para encontrar arquivos onde qualquer um dos bits mencionados no padrão estão definidos, então

find . ! -perm +0700

deve funcionar no seu caso. BTW: isso também é suportado por GNU find .

Note que esta é uma extensão que não é mencionada no POSIX nem implementada em find baseado em SVr4.

    
por 27.08.2018 / 16:11