Axe*_*ine 3 linux users linux-kernel
Linux 内核如何处理 UID 和 GID?
当我想向系统添加用户时,内核是否需要该用户的某种类型的“注册”(系统调用?)?内核是否甚至关心 /etc/passwd 中哪些用户可用,或者它是否只知道并处理独立于该文件内容的数值?
对于内核,用户或组只是附加到进程的一个数字(UID 和 GID),用于查看是否允许进程读取(真正打开(2))文件(文件带有 UID /GID 和权限位用于此目的),以及其他操作(例如,进程可以操作属于同一 UID 的进程)。有系统调用可以更改调用进程的 UID/GID(setuid(2)/setgid(2) 和朋友)。显然,谁可以使用它们有严格的限制。
系统可以使用这些数字从 /etc/passwd、/etc/group 或大量其他机制(LDAP、NIS 等)中查找名称,但这仅限于人类使用。
当您登录并提供您的用户名时,一个程序(以 root 身份运行,因此可以做很多普通用户不允许的事情)获取用户名并查找 UID(查看该用户是否存在于第一个地方),要求输入密码(或其他一些身份验证)并检查它。如果一切顺利,程序将更改为该 UID/GID 并 exec(2)s 用户的外壳程序(这又只是一个普通程序,确切地启动哪个程序是用户帐户描述的一部分) .
| 归档时间: |
|
| 查看次数: |
2554 次 |
| 最近记录: |