Eu estava tentando adicionar permissões de execução a arquivos sh em uma pasta. Para isso usei erroneamente:
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 para a parte find era
find . -iname '*.sh' -print0
Então criei outro achado assim:
find . \! -iname '*.sh' -print0 | xargs -0 chmod 600
para que eu possa redefinir as permissões para arquivos não-sh (sim, vejo que alguns arquivos têm 644 permissões, não 600, mas isso não importa agora). A saída para este 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 também usei sudo
, mas ainda nada...
Vejo que não entendo as permissões corretamente ... Se bem entendi, também preciso x
de permissões para o diretório direc
para executar comandos nesse diretório.
Responder1
Seu find
cmd também encontra o diretório atual " .
". Os direitos deste diretório serão então definidos 600
e, portanto, você perderá os direitos de tocar nos arquivos dentro deste diretório.
Então cd ..
, chmod 700
dito diretório e então execute sua reversão find
, que agora exclui o diretório atual, assim:
find . \! -path . \! -iname '*.sh' -print0 | xargs -0 chmod 600