linux – 如何更改用户的UID和GID以及由此产生的结果
发布时间:2020-12-13 17:08:34 所属栏目:Linux 来源:网络整理
导读:我在拇指驱动器上有 MySQL数据文件,用于mysql用户的UID不同的两个主机上.因此,当MySQL的文件具有0700 perms且未知UID作为所有者时,MySQL无法启动. 我没有找到如何更改MySQL的umask(实际上我不喜欢将这些文件共享给每个人的想法),因此我想在两台主机上更改mys
我在拇指驱动器上有
MySQL数据文件,用于mysql用户的UID不同的两个主机上.因此,当MySQL的文件具有0700 perms且未知UID作为所有者时,MySQL无法启动.
我没有找到如何更改MySQL的umask(实际上我不喜欢将这些文件共享给每个人的想法),因此我想在两台主机上更改mysql用户的UID,以便文件属于同一用户. 我要更改UID并将旧mysql UID拥有的所有文件chown给新用户: usermod --uid 900 --gid 900 mysql # assign the new uid olduid=67 find / -user $olduid -group $olduid -print0 | xargs -0 chown "mysql:mysql" 这是否足以使应用程序在一般情况下工作? 解决方法
我做了一些研究,并注意到在更改UID和GID时应该考虑的两件事:
>数字UID和GID并不总是匹配:在我的情况下id -u mysql = 120和id -g mysql = 127 因此,我们首先更改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 ) 希望这有助于某人. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |