como encontrar arquivos com permissões incorretas no unix?

14

Estou procurando uma maneira de pesquisar um diretório ou diretórios e listar todos os arquivos que têm permissões erradas para um diretório público.

sal
fonte

Respostas:

15

Sua pergunta pode ser expressa com mais clareza, esp. o que você quer dizer com "permissões erradas" para um diretório público?

Supondo que você deseja que os diretórios sejam 755 e os arquivos comuns sejam 644, eu faria assim:

$ find \! -perm 644 -type f -o \! -perm 755 -type d
0x89
fonte
O que o -o faz? Isso significa algo como OU?
3
Nesse caso em particular, o RTFM não é uma resposta muito útil, considerando os vários níveis de configurações de localização; é particularmente confuso tentar descobrir se o -o está associado ao -type ou -perm.
Lighthart
Eu me permito discordar. A pergunta era "O que o -o faz? Isso significa algo como OR?". Isso é perfeitamente respondido pela página de manual: "expr1 -o expr2 Ou; expr2 não é avaliado se expr1 for verdadeiro."
0x89
Btw. sua pergunta sobre precedência é tratada no mesmo parágrafo da página de manual: "OPERADORES Listados em ordem decrescente de precedência" e "Duas expressões em uma linha são usadas para serem unidas a um implícito 'e'; expr2 não é avaliado se expr1 for falso.").
0x89
5

Isso funcionou para mim

find .  \! -perm +755

O \!sinalizador significa que não e a -permopção usa as opções chmod normais

sal
fonte
3

Tudo depende do que você considera 'permissão incorreta'. O man find ajuda a definir a maneira como você pode procurar arquivos / diretórios com a permissão dada:

   -perm -mode
          All of the permission bits mode are set for the file.  Symbolic modes are
          accepted in this form, and this is usually the way in which would want to
          use them.  You must specify ‘u’, ‘g’ or ‘o’ if you use a  symbolic  mode.
          See the EXAMPLES section for some illustrative examples.

   -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).

   -perm +mode
          Deprecated,  old  way  of  searching for files with any of the permission
          bits in mode set.  You should use -perm /mode instead. Trying to use  the
          ‘+’  syntax with symbolic modes will yield surprising results.  For exam‐
          ple, ‘+u+x’ is a valid symbolic mode (equivalent to +u,+x, i.e. 0111) and
          will  therefore  not be evaluated as -perm +mode but instead as the exact
          mode specifier -perm mode and so it matches files with exact  permissions
          0111  instead of files with any execute bit set.  If you found this para‐
          graph confusing, you’re not alone - just use -perm /mode.  This  form  of
          the -perm test is deprecated because the POSIX specification requires the
          interpretation of a leading ‘+’ as being part of a symbolic mode, and  so
          we switched to using ‘/’ instead.

asdmin
fonte