Use a localização:
find /home/* -type d -maxdepth 0 -perm /g+w,o+rwx -exec chmod g-w,o-rwx '{}' +
Se você quiser fazer isso de forma recursiva, ao usar -R
em seus exemplos, use este
find /home/* -perm /g+w,o+rwx -exec chmod g-w,o-rwx '{}' +
Editar:
Breve explicação das opções de busca, para detalhes, veja man find
:
O -perm
junto com /mode
significa que qualquer um dos bits está definido.
A sintaxe clássica -exec
é -exec command '{}' ';'
. Os caracteres {}
são substituídos pelo nome do arquivo, as aspas estão lá para protegê-los do shell, na maioria dos shells isso não é necessário, mas não faz mal. O ';'
é o final do comando, aqui a cotação é necessária para a maioria dos shells, mas uma forma alternativa é \;
. A desvantagem é que há uma chamada para chmod por arquivo alterado. Isso é evitado com a forma alternativa em que o comando é finalizado com +
. Este formulário chama exec com muitos nomes e é, na verdade, semelhante a xargs
, e até economiza a sobrecarga de chamar xargs
.