一、UID与GID
用户账号只不过是一串便于用户记住的字符串,而实际上linux系统在内部是用UID进行计算的。所谓用UID进行计算,就是说在linux文件系统中,文件的inode节点的拥有者属性字段记录的是UID,而不是用户名。GID同理。
在linux系统中,系统为用户展示几乎都是用户账号,而不是UID。如ls指令,展示的其中一个字段就是用户名。那这其中肯定有将用户名与UID建立起联系,让系统去解析并显示的吧?是的,这个联系文件就是 /etc/passwd。同理,组名与GID的关联文件在 /etc/group。
范例一:执行ls命令,系统是如何找出文件所属用户名与组名的?
首先,ls指令会读取文件的属性(在文件的inode节点上),其中包括UID与GID;
接着,根据 UID与GID 分别在 /etc/passwd 与 /etc/group文件查找用户名与组名;
最后,显示出来。
范例二:输入账号密码后,系统帮你处理了什么?
1.先在 /etc/passwd 中查找是否有你输入的账号,如果没有则跳过,如果有的话则将该账号对应的UID与GID读出来,另外,该账号的家目录与shell设定也一并读出来
2.核对账号密码。根据UID在 /etc/shadow 中查找密码,当然,这个密码是加密的,系统采用某种算法比对用户输入的密码与这里头的密码是否相符
3.如果密码正确,就进入shell控管阶段了!
二、有效群组与初始群组
我们知道一个用户可以加入多个群组,那当我们在操作文件或目录等作业时,到底以哪个为准呢?先明确一个概念,有效群组就是用户参与作业时的所在群组。像创建文件这个作业时,文件创建者及其有效群组将被记录在文件的inode中。有效群组总得有一个默认的吧?是的,这个默认的群组就是初始群组了!
上一节讲到用户密码登录的简单流程,回顾第一个步骤,我们发现登录过程中,系统会从 /etc/passwd 中查找UID与GID,这个GID对应的群组就是该用户的初始群组了!
有效群组可以切换吗?那是肯定的,可通过newgrp命令!它是通过另一个shell来提供这个功能的。所以,用完后,若想回到原来的shell环境,需要执行exit。