linux用户的ID分几种

说实话,我一直觉得 Linux 系统中的 UID 和 GID 很有趣。
想想看,当你登录系统时,系统并不关心你的名字,它只是用一串数字来标识你的位置。
例如,root 帐户的 UID 始终为 0。
无论您使用哪种发行版,这都是固定的规则。
对于普通用户,UID 通常从 1 000 开始并向上计数。
我这几年遇到的系统基本上都是这样安排的。

/etc/passwd 文件实际上是 Linux 操作系统的核心内核之一。
我之前在实验室中更改过 UID,其中我将特定用户的 UID 从 5 00 更改为 2 000。
猜猜发生了什么? /etc/passwd 中的行最初是“guest:x:5 00:5 00:Guest User:/home/guest:/bin/bash”。
更改UID后,直接更改为“guest:x:2 000:5 00:Guest User:/home/guest:/bin/bash”。
但当我再次查看主目录时,系统不再识别用户名,文件属性中显示的所有者直接是2 000。
这直观地表明UID和用户名之间存在映射关系。
系统真正识别的是数字。

至于GID,这个东西和定义用户的“社交圈”很相似。
每个用户至少有一个主要组。
当我平时使用电脑时,我的主要群体通常是用户。
但系统中可能有好几个组,比如开发者组、管理员组等等。
上次管理服务器上的文件时,您更改了特定文件的 GID。
结果文件属性中显示的组名从Users变成了1 2 3 这实际上是系统根据GID从/etc/group中查找到的结果。
但要注意,修改GID有时比较烦人,因为它可能会影响大量文件权限。

权限特别有趣。
在Linux文件系统中,权限判断完全基于UID和GID。
例如,我目前正在维护一个网站服务器。
当您修改特定图像文件的权限时,系统还会检查访问者的UID是否是文件所有者的UID,或者GID是否是文件所属组的GID。
此机制可确保系统不会因用户名或组名的随机更改而不堪重负。
有趣的是,有的新手犯了一个错误,将主系统文件的UID改为普通用户的UID,直接导致系统崩溃。
因此,UID 和 GID 不会被意外更改- 特别是那些系统默认帐户,例如root和bin。
如果他们的 UID/GID 被更改,整个系统可能会被损坏。

我有一个朋友,不久前就差点掉进这个陷阱了。
在测试环境中,他将普通用户的UID更改为系统帐户的UID,结果服务器重启时出现蓝屏。
“我当时不明白,”他当时告诉我。
事实上,这是一次典型的UID冲突,破坏了系统的稳定性。
所以,我们团队现在已经明确规定,UID定制要按规范进行,特别是系统账号的UID,不能和普通用户混用。

我记得的数据是,大多数发行版默认普通用户从 1 000 人开始,但具体数字可能因发行版而异。
例如,Debian 系统通常从 1 000 开始,而 Red Hat 系统可能从 5 00 开始。
我个人并没有在所有发行版上运行过这个。
我建议你直接检查你所使用的Linux操作系统的具体配置。
无论如何,基本原理没有改变,系统底层仍然识别数字ID。

linux下用id命令显示为 uid=1001(user) gid=100(users) groups=100(users),16(dialout),33(video)

是的,这就是问题所在。
简单来说,Linux中的id命令是用来验证用户信息的。

uid=1 001 表示用户ID 为1 001
gid=1 00 表示主用户组为用户组。

groups=1 00,1 6 ,3 3 ,这些是附属组,例如用户、拨出和视频,允许用户访问这些组中的文件和资源。

主用户组和从用户组都称为用户,不影响主用户组还是从用户组。