2012年7月21日 星期六

在Linux上一個UID只能給一個帳號名稱使用嗎??(未完成)

如題,站在系統管理的角度上,原則上我們是希望一個使用都帳號只會對應一個UID。換言之,在新增一個使用者帳號時,會分配一個未用過的號碼作為新帳號的UID,而不會用一個已用過的號碼(也就是已經有其它帳號在使用的號碼),作為新帳號的UID。

不過如果去觀察指令「useradd」的man_page,可以發現一個選項「-o」,透過這個選項可以將已分配的UID重複分配給新增的帳號使用。這就會變成,一個UID會對應到2個以上的帳號名稱。

不過此時又會衍生另一個問題,假設現在有2個帳號「test1」和「test2」,這2個帳號對應同一個UID「600」,如果我們以UID=600在系統上操作時,我們到底是用哪一個帳號身份呢?是test1還是test2??

當我們在Login時,輸入的名稱假設叫作「typein_name」,透過typein_name對照「/etc/passwd」的資料,取得UID、GID、shell和家目錄位置(所以登入完成後所在的家目錄要看typein_name),接著,登入的shell讀取啟動檔來設定變數USER,變數USER的設定是透過執行命令行「id -un」,該命令行會以現在的UID號碼來查詢檔案「/etc/passwd」以取得帳號名稱,所以此時同樣的UID如有不同的帳號名稱,則先找到的那一筆紀錄,會先被使用。

這也就是為什麼登入時,明明在login的判面是輸入「A帳號」,登入完成後,家目錄是在「A帳號的家目錄」可是提示字元的使用者帳號名稱卻是顯示「B帳號」(因為B帳號的紀錄在檔案/etc/passwd中,排得位置比A帳號上面)。

有空的話我再把lab驗測式的圖檔放上來

沒有留言 :