Fiz algumas pesquisas e notei duas coisas que uma pessoa deve levar em conta ao alterar os UIDs e os GIDs:
- UID numérico e GID nem sempre correspondem: no meu caso
id -u mysql
= 120 eid -g mysql
= 127 - Nem todos os arquivos pertencem ao usuário 'mysql' e ao grupo 'mysql' simultaneamente: esses arquivos devem ser pesquisados separadamente.
Portanto, primeiro mudamos o UID e o GID:
user=mysql new_uid=600 old_uid=$(id -u $user)
group=mysql new_gid=600 old_gid=$(id -g $user)
sudo usermod -u $new_uid $user
sudo groupmod -g $new_gid $group
Então, find
para arquivos pertencentes ao usuário final e ao grupo separadamente: 'user = mysql' vai para um arquivo, 'group = mysql' vai para outro arquivo. Também excluímos alguns diretórios de find
traversing tree:
chownlist=$(tempfile) chgrplist=$(tempfile) sudo find / \
\( \( -path "/proc" -or -path "/sys" -or -path "/dev" \) -prune \) -or \
\( \( -user $old_uid -fprint0 "$chownlist" \) , \
\( -group $old_gid -fprint0 "$chgrplist" \) \)
E somente agora não há problema em alterar proprietários e grupos para esses arquivos encontrados:
cat "$chownlist" | xargs -0 sudo chown $user
cat "$chgrplist" | xargs -0 sudo chown :$group
sudo rm "$chownlist" "$chgrplist"
Por fim, verificamos se tudo correu bem: encontrar arquivos de propriedade de UIDs desconhecidos de GIDs:
sudo find / \( \( -path "/proc" -or -path "/sys" -or -path "/dev" \) -prune \) -or \( -nouser -or -nogroup -print \)
Espero que isso ajude alguém.