在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是什么意思的详细内容。