Linux系统编程基础与文件I/O详解
一、用户与组
在Linux系统中,授权机制是通过用户和组来实现的。每个用户都关联着一个唯一的正整数,即用户ID(uid)。每个进程都与一个uid相关联,这个uid标识了运行该进程的用户,被称为进程的真实uid。在Linux内核中,uid是用户的唯一标识,但用户之间通常使用用户名来相互指代,而不是使用数值。用户名及其对应的uid存储在 /etc/passwd 文件中,库函数会将用户提供的用户名映射为对应的uid。
登录时,用户向 login(1) 程序提供用户名和密码。如果用户名有效且密码正确, login(1) 程序会启动用户的登录shell,该shell的uid会被设置为用户的uid。子进程会继承其父进程的uid。
uid为0的用户是特殊用户 root , root 用户拥有特殊权限,几乎可以在系统上执行任何操作,例如只有 root 用户可以更改进程的uid,因此 login(1) 程序以 root 用户身份运行。
除了真实uid,每个进程还有有效uid、保存的uid和文件系统uid。真实uid始终是启动进程的用户的uid,而有效uid可能会根据各种规则发生变化,以使进程能够以不同用户的权限执行。保存的uid存储原始的有效uid,用于决定用户可以切换到哪些有效uid值。文件系统uid通常等于有效uid,用于验证文件系统访问权限。
每个用户可以属于一个或多个组,包括
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



