什么是UID与GID?

        登录Linux时,看起来是登录的账号,其实在计算机中仅仅认识ID,而每个登录的用户都会取得两个
    ID这就是GID与UID。UID也称为用户ID(UserID),GID也称为用户组ID(Group ID)。操作系统就是利用
    它两来判断文件的所有者与用户组的。
    

    UID

       提到UID,就必须提一下专门管理用户UID的文件/etc/passwd。以下是我自己电脑的/etc/passwd
    文件头几行:
    
    [yiranblade@localhost ~]$ head /etc/passwd
    root<img align="absmiddle" alt=":x:" class="emoji" src="http://yiranblade.cn/js/lib/emojify.js-1.1.0/images/basic/x.png" title=":x:" width="20px" height="20px"></img>0:0:root:/root:/bin/bash
    bin<img align="absmiddle" alt=":x:" class="emoji" src="http://yiranblade.cn/js/lib/emojify.js-1.1.0/images/basic/x.png" title=":x:" width="20px" height="20px"></img>1:1:bin:/bin:/sbin/nologin
    daemon<img align="absmiddle" alt=":x:" class="emoji" src="http://yiranblade.cn/js/lib/emojify.js-1.1.0/images/basic/x.png" title=":x:" width="20px" height="20px"></img>2:2:daemon:/sbin:/sbin/nologin
    adm<img align="absmiddle" alt=":x:" class="emoji" src="http://yiranblade.cn/js/lib/emojify.js-1.1.0/images/basic/x.png" title=":x:" width="20px" height="20px"></img>3:4:adm:/var/adm:/sbin/nologin
    lp<img align="absmiddle" alt=":x:" class="emoji" src="http://yiranblade.cn/js/lib/emojify.js-1.1.0/images/basic/x.png" title=":x:" width="20px" height="20px"></img>4:7:lp:/var/spool/lpd:/sbin/nologin
    sync<img align="absmiddle" alt=":x:" class="emoji" src="http://yiranblade.cn/js/lib/emojify.js-1.1.0/images/basic/x.png" title=":x:" width="20px" height="20px"></img>5:0:sync:/sbin:/bin/sync
    shutdown<img align="absmiddle" alt=":x:" class="emoji" src="http://yiranblade.cn/js/lib/emojify.js-1.1.0/images/basic/x.png" title=":x:" width="20px" height="20px"></img>6:0:shutdown:/sbin:/sbin/shutdown
    halt<img align="absmiddle" alt=":x:" class="emoji" src="http://yiranblade.cn/js/lib/emojify.js-1.1.0/images/basic/x.png" title=":x:" width="20px" height="20px"></img>7:0:halt:/sbin:/sbin/halt
    mail<img align="absmiddle" alt=":x:" class="emoji" src="http://yiranblade.cn/js/lib/emojify.js-1.1.0/images/basic/x.png" title=":x:" width="20px" height="20px"></img>8:12:mail:/var/spool/mail:/sbin/nologin
    operator<img align="absmiddle" alt=":x:" class="emoji" src="http://yiranblade.cn/js/lib/emojify.js-1.1.0/images/basic/x.png" title=":x:" width="20px" height="20px"></img>11:0:operator:/root:/sbin/nologin
    
    
    
        我们以第一行的root账户为例,第一个字段就是账号名称,对应着UID。第二个字段为密码,早期的UNIX密码放于此字段,后来由于安全问题将密码数据改放到/etc/shadow中,所以此处看到的是一个x。第三个字段就是用户标识符即UID,一般情况下0代表系统管理员,1-499代表系统账号,500-65535代表可登录账号。第四个字段为其GID即用户组ID。第五个字段为用户信息说明列。第六个字段为该用户的主文件夹,例如root的主文件夹为/root。第七个字段表示用到的shell。
    

    GID

        GID相关的是/etc/group文件,同样的以下为自己电脑的相关文件:
    
    [yiranblade@localhost ~]$ head /etc/group
    root<img align="absmiddle" alt=":x:" class="emoji" src="http://yiranblade.cn/js/lib/emojify.js-1.1.0/images/basic/x.png" title=":x:" width="20px" height="20px"></img>0:
    bin<img align="absmiddle" alt=":x:" class="emoji" src="http://yiranblade.cn/js/lib/emojify.js-1.1.0/images/basic/x.png" title=":x:" width="20px" height="20px"></img>1:
    daemon<img align="absmiddle" alt=":x:" class="emoji" src="http://yiranblade.cn/js/lib/emojify.js-1.1.0/images/basic/x.png" title=":x:" width="20px" height="20px"></img>2:
    sys<img align="absmiddle" alt=":x:" class="emoji" src="http://yiranblade.cn/js/lib/emojify.js-1.1.0/images/basic/x.png" title=":x:" width="20px" height="20px"></img>3:
    adm<img align="absmiddle" alt=":x:" class="emoji" src="http://yiranblade.cn/js/lib/emojify.js-1.1.0/images/basic/x.png" title=":x:" width="20px" height="20px"></img>4:
    tty<img align="absmiddle" alt=":x:" class="emoji" src="http://yiranblade.cn/js/lib/emojify.js-1.1.0/images/basic/x.png" title=":x:" width="20px" height="20px"></img>5:
    disk<img align="absmiddle" alt=":x:" class="emoji" src="http://yiranblade.cn/js/lib/emojify.js-1.1.0/images/basic/x.png" title=":x:" width="20px" height="20px"></img>6:
    lp<img align="absmiddle" alt=":x:" class="emoji" src="http://yiranblade.cn/js/lib/emojify.js-1.1.0/images/basic/x.png" title=":x:" width="20px" height="20px"></img>7:
    mem<img align="absmiddle" alt=":x:" class="emoji" src="http://yiranblade.cn/js/lib/emojify.js-1.1.0/images/basic/x.png" title=":x:" width="20px" height="20px"></img>8:
    kmem<img align="absmiddle" alt=":x:" class="emoji" src="http://yiranblade.cn/js/lib/emojify.js-1.1.0/images/basic/x.png" title=":x:" width="20px" height="20px"></img>9:
    
    
        这个文件每一行为一个用户组,第一个字段为用户组名称。第二个字段为用户组密码。第三字段就是用户组标识符。第四个字段代表用户组支持的账号名称每个用户之间用,号分割;本字段可以为空;如果字段为空表示用户组为GID的用户名。
    
    • 有效用户组和初始用户组
          关于用户组必须提一下初始用户组和有效用户组这一概念,在/etc/passwd中第四个字段的GID即为初始用户组,也就是用户登录后立即获得权限的用户组。而有效用户组可以这样理解,比如一个账号同时可以隶属于好几个用户组,利用touch创建一个文件,那么这个文件所属的用户组即为其有效用户组,通常可以使用groups命令查看当前所属的用户组,然后输出的第一个为有效用户组,用newgrp命令可以更改有效用户组。
      

    结束语

          一般情况下当登录linux后系统会先找寻/etc/passwd是否有输入账号,没有则跳出,有则读出对应UID与GID,随后进入/etc/shadow核对密码,一切完成后则进入shell管控。
        由此可见,UID与GID在日常的账户管理中发挥着重要的作用,一不小心就有可能访问不了自己的文件了,所以不要随便改动自己的/etc/passwd与/etc/group文件哦~
    

    ————没有什么是停不下来的,除了时间