6.1/etc/passwd文件
用戶登錄時Linux識別用戶的文件/etc/passwd
/etc/passwd包括7個字段:
登錄名(不超過32位,使用NIS系統後不超過8位)
經過加密的口令或口令占位符(大多數實際放在/etc/shadow文件中,默認采用MD5加密(加密後34位),SUSE中采用Blowfish,通過passwd命令設置)
UID(用戶ID)號(32位無符號數,建議限制為32767內,root的UID為0,讓多個賬號UID為0會產生潛在安全漏洞,LDAP是一種流行的UID管理工具)
默認的GID(組ID)號(/etc/group文件中定義,GID 0:root組,GID 1:bin組,GID 2:daemon組,默認GID在創建新文件和目錄時起作用)
“GECOS”信息:全名、辦公室、分機號、住宅電話(記錄用戶個人信息,finger,chfn,GECOS信息非常適合LDAP管理)
主目錄(修改/etc/login.def的DEFAULT_HOME為no,則會禁止沒有主目錄的用戶登錄)
登錄shell(chsh命令改變自己所用的shell,/etc/shells文件中包含chsh命令允許用戶使用的shell列表,向shell文件中增加項,必須使用絕對路徑)
6.2/etc/shadow文件
格式: root:$1$buJ6v3Ch$bwLIof5each9Nv.OEzD3T0:13348:0:180:14::14974:
只有超級用戶才能讀/etc/shadow文件
在使用隱蔽口令系統的情況下,/etc/passwd文件中原來的口令字段一定要包含一個x
管理員必須兩個文件/etc/shadow和/etc/passwd都維護(或使用useradd工具自行維護)
可以使用pwconv工具讓shadow文件和passwd文件內容保持一致
/etc/shadow文件9個字段:
登錄名 (和/etc/passwd中相同)
加密後的口令
上次修改口令的時間 (從1970年1月1日開始的天數)
兩次修改口令之間最少的天數 (防止用戶修改口令後馬上改回口令,建議設置0)
兩次修改口令之間最多的天數
提前多少天警告用戶口令將過期
賬號過期的日期 (從1970年1月1日開始的天數)
保留字段,目前為空
6.3/etc/group文件
格式:
wheel:x:10:net,evi,lynda,boggs,tom,millert
student:*:200:dotty
newgrp命令讓不屬於某個組的用戶變為屬於該組
/etc/group文件包含4個字段:
組名 (盡量限制在8個字符內)
加密的口令或者包含一個x,表明有一個gshadow文件
GID號 (為避免與廠商提供的GID沖突,建議從GID 500開始分配本地組)
成員列表,彼此用逗號隔開(不要加空格)
6.4添加用戶
為新用戶創建賬號之前,該用戶在本地用戶協議和政策聲明的副本上簽字並注明日期是非常重要的
系統所需的步驟:
編輯passwd和shadow文件定義用戶賬號:
把用戶添加到/etc/group文件裡
設置一個初始口令
創建用戶主目錄,用chown和chmod命令改變用戶主目錄的屬主和屬性
為用戶進行的步驟:
將默認的啟動文件復制到用戶的主目錄中
設置用戶的郵件主目錄並建立郵件別名
為管理員准備的步驟:
核實賬號是否設置正確
將用戶的聯系信息和賬號狀態加入數據庫
1)編輯passwd和shadow文件
Fedora和RHEL系統使用vipw編輯passwd文件後會詢問是否再編輯shadow文件,SUSE、Debian和Ubuntu使用vipw -s實現上述功能
添加賬號linda到/etc/passwd:
linda:x:2000:2000:linda,,,:/home/linda:/bin/sh
在/etc/shadow文件中添加:
linda:*:16268:0:99999:7:::
2)編輯/etc/group文件
linda::2000:linda
3)設置初始口令
passwd linda
4)創建用戶主目錄
mkdir /home/linda
chown linda:linda /home/linda
chmod 700 /home/linda
5)復制默認啟動文件
cp /etc/skel/[a-zA-Z]* ~linda (skel在ubuntu12.04下是在/etc/skel,其他系統下請 find / -name skel)
chown linda:linda ~linda/[a-zA-Z]*
chmod 600 ~linda/[a-zA-Z]* (注意,不能寫成~linda/.*,因為這也包括..(/home),將導致linda不但是自己文件的屬主,也是其父目錄的屬主,很危險)
6)設置用戶的郵件主目錄
見18.3.2節
7)驗證新的登錄
退出登錄,再以新用戶身份登錄,並執行命令
pwd /*核實主目錄*/
ls -al /*檢查啟動文件的屬主和屬組*/
8)記錄用戶狀態和聯系信息
維護聯系信息和賬號狀態數據庫
6.5刪除用戶
手工刪除用戶步驟:
將用戶從所有本地用戶數據庫或者電話簿中刪除
將用戶從alias文件中刪除,或者添加一個轉發地址
刪除用戶的crontab文件和所有掛起的at作業
終止所有仍在運行的用戶進程
將用戶從passwd、shadow、group和gshadow文件中刪除
刪除用戶主目錄
刪除用戶的郵件存儲文件
6.6禁止登錄
方法1)在加密的口令前添加一個星號或其他字符,使其無法通過口令訪問登錄
方法2)usermod -L linda 和usermod -U linda分別表示對口令上鎖和解鎖(SUSE無效)
方法3)替換用戶的shell,這個偽shell不在/etc/shells中
6.7賬號管理工具
useradd命令把用戶添加到passwd文件中(如果可以的話,還會添加到shadow文件中)
usermod命令可以改變已有用戶在passwd文件中的條目
userdel命令可以將用戶從系統中刪除,還可以刪除用戶的主目錄
groupadd、groupmod、groupdel可以對/etc/group文件操作
添加用戶
useradd -c "David Hilbert" -d /home/hilbert -g facultry -G famous -m -s /bin/sh hibert
效果如下:
在/etc/passwd中(hilbert:x:1005:30:David Hilbert:/home/hilbert:/bin/sh)
在/etc/shadow中(hiblert:!:11508:0:99999:7:0::)
在/etc/group中(將hilbert添加到faculty和famous組中)
創建了主目錄/home/hilbert
復制了/etc/skel的內容到主目錄中
刪除用戶
userdel hilbert
刪除了passwd、shadow和group文件中與hilbert相關的資料
加上-r選項後會刪除用戶的主目錄