linux – 如何更改用户的UID和GID以及由此产生的结果

linux – 如何更改用户的UID和GID以及由此产生的结果,第1张

概述我在拇指驱动器上有 MySQL数据文件,用于mysql用户的UID不同的两个主机上.因此,当MySQL的文件具有0700 perms且未知UID作为所有者时,MySQL无法启动. 我没有找到如何更改MySQL的umask(实际上我不喜欢将这些文件共享给每个人的想法),因此我想在两台主机上更改mysql用户的UID,以便文件属于同一用户. 我要更改UID并将旧mysql UID拥有的所有文件chow 我在拇指驱动器上有 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 uIDolduID=67   find / -user $olduID -group $olduID -print0 | xargs -0 chown "MysqL:MysqL"

这是否足以使应用程序在一般情况下工作?
也许,我有更好的选择?

解决方法 我做了一些研究,并注意到在更改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 $usersudo 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 $usercat "$chgrpList" | xargs -0 sudo chown :$groupsudo rm "$chownList" "$chgrpList"

最后,我们检查一切是否正常:找到GID未知UID所拥有的文件:

sudo find / \( \( -path "/proc" -or -path "/sys" -or -path "/dev" \) -prune \) -or \( -nouser -or -nogroup -print \)

希望这有助于某人.

总结

以上是内存溢出为你收集整理的linux – 如何更改用户的UID和GID以及由此产生的结果全部内容,希望文章能够帮你解决linux – 如何更改用户的UID和GID以及由此产生的结果所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/1040489.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存