詳細解析Linux etc passwd檔案

2021-07-23 21:57:06 字數 2773 閱讀 3419

linux系統管理員對使用者管理可能會涉及到一些檔案其中linux /etc/passwd檔案就是經常會接觸到的檔案,管理員應該弄清楚這個檔案。

ad:51cto 網+ 第十二期沙龍:大話資料之美_如何用資料驅動使用者體驗

在linux /etc/passwd檔案中每個使用者都有乙個對應的記錄行,它記錄了這個使用者的一些基本屬性。系統管理員經常會接觸到這個檔案的修改以完成對使用者的管理工作。這個檔案對所有使用者都是可讀的。但是linux /etc/passwd檔案中都有些什麼內容呢?

它的內容類似下面的例子:

#cat/etc/passwd

root:x:0:0:superuser:/:

daemon:x:1:1:systemdaemons:/etc:

bin:x:2:2:ownerofsystemcommands:/bin:

sys:x:3:3:ownerofsystemfiles:/usr/sys:

adm:x:4:4:systemaccounting:/usr/adm:

uucp:x:5:5:uucpadministrator:/usr/lib/uucp:

auth:x:7:21:authenticationadministrator:/tcb/files/auth:

cron:x:9:16:crondaemon:/usr/spool/cron:

listen:x:37:4:networkdaemon:/usr/net/nls:

lp:x:71:18:printeradministrator:/usr/spool/lp:

sam:x:200:50:samsan:/usr/sam:/bin/sh

從上面的例子我們可以看到,/etc/passwd中一行記錄對應著乙個使用者,每行記錄又被冒號(:)分隔為7個字段,其格式和具體含義如下:

使用者名稱:口令:使用者標識號:組標識號:注釋性描述:主目錄:登入shell

「使用者名稱」是代表使用者賬號的字串。通常長度不超過8個字元,並且由大小寫字母和/或數字組成。登入名中不能有冒號(:),因為冒號在這裡是分隔符。為了相容起見,登入名中最好不要包含點字元(.),並且不使用連字元(-)和加號(+)打頭。

「口令」一些系統中,存放著加密後的使用者口令字。雖然這個字段存放的只是使用者口令的加密串,不是明文,但是由於/etc/passwd檔案對所有使用者都可讀,所以這仍是乙個安全隱患。因此,現在許多linux系統(如svr4)都使用了shadow技術,把真正的加密後的使用者口令字存放到/etc/shadow檔案中,而在/etc/passwd檔案的口令欄位中只存放乙個特殊的字元,例如「x」或者「*」。

「使用者標識號」是乙個整數,系統內部用它來標識使用者。一般情況下它與使用者名稱是一一對應的。如果幾個使用者名稱對應的使用者標識號是一樣的,系統內部將把它們視為同乙個使用者,但是它們可以有不同的口令、不同的主目錄以及不同的登入shell等。

通常使用者標識號的取值範圍是0~65535。0是超級使用者root的標識號,1~99由系統保留,作為管理賬號,普通使用者的標識號從100開始。在linux系統中,這個界限是500。

「組標識號」字段記錄的是使用者所屬的使用者組。它對應著/etc/group檔案中的一條記錄。

「注釋性描述」字段記錄著使用者的一些個人情況,例如使用者的真實姓名、**、位址等,這個欄位並沒有什麼實際的用途。在不同的linux系統中,這個欄位的格式並沒有統一。在許多linux系統中,這個字段存放的是一段任意的注釋性描述文字,用做finger命令的輸出。

「主目錄」,也就是使用者的起始工作目錄,它是使用者在登入到系統之後所處的目錄。在大多數系統中,各使用者的主目錄都被組織在同乙個特定的目錄下,而使用者主目錄的名稱就是該使用者的登入名。各使用者對自己的主目錄有讀、寫、執行(搜尋)許可權,其他使用者對此目錄的訪問許可權則根據具體情況設定。

使用者登入後,要啟動乙個程序,負責將使用者的操作傳給核心,這個程序是使用者登入到系統後執行的命令直譯器或某個特定的程式,即shell。shell是使用者與linux系統之間的介面。linux的shell有許多種,每種都有不同的特點。常用的有sh(bourneshell),csh(cshell),ksh(kornshell),tcsh(tenex/tops-20typecshell),bash(bourneagainshell)等。系統管理員可以根據系統情況和使用者習慣為使用者指定某個shell。如果不指定shell,那麼系統使用sh為預設的登入shell,即這個欄位的值為/bin/sh。

使用者的登入shell也可以指定為某個特定的程式(此程式不是乙個命令直譯器)。利用這一特點,我們可以限制使用者只能執行指定的應用程式,在該應用程式執行結束後,使用者就自動退出了系統。有些linux系統要求只有那些在系統中登記了的程式才能出現在這個欄位中。

系統中有一類使用者稱為偽使用者(psuedousers),這些使用者在linux /etc/passwd檔案中也占有一條記錄,但是不能登入,因為它們的登入shell為空。它們的存在主要是方便系統管理,滿足相應的系統程序對檔案屬主的要求。常見的偽使用者如下所示。

偽使用者含義

bin擁有可執行的使用者命令檔案

sys擁有系統檔案

adm擁有帳戶檔案

uucpuucp使用

lplp或lpd子系統使用

nobodynfs使用

擁有帳戶檔案

除了上面列出的偽使用者外,還有許多標準的偽使用者,例如:audit,cron,mail,usenet等,它們也都各自為相關的程序和檔案所需要。

由於linux /etc/passwd檔案是所有使用者都可讀的,如果使用者的密碼太簡單或規律比較明顯的話,一台普通的計算機就能夠很容易地將它破解,因此對安全性要求較高的linux系統都把加密後的口令字分離出來,單獨存放在乙個檔案中,這個檔案是/etc/shadow檔案。只有超級使用者才擁有該檔案讀許可權,這就保證了使用者密碼的安全性。

ostream iterator詳細解析

ostream iterator屬於i o流stl介面卡,用於獲取乙個元素,同時儲存在緩衝器中,可以供cout輸出。如果把cout看做成乙個物件,那麼在cout物件當中存在一片用於資料儲存的區域。ostream iterator在stl中一般配合copy函式一起使用,如下 ostream itera...

windows socket詳細解析

源文 這裡執行緒模型是指winsock相關的執行緒模型設計。在本軟體的設計的過程中有些問題是涉及到winsock的問題,為了能夠很好的設計執行緒模型,必須理解清楚socket的內部工作機制。為此,首先從外面開始分析。1 使用多執行緒是為了避免應用程式主介面在i o操作中沒有反應,出現假死機現象。so...

詳細解析SCP

命令格式 scp local file remote username remote ip remote folder 或者scp local file remote username remote ip remote file 或者scp local file remote ip remote f...