Lösung 1:
Das sollte funktionieren:
find /home/user -type d -print0 | xargs -0 chmod 0775
find /home/user -type f -print0 | xargs -0 chmod 0664
Lösung 2:
find kann den Trick alleine mit -exec:
machenfind /home/user -type f -exec chmod 0664 {} \;
find /home/user -type d -exec chmod 0775 {} \;
um zu verhindern, dass find für jeden Eintrag ein chmod spawnt:
find /home/user -type f -exec chmod 0664 {} +
find /home/user -type d -exec chmod 0775 {} +
(Dies ruft effektiv chmod einmal mit der Liste aller Dateien als Parameter auf und nicht ein chmod pro Datei)
Lösung 3:
Diese Antwort wird Ihr Problem nicht lösen, aber jemand könnte sie für ein ähnliches Problem nützlich finden, bei dem Dateien weniger Berechtigungen haben, als sie sollten.
# chmod -R . u=rwX,g=rX,o=rX
Die Magie ist die X-Berechtigung, eher als x. Die chmod-Manpage beschreibt es folgendermaßen:
nur ausführen/suchen, wenn die Datei ein Verzeichnis ist oder bereits Ausführungsrechte für einen Benutzer hat
Dies ist in Ihrem Fall nicht geeignet, da Ihre Dateien Ausführungsberechtigungen haben, also mit dem zweiten Test übereinstimmen.