Ubuntu中的用戶管理(四)密碼管理
相關鏈接:
Ubuntu中的用戶管理(一)用戶賬戶
http://www.2cto.com/os/201207/143927.html;
Ubuntu中的用戶管理(二)群組管理
http://www.2cto.com/os/201207/143929.html;
Ubuntu中的用戶管理(三)用戶管理
http://www.2cto.com/os/201207/143932.html
密碼是Linux安全的重要組成部分,通過這部分的學習,你應該學會怎樣為你的Linux系統建立一個密碼策略,密碼保存在什麼地方,怎樣為你的用戶管理密碼等。
有效的密碼策略是一個好的系統管理計劃的重要組成部分。這個策略需要包括以下幾點:
允許的密碼組成和禁止的密碼組成
修改密碼的頻率
取回或重置丟失的密碼
用戶對密碼的操作
密碼文件是/etc/passwd,它是系統上所有用戶的數據庫文件。每一行的形式如下:
username:password:uid:gid:gecos:homedir:shell
簡要介紹下gecos字段。這個字段是為了記錄用戶的多樣性的信息。例如,用戶的全名,辦公室的位置,辦公室電話,家庭電話,簡單備注等。出於安全和隱私上的考慮,這個字段目前已經越來越少的被使用到了。但是,系統管理員要知道這個字段,因為傳統的Unix程序例如finger,mail會用到這個字段。因此gecos字段通常被成為finger information field。這個字段是逗號界限格式,可以通過chfn(change finger)命令更改。如果密碼字段出現一個星號,那麼這個用戶將不能登陸Linux系統。系統管理員可以通過修改密碼字段或者使用passwd -l命令鎖住用戶。一些系統用戶通常有root權限,因此系統管理員不希望這些用戶可以登陸Linux系統,可以通過將這些系統用戶的shell設置為sbin/nologin或者bin/false阻止這些賬戶的登陸。
www.2cto.com
下面給出/etc/passwd文件的內容形式:
cindy@cindy-ThinkPad-X200:~$cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh
man:x:6:12:man:/var/cache/man:/bin/sh
lp:x:7:7:lp:/var/spool/lpd:/bin/sh
mail:x:8:8:mail:/var/mail:/bin/sh
news:x:9:9:news:/var/spool/news:/bin/sh
uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh
cindy:x:1000:1000:cindy,,,:/home/cindy:/bin/bash
www.2cto.com
……
我們注意到沒有一個用戶顯示了密碼,而是在密碼字段有一個x。這是因為用戶密碼是陰影密碼(shadow passwords),這屬於Linux中的一個安全增強機制。真正的密碼保存在文件/etc/shadow中。/etc/shadow文件只對於系統管理員和PAM可讀。Ubuntu中自動啟用了shadow password。下面給出/etc/shadow文件的內容形式:
cindy@cindy-ThinkPad-X200:~$sudo cat /etc/shadow
[sudo]password for cindy:
root:$7$h9pRtnF/$Zf8pynVBJ/m.DfAl.Q1lgw8ZCmeGYqKCe/47sNfEV6FUq59UnB1CTcZVr4.7AwtyLpizdnwlqxe0f2J/mD6th.:15536:0:99999:7:::
daemon:*:15453:0:99999:7:::
bin:*:15453:0:99999:7:::
sys:*:15453:0:99999:7:::
www.2cto.com
sync:*:15453:0:99999:7:::
games:*:15453:0:99999:7:::
man:*:15453:0:99999:7:::
lp:*:15453:0:99999:7:::
cindy:$6$/IMKHjoh$osdeLeLwe3f11QXlRts2huVISmSKUpTyaDeXihtYV39.7OAqakAeLda4WAWXpIeeopBmrU/zCDaKhp/aL1gqW1:15536:0:99999:7:::
……
冒號分開的各個字段的解釋:
第1個字段是用戶名。
第2個字段是編碼後的密碼。
第3個字段是上次修改密碼的時間,這個時間是從1970年1月1日起計算。這個日子在UNIX領域被成為epoch。
第4個字段是再過多少天密碼才可以被再次修改的時間(避免修改密碼到新密碼後快速修改會原始密碼) www.2cto.com
第5個字段是再過多少天密碼必須被再次修改的時間。
第6個字段是密碼過期前多少天,用戶會收到警告。
第7個字段是密碼過期後多少天,用戶會被禁用。
第8個字段是從1970年1月1日起,該帳號disabled的天數。
第9個字段為保留字段。
需要注意的是密碼過期日期和警告在Ubuntu中是默認禁用的。如果需要啟用相應的密碼策略,需要系統管理員建立相應的密碼策略。etc/shadow的權限時600,常規用戶不可讀。
系統管理員可以手動編輯/etc/shadow文件或者使用chage命令更改密碼規則(詳細信息請參考shadow和chage的man頁)。
系統管理員可通過命令chpasswd批量修改用戶密碼。命令接受的輸入為用戶名/密碼對:
sudo chpasswd username:password
可以通過重定向文件輸入來批量工作。此外,Ubuntu還提供了newusers命令,批量增加文本文件中的用戶,並為用戶分配群組,分配/home目錄等。
作者 lqhbupt