/etc/passwd是使用者資料庫,其中的域給出了使用者名、加密密碼和使用者的其他資訊. /etc/shadow是在安裝了影子(shadow)密碼軟體的系統上的影子密碼檔案。影子密碼檔案将/etc/passwd 檔案中的加密密碼移動到/etc/shadow中,而後者隻對超級使用者(root)可讀。這使破譯密碼更困難,以此增加系統的安全性。
Linux /etc/shadow檔案中的記錄行與/etc/passwd中的一一對應,它由pwconv指令根據/etc/passwd中的資料自動産生。它的文 件格式與/etc/passwd類似,由若幹個字段組成,字段之間用“:”隔開。這些字段是:
登入名:加密密碼:最後一次修改時間:最小時間間隔:最大時間間隔:警告時間:不活動時間:失效時間:标志
1)“登入名”是與/etc/passwd檔案中的登入名相一緻的使用者賬号
2)“密碼”字段存放的是加密後的使用者密碼字,長度為13個字元。如果為空,則對應使用者沒有密碼,登
錄時不需要密碼;如果含有不屬于集合{./0-9A-Za-z}中的字元,則對應的使用者不能登入。
3)“最後一次修改時間”表示的是從某個時刻起,到使用者最後一次修改密碼時的天數。時間起點對不同
的系統可能不一樣。例如在SCOLinux中,這個時間起點是1970年1月1日。
4)“最小時間間隔”指的是兩次修改密碼之間所需的最小天數。
5)“最大時間間隔”指的是密碼保持有效的最大天數。
6)“警告時間”字段表示的是從系統開始警告使用者到使用者密碼正式失效之間的天數。
7)“不活動時間”表示的是使用者沒有登入活動但賬号仍能保持有效的最大天數。
8)“失效時間”字段給出的是一個絕對的天數,如果使用了這個字段,那麼就給出相應賬号的生存期。
期滿後,該賬号就不再是一個合法的賬号,也就不能再用來登入了。
下面是/etc/shadow的一個例子:
#cat /etc/shadow
root:Dnakfw28zf38w:8764:0:168:7:::
/etc/passwd
該目錄存儲的是作業系統使用者資訊,該檔案為所有使用者可見。
給linux系統添加一個帳号:
useradd -g mysql -d /home/test -m test(:建立一個使用者test, 屬于mysql組,開始目錄是/home/test)
然後進入 /etc/passwd,可以看到如下資訊,在最後一行可以看到剛加的使用者的資訊。如下
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
dovecot:x:97:97:dovecot:/usr/libexec/dovecot:/sbin/nologin
webalizer:x:67:67:Webalizer:/var/www/usage:/sbin/nologin
squid:x:23:23::/var/spool/squid:/sbin/nologin
pcap:x:77:77::/var/arpwatch:/sbin/nologin
haldaemon:x:68:68:HAL daemon:/:/sbin/nologin
xfs:x:43:43:X Font Server:/etc/X11/fs:/sbin/nologin
hsqldb:x:96:96::/var/lib/hsqldb:/sbin/nologin
gdm:x:42:42::/var/gdm:/sbin/nologin
hzmc:x:500:500:hzmc:/home/hzmc:/bin/bash
mysql:x:501:501::/home/mysql:/bin/bash
chenhua:x:503:501::/home/chenhua:/bin/bash
test:x:504:501::/home/test:/bin/bash
可以看出/etc/passwd檔案存放的是使用者的資訊,由6個分号組成的7個資訊,解釋如下
(1):使用者名。
(2):密碼(已經加密)
(3):UID(使用者辨別),作業系統自己用的
(4):GID組辨別。
(5):使用者全名或本地帳号
(6):開始目錄
(7):登入使用的Shell,就是對登入指令進行解析的工具。
下面為test使用者設定密碼,執行如下指令
passwd test
[root@localhost etc]# passwd test
Changing password for user test.
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
[root@localhost etc]#
然後進入/etc/shadow檔案下面可以看到如下資訊
gdm:!!:14302:0:99999:7:::
hzmc:$1$JZMjXqxJ$bvRpGQxbuRiEa86KPLhhC1:14302:0:99999:7:::
mysql:!!:14315:0:99999:7:::
chenhua:$1$YBJZNyXJ$BnpKFD58vSgqzsyRO0ZeO1:14316:0:99999:7:::
test:$1$hKjqUA40$OelB9h3UKOgnttKgmRpFr/:14316:0:99999:7:::
可以發現,共有9個欄目
(1):帳号名稱
(2):密碼:這裡是加密過的,但高手也可以解密的。要主要安全問題(代!符号辨別該帳号不能用
來登入)
(3):上次修改密碼的日期
(4):密碼不可被變更的天數
(5):密碼需要被重新變更的天數(99999表示不需要變更)
(6):密碼變更前提前幾天警告
(7):帳号失效日期
(8):帳号取消日期
(9):保留條目,目前沒用
Unix 系統最初是用明文儲存密碼的,後來由于安全的考慮,采用crypt()算法加密密碼并存放在/etc/passwd檔案。現在,由 于計算機處理能力的提高,使密碼破解變得越來越容易。/etc/passwd檔案是所有合法使用者都可通路的,大家都可互相看到密碼的加密字元串,這給系統 帶來很大的安全威脅。現代的Unix系統使用影子密碼系統,它把密碼從/etc/passwd檔案中分離出來,真正的密碼儲存在/etc/shadow檔案中,shadow檔案隻能由超級使用者通路。這樣入侵者就不能獲得加密密碼串,用于破 解。使用shadow密碼檔案後,/etc/passwd檔案中所有帳戶的password域的内容為"x",如果password域的内容為"*",則 該帳号被停用。使用passwd這個程式可修改使用者的密
