摘要:本文詳解用戶(User)和用戶組(Group)的配置文件,本文是《Linux 用戶(User)和用戶組(Group)管理概述》文檔的關(guān)健部份的細(xì)化;通過(guò)本文,您至少能明白/etc/passwd /etc/group ,以及什么是UID和GID 等;其中對(duì)UID的重要性加以詳細(xì)的論述;最后,本文還以通過(guò)修改用戶及用戶組配置文件的辦法來(lái)實(shí)現(xiàn)管理用戶和用戶組,進(jìn)而說(shuō)明在Linux系統(tǒng)中,系統(tǒng)文件的重要性;
用戶(User)和用戶組(Group)的配置文件,是系統(tǒng)管理員最應(yīng)該了解和掌握的系統(tǒng)基礎(chǔ)文件之一,從另一方面來(lái)說(shuō),了解這些文件也是系統(tǒng)安全管理的重要組成部份;做為一個(gè)合格的系統(tǒng)管理員應(yīng)該對(duì)用戶和用戶組配置文件透徹了解才行;
一、用戶(User)相關(guān);
談到用戶,就不得不談?dòng)脩艄芾恚脩襞渲梦募约坝脩舨樵兒凸芾淼目刂乒ぞ撸挥脩艄芾碇饕ㄟ^(guò)修改用戶配置文件完成;用戶管理控制工具最終目的也是為了修改用戶配置文件。
什么是用戶查詢和管理控制工具呢?用戶查詢和控制工具是查詢、添加、修改和刪除用戶等系統(tǒng)管理工具,比如查詢用戶的id和finger命令,添加用戶的useradd 或adduser 、userdel 用戶的刪除 、設(shè)置密碼的passwd命令、修改用戶usermod 等等;我們需要知道的是通過(guò)用戶查詢和控制工具所進(jìn)行的動(dòng)作的最終目的也是修改用戶配置文件;所以我們進(jìn)行用戶管理的時(shí)候,直接修改用戶配置文件一樣可以達(dá)到用戶管理的目的;
通過(guò)上面的解說(shuō),我們能實(shí)實(shí)在在的感覺到用戶(User)配置文件的重要性;其實(shí)用戶和用戶組在系統(tǒng)管理中是不可分割的,但為了說(shuō)明問題,我們還是得把用戶(User)的配置文件單列出來(lái)解說(shuō),其中包括/etc/passwd 和/etc/shadow 文件;在這之中,你還能了解UID的重要性;
通過(guò)本標(biāo)題,您可以了解或掌握的內(nèi)容有:了解/etc/passwd和/etc/shadow;什么UID ;
與用戶相關(guān)的系統(tǒng)配置文件主要有/etc/passwd 和/etc/shadow,其中/etc/shadow是用戶資訊的加密文件,比如用戶的密碼口令的加密保存等;/etc/passwd 和/etc/shadow 文件是互補(bǔ)的;我們可以通過(guò)對(duì)比兩個(gè)文件來(lái)差看他們的區(qū)別;
1、關(guān)于/etc/passwd 和 UID;
/etc/passwd 是系統(tǒng)識(shí)別用戶的一個(gè)文件,做個(gè)不恰當(dāng)?shù)谋扔鳎?etc/passwd 是一個(gè)花名冊(cè),系統(tǒng)所有的用戶都在這里有登錄記載;當(dāng)我們以beinan 這個(gè)賬號(hào)登錄時(shí),系統(tǒng)首先會(huì)查閱 /etc/passwd 文件,看是否有beinan 這個(gè)賬號(hào),然后確定beinan的UID,通過(guò)UID 來(lái)確認(rèn)用戶和身份,如果存在則讀取/etc/shadow 影子文件中所對(duì)應(yīng)的beinan的密碼;如果密碼核實(shí)無(wú)誤則登錄系統(tǒng),讀取用戶的配置文件;
1)/etc/passwd 的內(nèi)容理解:
在/etc/passwd 中,每一行都表示的是一個(gè)用戶的信息;一行有7個(gè)段位;每個(gè)段位用:號(hào)分割,比如下面是我的系統(tǒng)中的/etc/passwd 的兩行;
beinan:x:500:500:beinan sun:/home/beinan:/bin/bash
linuxsir:x:505:502:linuxsir open,linuxsir office,13898667715:/home/linuxsir:/bin/bash
beinan:x:500:500:beinan sun:/home/beinan:/bin/bash
linuxsir:x:501:502::/home/linuxsir:/bin/bash
第一字段:用戶名(也被稱為登錄名);在上面的例子中,我們看到這兩個(gè)用戶的用戶名分別是 beinan 和linuxsir;
第二字段:口令;在例子中我們看到的是一個(gè)x,其實(shí)密碼已被映射到/etc/shadow 文件中;
第三字段:UID ;請(qǐng)參看本文的UID的解說(shuō);
第四字段:GID;請(qǐng)參看本文的GID的解說(shuō);
第五字段:用戶名全稱,這是可選的,可以不設(shè)置,在beinan這個(gè)用戶中,用戶的全稱是beinan sun ;而linuxsir 這個(gè)用戶是沒有設(shè)置全稱;
第六字段:用戶的家目錄所在位置;beinan 這個(gè)用戶是/home/beinan ,而linuxsir 這個(gè)用戶是/home/linuxsir ;
第七字段:用戶所用SHELL 的類型,beinan和linuxsir 都用的是 bash ;所以設(shè)置為/bin/bash ;
2)關(guān)于UID 的理解:
UID 是用戶的ID 值,在系統(tǒng)中每個(gè)用戶的UID的值是唯一的,更確切的說(shuō)每個(gè)用戶都要對(duì)應(yīng)一個(gè)唯一的UID ,系統(tǒng)管理員應(yīng)該確保這一規(guī)則。系統(tǒng)用戶的UID的值從0開始,是一個(gè)正整數(shù),至于最大值可以在/etc/login.defs 可以查到,一般Linux發(fā)行版約定為60000; 在Linux 中,root的UID是0,擁有系統(tǒng)最高權(quán)限;
UID 在系統(tǒng)唯一特性,做為系統(tǒng)管理員應(yīng)該確保這一標(biāo)準(zhǔn),UID 的唯一性關(guān)系到系統(tǒng)的安全,應(yīng)該值得我們關(guān)注!比如我在/etc/passwd 中把beinan的UID 改為0后,你設(shè)想會(huì)發(fā)生什么呢?beinan這個(gè)用戶會(huì)被確認(rèn)為root用戶。beinan這個(gè)帳號(hào)可以進(jìn)行所有root的操作;
UID 是確認(rèn)用戶權(quán)限的標(biāo)識(shí),用戶登錄系統(tǒng)所處的角色是通過(guò)UID 來(lái)實(shí)現(xiàn)的,而非用戶名,切記;把幾個(gè)用戶共用一個(gè)UID 是危險(xiǎn)的,比如我們上面所談到的,把普通用戶的UID 改為0,和root共用一個(gè)UID ,這事實(shí)上就造成了系統(tǒng)管理權(quán)限的混亂。如果我們想用root權(quán)限,可以通過(guò)su或sudo來(lái)實(shí)現(xiàn);切不可隨意讓一個(gè)用戶和root分享同一個(gè)UID ;
UID是唯一性,只是要求管理員所做的,其實(shí)我們修改/etc/passwd 文件,可以修改任何用戶的UID的值為0,
一般情況下,每個(gè)Linux的發(fā)行版都會(huì)預(yù)留一定的UID和GID給系統(tǒng)虛擬用戶占用,虛擬用戶一般是系統(tǒng)安裝時(shí)就有的,是為了完成系統(tǒng)任務(wù)所必須的用戶,但虛擬用戶是不能登錄系統(tǒng)的,比如ftp、nobody、adm、rpm、bin、shutdown等;
在Fedora 系統(tǒng)會(huì)把前499 個(gè)UID和GID 預(yù)留出來(lái),我們添加新用戶時(shí)的UID 從500開始的,GID也是從500開始,至于其它系統(tǒng),有的系統(tǒng)可能會(huì)把前999UID和GID預(yù)留出來(lái);以各個(gè)系統(tǒng)中/etc/login.defs中的 UID_MIN 的最小值為準(zhǔn); Fedora 系統(tǒng) login.defs的UID_MIN是500,而UID_MAX 值為60000,也就是說(shuō)我們通過(guò)adduser默認(rèn)添加的用戶的UID的值是500到60000之間;而Slackware 通過(guò)adduser不指定UID來(lái)添加用戶,默認(rèn)UID 是從1000開始;
2、關(guān)于/etc/shadow ;
1)/etc/shadow 概說(shuō);
/etc/shadow文件是/etc/passwd 的影子文件,這個(gè)文件并不由/etc/passwd 而產(chǎn)生的,這兩個(gè)文件是應(yīng)該是對(duì)應(yīng)互補(bǔ)的;shadow內(nèi)容包括用戶及被加密的密碼以及其它/etc/passwd 不能包括的信息,比如用戶的有效期限等;這個(gè)文件只有root權(quán)限可以讀取和操作,權(quán)限如下:
-r-------- 1 root root 1.5K 10月 16 09:49 /etc/shadow
/etc/shadow 的權(quán)限不能隨便改為其它用戶可讀,這樣做是危險(xiǎn)的。如果您發(fā)現(xiàn)這個(gè)文件的權(quán)限變成了其它用戶組或用戶可讀了,要進(jìn)行檢查,以防系統(tǒng)安全問題的發(fā)生;
如果我們以普通用戶查看這個(gè)文件時(shí),應(yīng)該什么也查看不到,提示是權(quán)限不夠:
[beinan@localhost ~]$ more /etc/shadow
/etc/shadow: 權(quán)限不夠
2)/etc/shadow 的內(nèi)容分析;
/etc/shadow 文件的內(nèi)容包括9個(gè)段位,每個(gè)段位之間用:號(hào)分割;我們以如下的例子說(shuō)明;
beinan:$1$VE.Mq2Xf$2c9Qi7EQ9JP8GKF8gH7PB1:13072:0:99999:7:::
linuxsir:$1$IPDvUhXP$8R6J/VtPXvLyXxhLWPrnt/:13072:0:99999:7::13108:
第一字段:用戶名(也被稱為登錄名),在/etc/shadow中,用戶名和/etc/passwd 是相同的,這樣就把passwd 和shadow中用的用戶記錄聯(lián)系在一起;這個(gè)字段是非空的;
第二字段:密碼(已被加密),如果是有些用戶在這段是x,表示這個(gè)用戶不能登錄到系統(tǒng);這個(gè)字段是非空的;
第三字段:上次修改口令的時(shí)間;這個(gè)時(shí)間是從1970年01月01日算起到最近一次修改口令的時(shí)間間隔(天數(shù)),您可以通過(guò)passwd 來(lái)修改用戶的密碼,然后查看/etc/shadow中此字段的變化;
第四字段:兩次修改口令間隔最少的天數(shù);如果設(shè)置為0,則禁用此功能;也就是說(shuō)用戶必須經(jīng)過(guò)多少天才能修改其口令;此項(xiàng)功能用處不是太大;默認(rèn)值是通過(guò)/etc/login.defs文件定義中獲取,PASS_MIN_DAYS 中有定義;
第五字段:兩次修改口令間隔最多的天數(shù);這個(gè)能增強(qiáng)管理員管理用戶口令的時(shí)效性,應(yīng)該說(shuō)在增強(qiáng)了系統(tǒng)的安全性;如果是系統(tǒng)默認(rèn)值,是在添加用戶時(shí)由/etc/login.defs文件定義中獲取,在PASS_MAX_DAYS 中定義;
第六字段:提前多少天警告用戶口令將過(guò)期;當(dāng)用戶登錄系統(tǒng)后,系統(tǒng)登錄程序提醒用戶口令將要作廢;如果是系統(tǒng)默認(rèn)值,是在添加用戶時(shí)由/etc/login.defs文件定義中獲取,在PASS_WARN_AGE 中定義;
第七字段:在口令過(guò)期之后多少天禁用此用戶;此字段表示用戶口令作廢多少天后,系統(tǒng)會(huì)禁用此用戶,也就是說(shuō)系統(tǒng)會(huì)不能再讓此用戶登錄,也不會(huì)提示用戶過(guò)期,是完全禁用;
第八字段:用戶過(guò)期日期;此字段指定了用戶作廢的天數(shù)(從1970年的1月1日開始的天數(shù)),如果這個(gè)字段的值為空,帳號(hào)永久可用;
第九字段:保留字段,目前為空,以備將來(lái)Linux發(fā)展之用;
如果更為詳細(xì)的,請(qǐng)用 man shadow來(lái)查看幫助,您會(huì)得到更為詳盡的資料;
我們?cè)俑鶕?jù)實(shí)例分析:
beinan:$1$VE.Mq2Xf$2c9Qi7EQ9JP8GKF8gH7PB1:13072:0:99999:7:::
linuxsir:$1$IPDvUhXP$8R6J/VtPXvLyXxhLWPrnt/:13072:0:99999:7::13108:
第一字段:用戶名(也被稱之為登錄名),在例子中有峽谷兩條記錄,也表示有兩個(gè)用戶beinan和linuxsir
第二字段:被加密的密碼,如果有的用戶在此字段中是x,表示這個(gè)用戶不能登錄系統(tǒng),也可以看作是虛擬用戶,不過(guò)虛擬用戶和真實(shí)用戶都是相對(duì)的,系統(tǒng)管理員隨時(shí)可以對(duì)任何用戶操作;
第三字段:表示上次更改口令的天數(shù)(距1970年01月01日),上面的例子能說(shuō)明beinan和linuxsir這兩個(gè)用戶,是在同一天更改了用戶密碼,當(dāng)然是通過(guò)passwd 命令來(lái)更改的,更改密碼的時(shí)間距1970年01月01日的天數(shù)為13072;
第四字段:禁用兩次口令修改之間最小天數(shù)的功能,設(shè)置為0
第五字段:兩次修改口令間隔最多的天數(shù),在例子中都是99999天;這個(gè)值如果在添加用戶時(shí)沒有指定的話,是通過(guò)/etc/login.defs來(lái)獲取默認(rèn)值,PASS_MAX_DAYS 99999;您可以查看/etc/login.defs來(lái)查看,具體的值;
第六字段:提前多少天警告用戶口令將過(guò)期;當(dāng)用戶登錄系統(tǒng)后,系統(tǒng)登錄程序提醒用戶口令將要作廢;如果是系統(tǒng)默認(rèn)值,是在添加用戶時(shí)由/etc/login.defs文件定義中獲取,在PASS_WARN_AGE 中定義;在例子中的值是7 ,表示在用戶口令將過(guò)期的前7天警告用戶更改期口令;
第七字段:在口令過(guò)期之后多少天禁用此用戶;此字段表示用戶口令作廢多少天后,系統(tǒng)會(huì)禁用此用戶,也就是說(shuō)系統(tǒng)會(huì)不能再讓此用戶登錄,也不會(huì)提示用戶過(guò)期,是完全禁用;在例子中,此字段兩個(gè)用戶的都是空的,表示禁用這個(gè)功能;
第八字段:用戶過(guò)期日期;此字段指定了用戶作廢的天數(shù)(從1970年的1月1日開始的天數(shù)),如果這個(gè)字段的值為空,帳號(hào)永久可用;在例子中,我們看到beinan這個(gè)用戶在此字段是空的,表示此用戶永久可用;而linuxsir這個(gè)用戶表示在距1970年01月01日后13108天后過(guò)期,算起來(lái)也就是2005年11月21號(hào)過(guò)期;哈哈,如果有興趣的的弟兄,自己來(lái)算算,大體還是差不多的;);
第九字段:保留字段,目前為空,以備將來(lái)Linux發(fā)展之用;
本文來(lái)自CSDN博客,轉(zhuǎn)載請(qǐng)標(biāo)明出處:http://blog.csdn.net/wupan168/archive/2009/09/17/4563268.aspx