我做了一些研究,并注意到在更改UID和GID时应该考虑的两件事:
>数字UID和GID并不总是匹配:在我的情况下id -u MysqL = 120和id -g MysqL = 127
>并非所有文件都由用户’MysqL’和组’MysqL’同时拥有:应分别搜索这些文件.
因此,我们首先更改UID和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
然后我们分别找到已故用户和组所拥有的文件:’user = MysqL’转到一个文件,’group = MysqL’转到另一个文件.我们还从find遍历树中排除了一些目录:
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" \) \)
只有现在可以更改找到的这些文件的所有者和组:
cat "$chownlist" | xargs -0 sudo chown $user
cat "$chgrplist" | xargs -0 sudo chown :$group
sudo rm "$chownlist" "$chgrplist"
最后,我们检查一切是否正常:找到GID未知UID所拥有的文件:
sudo find / \( \( -path "/proc" -or -path "/sys" -or -path "/dev" \) -prune \) -or \( -nouser -or -nogroup -print \)
希望这有助于某人.