Solution 1 :
Cela devrait faire l'affaire :
find /home/user -type d -print0 | xargs -0 chmod 0775
find /home/user -type f -print0 | xargs -0 chmod 0664
Solution 2 :
find peut faire l'affaire seul avec -exec :
find /home/user -type f -exec chmod 0664 {} \;
find /home/user -type d -exec chmod 0775 {} \;
pour empêcher find de générer un chmod pour chaque entrée :
find /home/user -type f -exec chmod 0664 {} +
find /home/user -type d -exec chmod 0775 {} +
(cela appelle effectivement chmod une fois avec la liste de tous les fichiers comme paramètres plutôt qu'un chmod par fichier)
Solution 3 :
Cette réponse ne résoudra pas votre problème, mais quelqu'un pourrait la trouver utile pour un problème similaire où les fichiers ont moins d'autorisations qu'ils ne le devraient.
# chmod -R . u=rwX,g=rX,o=rX
La magie est la permission X, plutôt que x. La page de manuel chmod le décrit ainsi :
exécuter/rechercher uniquement si le fichier est un répertoire ou a déjà l'autorisation d'exécution pour certains utilisateurs
Cela ne convient pas dans votre cas car vos fichiers ont l'autorisation d'exécution et correspondront donc au deuxième test.