Por que não consigo chmodar esses arquivos como antes?

Por que não consigo chmodar esses arquivos como antes?

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 xde permissões para o diretório direcpara executar comandos nesse diretório.

Responder1

Seu findcmd também encontra o diretório atual " .". Os direitos deste diretório serão então definidos 600e, portanto, você perderá os direitos de tocar nos arquivos dentro deste diretório.

Então cd .., chmod 700dito 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

informação relacionada