📜  Linux 中真实、有效和保存的用户 ID(1)

📅  最后修改于: 2023-12-03 15:32:41.568000             🧑  作者: Mango

Linux 中真实、有效和保存的用户 ID

在 Linux 系统中,有三种不同的用户 ID:真实用户 ID(UID)、有效用户 ID(EUID)和保存的用户 ID(SUID)。这些 ID 可以用于执行不同的操作和验证用户身份。

真实用户 ID

真实用户 ID 是登录系统的用户的 ID。当用户登录到系统时,他们的真实 UID 用于标识他们。

在 Linux 中,可以使用 id 命令来查看你的真实 UID:

$ id -u
1000

上面的命令将输出你的真实 UID,也可以通过 whoami 命令来获取当前登录用户的用户名和 UID:

$ whoami
user
$ id -u user
1000
有效用户 ID

有效用户 ID 用于验证用户是否具有执行操作的权限。一些命令和程序需要特定的权限才能正常工作,这时需要验证用户(或进程)的有效 UID 是否具有要求权限。

一旦用户执行一个 SUID 程序,系统会将有效 UID 设置为 SUID 程序的所有者 UID。可以使用 id 命令来查看有效 UID:

$ id -u
1000
$ sudo id -u
0

上面的命令首先打印当前用户的 UID,然后通过 sudo 命令以 root 用户身份运行 id 命令,此时的有效 UID 就是 0。

保存的用户 ID

保存的用户 ID 是一个与进程相关的概念。当进程运行 setuid 系统调用时,进程的保存 UID 被设置为进程的真实 UID。保存 UID 在一些情况下很有用,例如当进程需要以不同的用户身份运行命令时。

可以使用 ps 命令来查看进程的 UID、EUID 和 SUID:

$ ps -o pid,user,uid,euid,suid,cmd

上面的命令将输出每个进程的 PID、用户名、UID、EUID、SUID 和命令。

在 Linux 中,了解不同类型的用户 ID 对于管理进程时非常重要,也有助于在需要以不同身份进行特定操作时识别正确的用户。