
Tive uma situação estranha em que encontrei vários arquivos e pastas com 000 permissões definidas. Isso foi facilmente reparável por meio de:
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 muito limitantes?
Responder1
Eu usaria algo assim:
find . ! -perm -u=r ! -perm -u=w ! -perm -u=x -ls
Ou se preferir a notação octal:
find . ! -perm -400 ! -perm -200 ! -perm -100 -ls
Infelizmente, não tenho ideia de como considerar isso uma -perm
opção.
A sintaxe acima é padrão, exceto para a -ls
parte (comum, mas não POSIX) que você pode substituir em -exec ls -disl {} +
sistemas onde find
não há suporte -ls
para obter uma saída semelhante.
Responder2
ComGNUfind
, você pode fazer isso procurando por arquivos que não correspondam a “nenhum bit definido para o proprietário”:
find . ! -perm /700
O mesmo em, por exemploFreeBSDfind
é
find . ! -perm +700
Ambos funcionam da mesma maneira. -perm /700
ou -perm +700
combine se algum dos bits de permissão do proprietário estiver definido; !
nega isso, então ! -perm /700
ou ! -perm +700
match se nenhum dos bits de permissão do proprietário estiver definido. Os outros bits são ignorados.
Responder3
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á definido, então
find . ! -perm +0700
deve funcionar no seu caso. Aliás: isso também é suportado por GNU find
.
Observe que esta é uma extensão que não é mencionada no POSIX nem implementada em um arquivo find
.