使用者賬號 使用者識別符號 UID與GID

2021-07-12 02:29:15 字數 2891 閱讀 9917

雖然我們登入linux主機的時候,輸入的是我們的賬號,但是其實linux主機並不會直接認識你的「賬號名稱」的,它僅認識id。id與賬號的對應關係在/etc/passwd當中。

每個登入的使用者至少都會取得兩個id,乙個是使用者id(userid,簡稱uid),乙個是使用者組id(group id,簡稱gid)。

檔案如何判別它的所有者與使用者組呢?其實就是利用uid與gid。每乙個檔案都會有所謂的所有者id與使用者組id,當我們有要顯示檔案屬性的需求時,系統會根據/etc/passwd與/etc/group的內容,找到uid/gid對應的賬號與組名再顯示出來。

1. 先檢視一下,系統裡面有沒有乙個名為yhk的使用者

使用者的字段正是yhk本身。

2. 修改一下,將yhk的1000uid該為2000

怎麼變成1000了?因為檔案只會記錄數字而已。因為我們亂改,所以導致1000找不到對應的賬號,因此顯示數字!

3. 將剛才的uid改回來。

你輸入賬號密碼後,系統怎麼處理?

1. 先找尋/etc/passwd 裡面是否有你輸入的賬號,如果沒有則跳出,如果有的話則將該賬號對應的uid與gid(在/etc/group 中)讀出來,另外,該賬號的主資料夾與shell 設定也一併讀出。

2. 再來則是核對密碼表。linux會進入/etc/shadow 裡面找出對應的賬號與uid,然後核對一下你剛才輸入的密碼與裡面的密碼是否相符。

3. 如果一切ok的話,就進入shell 控管的階段了。

跟使用者賬號有關的有兩個非常重要的檔案,乙個是管理使用者uid/gid重要引數的/etc/passwd ,乙個則是專門管理密碼相關資料的/etc/shadow

/etc/passwd 檔案結構

每一行都代表乙個賬號,有幾行就代表有幾個賬號在你的系統中。不過需要特別留意的是,裡面有很多賬號本來就是系統正常執行所必須要的,我們可以簡稱它為系統賬號,例如bin, daemon, adm, nobody 等,這些賬號請不要隨意刪掉。

每一行使用「:」分隔開,共有七個字段,分別是:

1. 賬號名稱

就是賬號,用來對應uid 的。例如root 的uid對應就是0(第三字段)

2. 密碼

早期unix系統的密碼就是放在這字段上。但是因為這個檔案的特性是所有的程式都能夠讀取,這樣一來很容易造成密碼資料被竊取,因此後來就將這個欄位的密碼資料改放到/etc/shadow 中了,所以這裡你會看到乙個「x」.

3. uid

這個就是使用者識別符號。通常linux對於uid有幾個限制。0(系統管理員),1~499(系統賬號),500~65535(可登陸賬號)

4. gid

這個與/etc/group 有關。其實/etc/group 與 /etc/passwd 差不多,只是它是用來規定組名與gid的對應而已。

5. 使用者資訊說明列

這個字段基本上並沒有什麼重要用途,只是用來解釋這個賬號的意義而已。

6. 主資料夾

這是使用者的主資料夾。

7. shell

當使用者登入系統後就會取得乙個shell來與系統的核心通訊以進行使用者的操作任務。那為何預設shell會使用bash呢?就是這個字段指定的。

/etc/shadow 檔案結構

我們知道很多程式的執行都與許可權有關,而許可權與uid/gid 有關。因此各程式當然需要讀取/etc/passwd 來了解不同賬號的許可權。因此/etc/passwd 的許可權需要設定為-rw-r--r--這樣的情況。後來發展出將密碼移動到/etc/shadow 這個檔案分隔開來的技術,而且還加入很多的密碼限制引數在/etc/shaow 裡面。

共有9個字段:

1. 賬號名稱

由於密碼也需要與賬號對應。因此,這個檔案的第一列就是賬號,必須要與/etc/passwd 相同才行。

2. 密碼

這個欄位內的資料才是真正的密碼,而且是經過編碼的密碼(加密)。這個檔案的預設許可權是「-rw-------」或者是「-r--------」,即只有root才可以讀寫。你得隨時注意,不要不小心改動了這個檔案的許可權。

/etc/group 檔案結構

這個檔案就是記錄gid與組名的對應。

這個檔案每一行代表乙個使用者組。共分4列

1. 使用者組名稱

2. 使用者組密碼

通常不需要設定,這個設定通常是給「使用者組管理員」使用的,目前很少有這個機會設定使用者組管理員。

3. gid

就是使用者組id。我們/etc/passwd 第四個字段使用的gid對應的使用者組名就是由這裡對應出來的。

4. 此使用者組支援的賬號名稱

我們知道乙個賬號可以加入多個使用者組,那某個賬號想要加入此使用者組時,將該賬號填入這個字段即可。舉例來說,如果我想讓 dmtsai 也加入 root 這個使用者組,那麼在第一行的最後面加上「,dmtsai」,注意不要有空格,使其成為「root:x:0:root,dmstai」就可以了。

有效使用者組(effective group)與初始使用者組(initial group)

每個使用者在它的/etc/passwd 裡面的第四列gid就是所謂的「初始使用者組」。也就是說,當使用者登入系統,立刻就擁有這個使用者組的相關許可權。

新檔案的組要檢查一下當時的有效使用者組了。

變數與識別符號學習

一 變數 1.變數的定義 在程式執行期間其值可以改變的量稱為變數,乙個變數在記憶體中佔據乙個儲存單元 2.變數的要素 變數名 變數值 變數的儲存單元 3.變數先宣告再使用 4.變數初始化 變數型別 變數名 初值,變數名 初值,初值可以是常量,也可以是乙個有確定值得表達 5.在使用之前,變數應有確定的...

識別符號與注釋(二)

識別符號只能由字母 數字 下劃線組成。只能以字母和下劃線開頭。識別符號對大小寫敏感。在 python 3 中,可以用中文作為變數名,非 ascii 識別符號也是允許的了。不可以用作其他任何識別符號使用 例項 1 usr bin python3 第乙個python注釋 print hello,worl...

保留字與識別符號

1.保留字 保留字時python語言中一些已經杯賦予特定意義的單詞。開發程式時,不可以把這些保留字作為 變數 函式 類 模組和其他物件的名稱來使用。python保留字如圖所示 andas assert break class continue defdel elif else except fina...