Linux中的用户ID会不会重复?

文章目录

UID指的是用户的ID(User ID),一个用户的UID标识一个给定用户,UID是用户的唯一标识符,通过UID可以区分不同的用户类别,比如UID为0的是超级用户,UID为1000-600000之间的是普通用户,而UID为1-999之间的是虚拟用户。

  • 超级用户:也称为root用户,UID为0,拥有系统的完全控制权限,可以进行修改、删除文件等操作。
  • 普通用户:也成为一般用户,UID为1000-60000之间,可以对自己目录下的文件进行访问和修改,也可以对经过授权的文件进行访问。
  • 虚拟用户:也称为系统用户,UID为1-999之间,不提供密码登录系统,它们的存在主要是为了方便系统的管理。

Linux中的用户ID会不会重复?会,可以人为将多个不用户的ID配置为重复的ID。

用户在登录系统时,是通过UID来区分用户,而不是通过用户名来区分
实验步骤:
1、创建一个UID为1000的用户user02,再创建一个相同id的user01,通过id命令,发现两个用户都显示为user02

1
2
3
4
5
6
[root@kvm-hkcloud01 ~]# useradd -u 1000 user02
[root@kvm-hkcloud01 ~]# useradd -u 1000 -o user01
[root@kvm-hkcloud01 ~]# id user01
uid=1000(user02) gid=1002(user02) groups=1002(user02)
[root@kvm-hkcloud01 ~]# id user02
uid=1000(user02) gid=1002(user02) groups=1002(user02)

2、切换到user01下,发现名称还是user02,但是组信息变为了user01的

1
2
3
4
5
[root@kvm-hkcloud01 ~]# su - user01
Last login: Tue Jun 18 11:35:27 CST 2024 on pts/0
[user02@kvm-hkcloud01 ~]$ id
uid=1000(user02) gid=1003(user01) groups=1003(user01)
[user02@kvm-hkcloud01 ~]$

3、当user02的uid发生改变时,再查看user01的信息,因为没有重复的id的情况下,用户名就能正常的显示user01了

1
2
3
4
5
[root@kvm-hkcloud01 ~]# usermod -u 1001 user02
[root@kvm-hkcloud01 ~]# id user02
uid=1001(user02) gid=1002(user02) groups=1002(user02)
[root@kvm-hkcloud01 ~]# id user01
uid=1000(user01) gid=1003(user01) groups=1003(user01)

4、当我再将user02的uid修改为1000的时候,再查看user01的信息,发现user01的用户名又显示为user02了

1
2
3
4
5
[root@kvm-hkcloud01 ~]# usermod -u 1000 -o user02
[root@kvm-hkcloud01 ~]# id user02
uid=1000(user02) gid=1002(user02) groups=1002(user02)
[root@kvm-hkcloud01 ~]# id user01
uid=1000(user02) gid=1002(user02) groups=1002(user02)

那么,当UID重复的时候,是谁决定了用哪个用户名作为显示呢?
想一想,哪个文件记录了UID信息?没错,是/etc/passwd当我将user01和user02的行进行调转之后(user01)在前,使用id查看的时候,显示的用户名就是user01了

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 修改前
[root@kvm-hkcloud01 ~]# tail -n 2 /etc/passwd
user02:x:1000:1002::/home/user02:/bin/bash
user01:x:1000:1003::/home/user01:/bin/bash
[root@kvm-hkcloud01 ~]# id user01
uid=1000(user02) gid=1002(user02) groups=1002(user02)
[root@kvm-hkcloud01 ~]# id user02
uid=1000(user02) gid=1002(user02) groups=1002(user02)
[root@kvm-hkcloud01 ~]# vi /etc/passwd
# 修改后
[root@kvm-hkcloud01 ~]# tail -n 2 /etc/passwd
user01:x:1000:1003::/home/user01:/bin/bash
user02:x:1000:1002::/home/user02:/bin/bash
[root@kvm-hkcloud01 ~]# id user01
uid=1000(user01) gid=1003(user01) groups=1003(user01)
[root@kvm-hkcloud01 ~]# id user02
uid=1000(user01) gid=1003(user01) groups=1003(user01)