在linux中,用户id(User ID,简称UID)是指用户标识符,与用户名唯一对应;在类UNIX系统中它是内核用来辨识用户的一个无符号整型数值,亦是UNIX文件系统与进程的必要组成部分之一。用户的UID大于500的都是非系统账号,500以下的都为系统保留的账号,比如root账号,至高权限的账号的UID为0;创建用户的时候默认的账号的UID都是大于500。
本教程操作环境:linux7.3系统、Dell G3电脑。
登陆 Linux 系统时,虽然输入的是自己的用户名和密码,但其实 Linux 并不认识你的用户名称,它只认识用户名对应的 ID 号(也就是一串数字)。Linux 系统将所有用户的名称与 ID 的对应关系都存储在 /etc/passwd 文件中。
Linux 系统中,每个用户的 ID 细分为 2 种,分别是用户 ID(User ID,简称 UID)和组 ID(Group ID,简称 GID),这与文件有拥有者和拥有群组两种属性相对应。下面就来带大家了解一下用户ID(UID)。
linux 用户ID(UID)
用户ID(英语:user identifier,一般缩写为User ID或UID),全称用户标识符,在类UNIX系统中是内核用来辨识用户的一个无符号整型数值,亦是UNIX文件系统与进程的必要组成部分之一。
UID---用户标识号,它与用户名唯一对应。LINUX中超级用户root的UID为0。如果您想让系统显示您的用户名,UID,组名,GID以及您所属的其他组的名称,可利用id命令。修改UID一般用 usermod -u
。
UID是系统中用来表示用户的标识符,启动的进程的uid就是当前登录用户的uid,查看用户uid可使用id -u <username>
命令
需要注意的是,权限检查的时候是对euid检查,通常情况下进程的euid是和uid相同的。
用户的UID大于500的都是非系统账号,500以下的都为系统保留的账号,比如root账号,至高权限的账号的UID为0,我们创建用户的时候默认的账号的UID都是大于500,如果你要指定账号的UID可以使用-u
这个参数来指定。其它没什么大的意义。
数值范围
在不同的系统中,UID的值的范围也有所不同,但一般来说UID都是由一个15位的整数表示,其范围在0~32767之内,且有如下限制:
超级用户的UID总为0;
按传统的做法,“nobody”(类UNIX系统的一种特殊账户)与超级用户相反,总占有数值最大的PID,即32767;相对应的,现今的系统为nobody分配的UID则在系统保留范围(1~100)或是65530-65535的范围内[1]。
数值于1~100内的UID约定预留给系统使用,有些手册则推荐在此基础上再预留101~499(如RHEL)甚至是101~999(如Debian)的UID以作备用;而相对应的,在Linux中用useradd命令创建第一个用户时,默认为之分配的UID则为1000。
除此之外,有些特殊的系统也支持16位的UID,因而UID的数目可以扩展到65536个;现代系统支持32位的UID,这也使UID数目进一步扩充到4,294,967,296个成为可能。
UID分类
有效用户ID
有效用户ID(Effective UID,即EUID)与有效用户组ID(Effective Group ID,即EGID)在创建与访问文件的时候发挥作用;具体来说,创建文件时,系统内核将根据创建文件的进程的EUID与EGID设定文件的所有者/组属性,而在访问文件时,内核亦根据访问进程的EUID与EGID决定其能否访问文件。
真实用户ID
真实用户ID(Real UID,即RUID)与真实用户组ID(Real GID,即RGID)用于辨识进程的真正所有者,且会影响到进程发送信号的权限。没有超级用户权限的进程仅在其RUID与目标进程的RUID相匹配时才能向目标进程发送信号,例如在父子进程间,子进程从父进程处继承了认证信息,使得父子进程间可以互相发送信号。
暂存用户ID
暂存用户ID(Saved UID,即SUID)于以提升权限运行的进程暂时需要做一些不需特权的操作时使用,这种情况下进程会暂时将自己的有效用户ID从特权用户(常为root)对应的UID变为某个非特权用户对应的UID,而后将原有的特权用户UID复制为SUID暂存;之后当进程完成不需特权的操作后,进程使用SUID的值重置EUID以重新获得特权。在这里需要说明的是,无特权进程的EUID值只能设为与RUID、SUID与EUID(也即不改变)之一相同的值。
文件系统用户ID
文件系统用户ID(File System UID,即FSUID)在Linux中使用,且只用于对文件系统的访问权限控制,在没有明确设定的情况下与EUID相同(若FSUID为root的UID,则SUID、RUID与EUID必至少有一亦为root的UID),且EUID改变也会影响到FSUID。设立FSUID是为了允许程序(如NFS服务器)在不需获取向给定UID账户发送信号的情况下以给定UID的权限来限定自己的文件系统权限。
杂项
UID的数值与用户账户的对应关系存放于/etc/passwd中。用于存放密码的/etc/shadow以及网络信息服务也以UID的数值标识用户,但现在Linux系统下的shadow文件已经改用账户名来标识用户。
在遵循POSIX的环境中,id这一命令可以给出当前用户的用户名、所属组及对应的UID、GID的值。
相关推荐:《Linux视频教程》
以上是linux 用户id是什么意思的详细内容。更多信息请关注PHP中文网其他相关文章!