[ 永遠的UNIX::UNIX技術資料的寶庫 ]   GB | BIG5

首頁 > 安全技術 > 系統 > 正文
linux系統安全(二)
本文出自:http://www.xici.net 作者:大鷹 (2001-08-01 10:00:00)
5./etc/passwd文件 

/etc/passwd文件是UNIX安全的關鍵文件之一.該文件用用戶登錄時校驗 

用戶的口令,當然應當僅對root可寫.文件中每行的一般格式為: 

LOGNAME:PASSWORD:UID:GID:USERINFO:HOME:SHELL 

每行的頭兩項是登錄名和加密的口令,面的兩個數是UID和GID,接著的 

一項是系統管理員想寫入的有關該用戶的任何信息,最兩項是兩個路徑名: 

一個是分配給用戶的HOME目錄,第二個是用戶登錄將執行的shell(若為空格則缺省為
/bin/sh). 


(1)口令時效 

/etc/passwd文件的格式使系統管理員能要求用戶定期地改變他們的口令. 

在口令文件中可以看到,有些加密的口令有逗號,逗號有幾個字符和一個冒號.如:


steve:xyDfccTrt180x,M.y8:0:0:admin:/:/bin/sh 

restrict:pomJk109Jky41,.1:0:0:admin:/:/bin/sh 

pat:xmotTVoyumjls:0:0:admin:/:/bin/sh 

可以看到,steve的口令逗號有4個字符,restrict有2個,pat沒有逗號. 

逗號第一個字符是口令有效期的最大周數,第二個字符決定了用戶再次 

修改口信之前,原口令應使用的最小周數(這就防止了用戶改了新口令立刻又改回成
老口令).其余字符表明口令最新修改時間. 

要能讀懂口令中逗號的信息,必須首先知道如何用passwd_esc計數,計 

數的方法是: .=0 /=1 0-9=2-11 A-Z=12-37 a-z=38-63 

系統管理員必須將前兩個字符放進/etc/passwd文件,以要求用戶定期的 

修改口令,另外兩個字符當用戶修改口令時,由passwd命令填入. 

注意:若想讓用戶修改口令,可在最一次口令被修改時,放兩個".",則下 

一次用戶登錄時將被要求修改自己的口令. 

有兩種特殊情況: 

. 最大周數(第一個字符)小最小周數(第二個字符),則不允許用戶修改 

口令,僅超級用戶可以修改用戶的口令. 

. 第一個字符和第二個字符都是".",這時用戶下次登錄時被要求修改口 

令,修改口令,passwd命令將"."刪除,此再不會要求用戶修改口令. 



(2)UID和GID 

/etc/passwd中UID信息很重要,系統使用UID而不是登錄名區別用戶.一般 

來說,用戶的UID應當是獨一無二的,其他用戶不應當有相同的UID數值.根據慣例,從0到
99的UID保留用作系統用戶的UID(root,bin,uucp等). 

如果在/etc/passwd文件中有兩個不同的入口項有相同的UID,則這兩個用 

戶對相互的文件具有相同的存取權限. 


6./etc/group文件 


/etc/group文件含有關小組的信息,/etc/passwd中的每個GID在本文件中 
應當有相應的入口項,入口項中列出了小組名和小組中的用戶.這樣可方便地了解每個
小組的用戶,否則必須根據GID在/etc/passwd文件中從頭至尾地尋找同組用戶. 

/etc/group文件對小組的許可權限的控制並不是必要的,因為系統用UID,GID 

(取自/etc/passwd)決定文件存取權限,即使/etc/group文件不存在系統中,具有相同
的GID用戶也可以小組的存取許可權限共享文件. 

小組就像登錄用戶一樣可以有口令.如果/etc/group文件入口項的第二個域 
為非空,則將被認為是加密口令,newgrp命令將要求用戶給出口令,然將口令加密,再
與該域的加密口令比較. 

給小組建立口令一般不是個好作法.第一,如果小組內共享文件,若有某人猜 
著小組口令,則該組的所有用戶的文件就可能泄漏;其次,管理小組口令很費事,因為對
小組沒有類似的passwd命令.可用/usr/lib/makekey生成一個口令寫入 
/etc/group. 

以下情況必須建立新組: 

(1)可能要增加新用戶,該用戶不屬任何一個現有的小組. 

(2)有的用戶可能時常需要獨自為一個小組. 

(3)有的用戶可能有一個SGID程序,需要獨自為一個小組. 

(4)有時可能要安裝運行SGID的軟件系統,該軟件系統需要建立一個新組. 

要增加一個新組,必須編輯該文件,為新組加一個入口項. 

由用戶登錄時,系統從/etc/passwd文件中取GID,而不是從/etc/group中 

取GID,所以group文件和口令文件應當具有一致性.對一個用戶的小組,UID和GID應當
是相同的.多用戶小組的GID應當不同任何用戶的UID,一般為5位數,這樣在查看/etc
/passwd文件時,就可根據5位數據的GID識別多用戶小組,這將減少增加新組,新用戶時
可能產生的混淆. 


7.增加,刪除,移走用戶 


(1)增加用戶 

增加用戶有三個過程: 

. 在/etc/passwd文件中寫入新用戶的入口項. 

. 為新登錄用戶建立一個HOME目錄. 

. 在/etc/group中為新用戶增加一個入口項. 

在/etc/passwd文件中寫入新的入口項時,口令部分可先設置為NOLOGIN, 

以免有人做為此新用戶登錄.在修改文件前,應mkdir /etc/ptmp,以免他人同時修改此
文件.新用戶一般獨立為一個新組,GID號與UID號相同(除非他要加入目前已存在的一個
新組),UID號必須和其他人不同,HOME目錄一般設置在/usr或/home目錄下建立一個以用
戶登錄名為名稱的目錄做為其主目錄. 



(2)刪除用戶 

刪除用戶與加用戶的工作正好相反,首先在/etc/passwd和/etc/group文 

件中刪除用戶的入口項,然刪除用戶的HOME目錄和所有文件. 

rm -r /usr/loginname 刪除整個目錄樹. 

如果用戶在/usr/spool/cron/crontabs中有crontab文件,也應當刪除. 



(3)將用戶移到另一個系統 

這是一個復雜的問題,不只是拷貝用戶的文件和用戶在/etc/passwd文件 

中的入口項.首先一個問題是用戶的UID和GID可能已經用另一個系統,若是出現這種
情況,必須給要移的用戶分配另外的UID和GID,如果改變了用戶的UID和GID,則必須搜索
該用戶的全部文件,將文件的原UID和GID改成新的UID和GID. 

用find命令可以完成這一修改: 

find . -user olduid -exec chown newuid {} ; 

find . -group oldgid -exec chgrp newgid {} ; 

也許還要為用戶移走其它一些文件: 

/usr/mail/user和/usr/spool/cron/crontabs/user. 

如果用戶從一個不是本系統管理員的系統移來,則應對該用戶的目錄結構 

運行程序來檢查.一個不安全系統的用戶,可能有與該用戶其它文件存在一起的SUID/S
GID程序,而這個SUID/SGID程序屬另一個用戶.在這種情況下,如果用cpio或tar命令
將用戶的目錄結構拷貝到本系統,SUID/SGID程序也將會拷貝到本系統而沒有任何警告
信息.應當在允許用戶使用新系統以前先刪除這種文件的SUID/SGID許可.總之,始終堅
持檢查所移用戶的文件總是更安全些.也可以用su命令進入用戶的戶頭,再拷貝用戶文
件,這樣文件的所有者就是該用戶,而不是root. 
(http://www.fanqiang.com)
    進入【UNIX論壇

相關文章
linux系統安全(三) (2001-08-01 12:00:00)
linux系統安全(二) (2001-08-01 10:00:00)
linux系統安全(一) (2001-08-01 09:00:00)
 

★  樊強制作 歡迎分享  ★