Assumindo que todas as pastas no diretório / home / representam nomes de usuários, você pode usar:
for dir in /home/*/; do
# strip trailing slash
homedir="${dir%/}"
# strip all chars up to and including the last slash
username="${homedir##*/}"
case $username in
*.*) continue ;; # skip name with a dot in it
esac
chown -R "$username" "$dir"
done
Sugiro executar um loop de teste antes, verificando se o nome do usuário realmente corresponde a um diretório base.
Este comando AWK recupera o diretório inicial de um determinado usuário.
awk -F: -v user="$username" '{if($1 == user){print $6}}' < /etc/passwd
A verificação desse resultado em relação ao diretório inicial existente é um exercício para o leitor.