Como posso encontrar todos os arquivos para os quais não tenho acesso de gravação na pasta específica?

6

Como posso encontrar todos os arquivos que não posso gravar?

Seria bom se levasse em consideração as permissões padrão e as contas.

Existe uma maneira "fácil" ou eu mesmo tenho que analisar as permissões?

    
por Alex 19.02.2018 / 16:06

2 respostas

17

Tente

find . ! -writable

o comando file lista os arquivos, -writable filtra apenas o que você tem permissão de escrita e o ! inverte o filtro

Você pode adicionar -type f se quiser ignorar os diretórios e outros 'arquivos especiais'

    
por 19.02.2018 / 16:17
2

Em sistemas e sistemas não Linux sem GNU find , é provável que o seguinte forneça a mesma saída que find . -type f ! -writable , mas não leva em conta grupos secundários.

myname=$( id -un )
mygroup=$( id -gn )

find . -type f '(' \
       '('   -user "$myname"                     ! -perm -u=w ')' -o \
       '(' ! -user "$myname"   -group "$mygroup" ! -perm -g=w ')' -o \
       '(' ! -user "$myname" ! -group "$mygroup" ! -perm -o=w ')' ')'

Os quatro testes em ordem:

  1. É um arquivo normal?
  2. É um arquivo que eu possuo, mas não tenho permissões de gravação?
  3. É um arquivo que eu não possuo, mas que pertence ao meu grupo e que eu não tenho permissões de gravação de grupo para?
  4. É um arquivo que eu não possuo e que não pertence ao meu grupo, e que eu não tenho permissões de gravação gerais ("outras") para?

O benefício disso é que você pode substituir o nome e grupo de outro usuário, o que eu acho que o find do GNU -writable permite que você faça.

O mesmo comando, mas com a lógica escrita em formato AND:

find . -type f \
    ! '('   -user "$myname"                     -perm -u=w ')' \
    ! '(' ! -user "$myname"   -group "$mygroup" -perm -g=w ')' \
    ! '(' ! -user "$myname" ! -group "$mygroup" -perm -o=w ')'
    
por 09.04.2018 / 18:47