Linux?/etc/passwd詳解
Linux /etc/passwd
Linux 系統(tǒng)中的 /etc/passwd 文件,是系統(tǒng)用戶配置文件,存儲(chǔ)了系統(tǒng)中所有用戶的基本信息,并且所有用戶都可以對(duì)此文件執(zhí)行讀操作。
首先我們來打開這個(gè)文件,看看到底包含哪些內(nèi)容,執(zhí)行命令如下:
[root@localhost ~]# vi /etc/passwd #查看一下文件內(nèi)容 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 ...省略部分輸出...
可以看到,/etc/passwd 文件中的內(nèi)容非常規(guī)律,每行記錄對(duì)應(yīng)一個(gè)用戶。
Linux 系統(tǒng)中默認(rèn)怎么會(huì)有這么多的用戶?這些用戶中的絕大多數(shù)是系統(tǒng)或服務(wù)正常運(yùn)行所必需的用戶,這種用戶通常稱為系統(tǒng)用戶或偽用戶。系統(tǒng)用戶無法用來登錄系統(tǒng),但也不能刪除,因?yàn)橐坏﹦h除,依賴這些用戶運(yùn)行的服務(wù)或程序就不能正常執(zhí)行,會(huì)導(dǎo)致系統(tǒng)問題。
不僅如此,每行用戶信息都以 ":" 作為分隔符,劃分為 7 個(gè)字段,每個(gè)字段所表示的含義如下:
用戶名:密碼:UID(用戶ID):GID(組ID):描述性信息:主目錄:默認(rèn)Shell
接下來,給大家逐個(gè)介紹這些字段。
用戶名
用戶名,就是一串代表用戶身份的字符串。
用戶名僅是為了方便用戶記憶,Linux 系統(tǒng)是通過 UID 來識(shí)別用戶身份,分配用戶權(quán)限的。/etc/passwd 文件中就定義了用戶名和 UID 之間的對(duì)應(yīng)關(guān)系。
密碼
"x" 表示此用戶設(shè)有密碼,但不是真正的密碼,真正的密碼保存在 /etc/shadow 文件中(下一節(jié)做詳細(xì)介紹)。
在早期的 UNIX 中,這里保存的就是真正的加密密碼串,但由于所有程序都能讀取此文件,非常容易造成用戶數(shù)據(jù)被竊取。
雖然密碼是加密的,但是采用暴力.破解的方式也是能夠進(jìn)行破解的。
因此,現(xiàn)在 Linux 系統(tǒng)把真正的加密密碼串放置在 /etc/shadow 文件中,此文件只有 root 用戶可以瀏覽和操作,這樣就最大限度地保證了密碼的安全。
需要注意的是,雖然 "x" 并不表示真正的密碼,但也不能刪除,如果刪除了 "x",那么系統(tǒng)會(huì)認(rèn)為這個(gè)用戶沒有密碼,從而導(dǎo)致只輸入用戶名而不用輸入密碼就可以登陸(只能在使用無密碼登錄,遠(yuǎn)程是不可以的),除非特殊情況(如破解用戶密碼),這當(dāng)然是不可行的。
UID
UID,也就是用戶 ID。每個(gè)用戶都有唯一的一個(gè) UID,Linux 系統(tǒng)通過 UID 來識(shí)別不同的用戶。
實(shí)際上,UID 就是一個(gè) 0~65535 之間的數(shù),不同范圍的數(shù)字表示不同的用戶身份,具體如表 1 所示。
表 1 UID代表不同身份的用戶
UID 范圍 | 用戶身份 |
---|---|
0 | 超級(jí)用戶。UID 為 0 就代表這個(gè)賬號(hào)是管理員賬號(hào)。在 Linux 中,如何把普通用戶升級(jí)成管理員呢?只需把其他用戶的 UID 修改為 0 就可以了,這一點(diǎn)和 Windows 是不同的。不過不建議建立多個(gè)管理員賬號(hào)。 |
1~499 | 系統(tǒng)用戶(偽用戶)。也就是說,此范圍的 UID 保留給系統(tǒng)使用。其中,1~99 用于系統(tǒng)自行創(chuàng)建的賬號(hào);100~499 分配給有系統(tǒng)賬號(hào)需求的用戶。其實(shí),除了 0 之外,其他的 UID 并無不同,這里只是默認(rèn) 500 以下的數(shù)字給系統(tǒng)作為保留賬戶,只是一個(gè)公認(rèn)的習(xí)慣而已。 |
500~65535 | 普通用戶。通常這些 UID 已經(jīng)足夠用戶使用了。但不夠用也沒關(guān)系,2.6.x 內(nèi)核之后的 Linux 系統(tǒng)已經(jīng)可以支持 232 個(gè) UID 了。 |
GID
全稱“Group ID”,簡(jiǎn)稱“組ID”,表示用戶初始組的組 ID 號(hào)。這里需要解釋一下初始組和附加組的概念。
初始組:指用戶登陸時(shí)就擁有這個(gè)用戶組的相關(guān)權(quán)限。每個(gè)用戶的初始組只能有一個(gè),通常就是將和此用戶的用戶名相同的組名作為該用戶的初始組。比如說,我們手工添加用戶 lamp,在建立用戶 lamp 的同時(shí),就會(huì)建立 lamp 組作為 lamp 用戶的初始組。
附加組:指用戶可以加入多個(gè)其他的用戶組,并擁有這些組的權(quán)限。每個(gè)用戶只能有一個(gè)初始組,除初始組外,用戶再加入其他的用戶組,這些用戶組就是這個(gè)用戶的附加組。附加組可以有多個(gè),而且用戶可以有這些附加組的權(quán)限。
舉例來說,剛剛的 lamp 用戶除屬于初始組 lamp 外,我又把它加入了 users 組,那么 lamp 用戶同時(shí)屬于 lamp 組和 users 組,其中 lamp 是初始組,users 是附加組。
當(dāng)然,初始組和附加組的身份是可以修改的,但是我們?cè)诠ぷ髦胁恍薷某跏冀M,只修改附加組,因?yàn)樾薷牧顺跏冀M有時(shí)會(huì)讓管理員邏輯混亂。
需要注意的是,在 /etc/passwd 文件的第四個(gè)字段中看到的 ID 是這個(gè)用戶的初始組。
描述性信息
這個(gè)字段并沒有什么重要的用途,只是用來解釋這個(gè)用戶的意義而已。
主目錄
也就是用戶登錄后有操作權(quán)限的訪問目錄,通常稱為用戶的主目錄。
例如,root 超級(jí)管理員賬戶的主目錄為 /root,普通用戶的主目錄為 /home/yourIDname,即在 /home/ 目錄下建立和用戶名相同的目錄作為主目錄,如 lamp 用戶的主目錄就是 /home/lamp/ 目錄。
默認(rèn)的Shell
Shell 就是 Linux 的命令解釋器,是用戶和 Linux 內(nèi)核之間溝通的橋梁。
我們知道,用戶登陸 Linux 系統(tǒng)后,通過使用 Linux 命令完成操作任務(wù),但系統(tǒng)只認(rèn)識(shí)類似 0101 的機(jī)器語言,這里就需要使用命令解釋器。也就是說,Shell 命令解釋器的功能就是將用戶輸入的命令轉(zhuǎn)換成系統(tǒng)可以識(shí)別的機(jī)器語言。
通常情況下,Linux 系統(tǒng)默認(rèn)使用的命令解釋器是 bash(/bin/bash),當(dāng)然還有其他命令解釋器,例如 sh、csh 等。
在 /etc/passwd 文件中,大家可以把這個(gè)字段理解為用戶登錄之后所擁有的權(quán)限。如果這里使用的是 bash 命令解釋器,就代表這個(gè)用戶擁有權(quán)限范圍內(nèi)的所有權(quán)限。例如:
[root@localhost ~]# vi /etc/passwd lamp:x:502:502::/home/lamp:/bin/bash
我手工添加了 lamp 用戶,它使用的是 bash 命令解釋器,那么這個(gè)用戶就可以使用普通用戶的所有權(quán)限。
如果我把 lamp 用戶的 Shell 命令解釋器修改為 /sbin/nologin,那么,這個(gè)用戶就不能登錄了,例如:
[root@localhost ~]# vi /etc/passwd lamp:x:502:502::/home/lamp:/sbin/nologin
因?yàn)?/sbin/nologin 就是禁止登錄的 Shell。同樣,如果我在這里放入的系統(tǒng)命令,如 /usr/bin/passwd,例如:
[root@localhost ~]#vi /etc/passwd lamp:x:502:502::/home/lamp:/usr/bin/passwd
那么這個(gè)用戶可以登錄,但登錄之后就只能修改自己的密碼。但是,這里不能隨便寫入和登陸沒有關(guān)系的命令(如 ls),系統(tǒng)不會(huì)識(shí)別這些命令,同時(shí)也就意味著這個(gè)用戶不能登錄。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
ubuntu+php環(huán)境下的Memcached 安裝方法
Memcached是一套分散式的高速緩存系統(tǒng),當(dāng)初是Danga Interactive為了LiveJournal所發(fā)展2011-11-11在Debian系的Linux中編譯并安裝ixgbe驅(qū)動(dòng)的教程
這篇文章主要介紹了在Linux中編譯并安裝ixgbe驅(qū)動(dòng)的教程,采用bash shell、適用于Debian、Ubuntu等各種基于Debian的Linux系統(tǒng),需要的朋友可以參考下2015-03-03阿里云linux服務(wù)器上使用iptables設(shè)置安全策略的方法
這篇文章主要介紹了阿里云linux服務(wù)器上使用iptables設(shè)置安全策略的方法,需要的朋友可以參考下2016-10-10Apache與Tomcat服務(wù)器整合的基本配置方法及概要說明
網(wǎng)上的亂七八糟的資料太多了,很多都是自說自話,希望這篇文章能給大家?guī)硪恍┣逦乃悸贰?/div> 2010-12-12Ubuntu16.04搭建NFS 文件共享服務(wù)器的方法
這篇文章主要介紹了Ubuntu16.04搭建NFS 文件共享服務(wù)器的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-04-04Keepass+PuTTYPortable+Winscp一鍵登錄實(shí)例詳解
這篇文章主要介紹了Keepass+PuTTYPortable+Winscp一鍵登錄實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下2017-01-01最新評(píng)論