Por que não posso chmodar esses arquivos antes?

3

Eu estava tentando adicionar permissões de execução a arquivos sh em uma pasta. Para isso eu usei por engano:

find . -print0 -iname '*.sh' | xargs -0 chmod -v 744

e a saída foi:

mode of '.' changed from 0755 (rwxr-xr-x) to 0744 (rwxr--r--)
mode of './codis.sh' changed from 0644 (rw-r--r--) to 0744 (rwxr--r--)
mode of './ne fil.sw' changed from 0644 (rw-r--r--) to 0744 (rwxr--r--)
mode of './.whois1.sh.swo' changed from 0644 (rw-r--r--) to 0744 (rwxr--r--)
mode of './new file' changed from 0644 (rw-r--r--) to 0744 (rwxr--r--)
mode of './ezik.sh' changed from 0644 (rw-r--r--) to 0744 (rwxr--r--)
mode of './.whois1.sh.swp' changed from 0600 (rw-------) to 0744 (rwxr--r--)
mode of './whois1.sh' retained as 0744 (rwxr--r--)

Agora sei que o uso correto da parte do find foi

find . -iname '*.sh' -print0

Então eu criei outro encontro assim:

find . \! -iname '*.sh' -print0 | xargs -0 chmod 600

para que eu possa voltar as permissões para arquivos não-sh (sim, vejo que alguns arquivos têm 644 perms, não 600, mas isso não importa agora). A saída deste comando é:

chmod: cannot access './ne fil.sw': Permission denied
chmod: cannot access './.whois1.sh.swo': Permission denied
chmod: cannot access './new file': Permission denied
chmod: cannot access './.whois1.sh.swp': Permission denied

Eu usei sudo também, mas ainda nada ...

Eu vejo que não entendo permissons corretamente ... Se bem entendi eu preciso de x permisions para o diretório direc também para executar comandos no dito diretório.

    
por user293496 24.06.2014 / 04:39

1 resposta

2

Seu find cmd também encontra o diretório atual " . ". Os direitos desse diretório serão então definidos como 600 e, portanto, você perderá os direitos para tocar nos arquivos dentro desse diretório.

Então, cd .. , chmod 700 disse o diretório e, em seguida, execute sua reversão find , que agora exclui o diretório atual, assim:

find . \! -path . \! -iname '*.sh' -print0 | xargs -0 chmod 600
    
por 24.06.2014 / 04:50