這個檔案中儲存的就是系統中所有的使用者和使用者的主要資訊。我們開啟這個檔案來看看內容到底是什麼。
[root@localhost ~]
# vim /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
這個檔案的內容非常規律,每行代表乙個使用者。大家可能會比較驚訝,linux系統中預設怎麼會有這麼多的使用者啊!這些使用者中的絕大多數是系統或服務政策執行所必須的使用者,我們把這種使用者稱為系統使用者或偽使用者。系統使用者是不能登入系統的,但是這些使用者同樣也不能被刪除,因為一旦刪除,依賴這些使用者執行的服務或程式就不能正常秩序,會導致系統問題。
那麼我們把root使用者這一行拿出來,看看這個檔案中的內容具體代表的含義吧。我們會注意到,這個檔案用「:」作為分隔符,劃分了7個字段,我們逐個來看具體的含義。
使用者名稱
第乙個欄位中儲存的是使用者名稱。不過大家需要注意,使用者名稱只是為了方便管理員記憶,linux系統是通過使用者uid來區分不同使用者、分配使用者許可權的。而使用者名稱和uid的對應是通過/etc/passwd這個檔案來定義的。
密碼標誌
這裡我們說「x」代表的是密碼標誌,而不是真正的密碼,真正的密碼是儲存在/etc/shadow檔案中的。在早期的unix中,這裡儲存的就是真正的加密密碼串,但是這個檔案的許可權是644,所有使用者都可以讀取/etc/passwd檔案,這樣非常容易導致密碼洩露。雖然密碼是加密的,但是採用暴力破解的方式是能夠進行破解的。所以現在的linux系統把真正的加密密碼串放置在影子檔案/etc/shadow中,而影子檔案的許可權是000。這個檔案是沒有任何許可權的,但因為我是root使用者,所以讀取許可權不受限制。當然,用強制修改的方法也是可以手工修改這個檔案的內容的。只有root使用者可以瀏覽和操作這個檔案,這樣就最大限度的保證了密碼的安全。
所以/etc/passwd中只有乙個「x」代表使用者是有用密碼的,我們把這個欄位陳祚密碼標誌,具體密碼要去/etc/shadow檔案中查詢。但是這個密碼標誌「x」也是不能被刪除的,如果刪除了密碼標誌「x」,那麼系統會認為這個使用者秘鑰密碼,從而導致只輸入使用者名稱而不用輸入密碼就可以登入(當然只能在本機上使用無密碼登入,遠端是不可以的),除非特殊情況(如破解使用者密碼),這當然是不可行的。
使用者預設配置資訊是從/etc/login.defs檔案中讀取。當系統管理員新增乙個使用者的時候,此時系統會將此使用者的相關資訊寫入相關的檔案中。在登入使用者時就會讀取這些檔案。
uid
第三個字段就是使用者id (uid,我們已經知道是通過uid來識別不同的使用者和分配自戶許可權的。這些uid是有使用限制和要求的,我們需要了解。
這些使用者足夠使用了,但是如果不夠也不用害怕,2.6x核心以後的liux系統使用者uid已經可以支援232個使用者了。
gid
第四個字段就是使用者的組id (gid),也就是這個使用者的初始組的標誌號。這裡需要解釋一下初始組和附加組的概念。
所謂初始組,指使用者一登入就立刻擁有這個使用者組的相關許可權,每個使用者的初始組只能有乙個,一般就是將和這個使用者的使用者名稱相同的組名作為這個使用者的初始組。舉例來說,我們手工新增使用者lamp,在建立使用者lamp的同時就會建立lamp組作為lamp使用者的初始組。
所謂附加組,指使用者可以加入多個其他的使用者組,並擁有這些組的許可權。每個使用者只能有乙個初始組,除初始組要把使用者再加入其他的使用者組外,這些使用者組就是這個使用者的附加組。附加組可以有多個,而且使用者可以有這些附加組的許可權。舉例來說,剛剛的lamp使用者除屬於初始組1amp外,我又把它加入了users組,那麼lamp使用者同時屬於lamp組、uses組,其中lamp 是初始組,users 是附加組。當然,初始組和附加組的身份是可以修改的,但是我們在工作中般不修改初始組,只修改附加組,因為修改了初始組有時會讓管理員邏輯混亂。
注意:在ecpaswd檔案的第四個欄位中看到的id是這個使用者的初始組。
使用者說明
第五個欄位是這個使用者的簡單說明,沒有什麼特殊作用,可以不寫。
家目錄
第六個欄位是這個使用者的家目錄,也就是使用者登入後有操作許可權的訪問目錄,我們把這個目錄稱為使用者的家目錄。超級使用者的家目錄是/root目錄,普通使用者在home/目錄下建立和使用者名稱相同的目錄作為家目錄,如lamp使用者的家目錄就是/home/lamp/目錄。
登入之後的shell
shel就是linux的命令直譯器。管理員輸入的密碼都是ascii碼,也就是類似abcd的英文。但是系統可以識別的編碼是類似0101的機器語言。shell的作用就是把ascii編碼的命令翻譯成系統可以識別的機器語言,同時把系統的執行結果翻譯為使用者可以識別的ascii編碼。linux的標註shell就是/bin/bash。
在/etc/passwd 檔案中,大家可以把這個字段理解為使用者登入之後鎖擁有的許可權。如果寫入的是linux的標準shell,/bin/bash就代表這個使用者擁有許可權範圍內的所有許可權。例如:
[root@localhost ~]
# vim /etc/passwd
lamp:x:1000:1000::/home/lamp:/bin/bash
我手工新增了lamp使用者,它的登入shell是/bin/bash,那麼這個使用者就可以使用普通使用者的所有許可權。如果我把lamp使用者的shell修改為/sbin/nologin,例如:
[root@localhost ~]
# vim /etc/passwd
lamp:x:1000:1000::/home/lamp:/sbin/nologin
那麼這個使用者就不能登來了,因/sbin/nologin就是禁止登入的shell。這樣說明白了嗎?如果我在這裡放入的是乙個系統命令,如/usr/bin/passwd,例如:
[root@localhost ~]
# vim /etc/passwd
lamp:x:1000:1000::/home/lamp:/usr/bin/passwd
那麼這個使用者可以登入,但是登入之後就只能修改自己的密碼了。但是在這裡不能隨便寫入和登入沒有關係的命令,如is, 否則系統不會識別這些命令,也就意味著這個使用者不能登入。 賬戶檔案 etc passwd
man 5 passwd login name optional encrypted password 如果是x,則對應的密碼必須存在於 etc shadow 否則認為賬戶無效 也可以直接是加密的密碼 numerical user id numerical group id user name or...
etc passwd 檔案結構
etc passwd 檔案結構 每一行代表乙個賬號,有幾行就代表你的系統中有幾個賬號。注意一點 裡面很多賬號本來就是系統正常執行所必須得,我們可以簡稱它為系統賬號,例如bin,daemon,adm,nobody等。每一行使用 分隔開,共有七個字段。1.賬號名稱 就是賬號,用來對應uid的。2.密碼 ...
理解 etc passwd檔案
任務 檢視使用者列表 檢視 etc passwd檔案許可權 etc passwd 檔案儲存基本資訊,需要在登入。換句話說,它儲存使用者的帳戶資訊。在 etc passwd是乙個純文字檔案。它包含害怕systemi 年代的帳戶列表,為每乙個賬戶給一些有用的資訊,如使用者id 組id,主目錄,外殼等等。...