Linux中UID

时间:2020-03-05 15:29:57  来源:igfitidea点击:

Linux中的UID是什么?

UID代表用户标识符。
UID是分配给每个Linux用户的数字。
它是用户在Linux内核中的表示形式。

UID用于标识系统内的用户并确定用户可以访问哪些系统资源。
这就是为什么用户ID应该唯一的原因。

我们可以找到存储在/etc/passwd文件中的UID。
该文件可用于列出Linux系统中的所有用户。

使用Linux命令查看文本文件,我们将看到有关系统中存在的用户的各种信息。

root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
johndoe:x:1000:1000:John Doe,,,:/home/helder:/bin/bash
davmail:x:127:65534::/var/lib/davmail:/usr/sbin/nologin
statd:x:128:65534::/var/lib/nfs:/usr/sbin/nologin

这里的第三个字段代表用户ID或者UID。

请注意,在大多数Linux发行版中,UID 1-500通常保留给系统用户使用。
在Ubuntu和Fedora中,新用户的UID从1000开始。

例如,如果我们使用adduser或者useradd命令创建一个新用户,它将获得1000之后的下一个可用数字作为其UID。

在Linux中,UID 0和GID 0保留给root用户。

如何在Linux中找到用户的UID?

我们始终可以依靠/etc/passwd文件来获取用户的UID。
这不是在Linux中获取UID信息的唯一方法。

Linux中的id命令将显示当前用户所属的UID,GID和组:

id
uid=1000(igi) gid=1000(igi) groups=1000(igi),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),116(lpadmin),126(sambashare),127(kvm)

我们还可以使用id命令指定用户名,以获取任何Linux用户的UID:

id standard
uid=1001(standard) gid=1001(standard) groups=1001(standard)

如何在Linux中更改用户的UID?

假设Linux系统上有多个用户。
我们必须删除用户,因为他/她离开了组织。
现在,我们希望其UID由系统上已有的另一个用户使用。

我们可以通过使用usermod命令修改用户来更改UID,如下所示:

usermod -u 1004 user_2

我们需要具有超级用户特权才能执行上述命令。

我们还记得Linux中的文件许可权和所有权概念吗?
文件的所有权由所有者用户的UID确定。

更新用户的UID时,该用户拥有的文件会如何处理?
尽管user_2主目录中的所有文件都将更改其关联的UID,但我们必须手动更新外部其他文件的关联的UID主目录。

我们可以做的是手动更新与user_2的旧UID相关联的文件的所有权。

find/-user old_uid_of_user_2 -exec chown -h user_2 {} \;