chmod -R o-w .
Removerá as permissões de gravação para outras para todos os arquivos de forma segura. No entanto, ele atualizará o ctime de todos os arquivos, incluindo aqueles para os quais outros já não tinham acesso de gravação.
Com o GNU chmod
, você pode mostrar quais arquivos precisam ser atualizados com a opção -c:
$ chmod -cR o-w .
mode of './a' changed from 0777 (rwxrwxrwx) to 0775 (rwxrwxr-x)
Se você quiser apenas remover w
de outros , onde eles têm rwx
, você pode fazer:
find . ! -type l -perm -7 -exec chmod o-w {} +
(e adicione -vv
com GNU ou FreeBSD chmod
para ver os detalhes). Mas (especialmente desde que você está lidando com arquivos graváveis do mundo), tenha cuidado com uma condição de corrida lá, onde alguém com más intenções tendo acesso de escrita a qualquer um dos diretórios pode substituir um arquivo por um link simbólico para outro arquivo entre as horas find
verifica e chmod
é executado e você remove as permissões de gravação do arquivo e causa estragos (pense em um link simbólico para /tmp
, por exemplo).
Como você está usando a sintaxe stat
do GNU, as chances são de que seu find
seja o GNU find
. Observe que o GNU find
pode exibir atributos de arquivos muito antes de o GNU stat
ser introduzido, portanto você não precisa dos dois.
find . ! -type l -perm -7 -printf '%m %p\n' -exec chmod o-w {} +