Linux中的UID與GID

什麼是UID與GID?

    登錄Linux時,看起來是登錄的賬號,其實在計算機中僅僅認識ID,而每個登錄的用戶都會取得兩個
ID這就是GID與UIDUID也稱爲用戶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文件哦~
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章