Linux操作系統(tǒng)下用戶和用戶配置文件解析

字號:

除了像Windows系統(tǒng)一樣新建用戶帳戶外,在Linux系統(tǒng)中同樣有一些用戶帳戶是在系統(tǒng)安裝后就有的,就像Windows系統(tǒng)中的內置帳戶一樣。如果您想了解Linux系統(tǒng)的一些帳號,可以通過查看/etc/passwd文件實現(xiàn),如下所示。
    root:x:0:0:root:/root:/bin/bash
    bin:x:1:1:bin:/bin:/sbin/nologin
    daemon:x:2:2:daemon:/sbin:/sbin/nologin
    adm:x:3:4:adm:/var/adm:/sbin/nologin
    lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
    sync:x:5:0:sync:/sbin:/bin/sync
    shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
    halt:x:7:0:halt:/sbin:/sbin/halt
    mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
    news:x:9:13:news:/etc/news:
    uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
    operator:x:11:0:operator:/root:/sbin/nologin
    games:x:12:100:games:/usr/games:/sbin/nologin
    gopher:x:13:30:gopher:/var/gopher:/sbin/nologin
    ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
    nobody:x:99:99:Nobody:/:/sbin/nologin
    dbus:x:81:81:System message bus:/:/sbin/nologin
    vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin
    rpm:x:37:37::/var/lib/rpm:/sbin/nologin
    haldaemon:x:68:68:HAL daemon:/:/sbin/nologin
    netdump:x:34:34:Network Crash Dump user:/var/crash:/bin/bash
    nscd:x:28:28:NSCD Daemon:/:/sbin/nologin
    sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
    rpc:x:32:32:Portmapper RPC user:/:/sbin/nologin
    rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
    nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
    mailnull:x:47:47::/var/spool/mqueue:/sbin/nologin
    smmsp:x:51:51::/var/spool/mqueue:/sbin/nologin
    pcap:x:77:77::/var/arpwatch:/sbin/nologin
    apache:x:48:48:Apache:/var/www:/sbin/nologin
    squid:x:23:23::/var/spool/squid:/sbin/nologin
    webalizer:x:67:67:Webalizer:/var/www/usage:/sbin/nologin
    xfs:x:43:43:X Font Server:/etc/X11/fs:/sbin/nologin
    ntp:x:38:38::/etc/ntp:/sbin/nologin
    gdm:x:42:42::/var/gdm:/sbin/nologin
    htt:x:100:101:IIIMF Htt:/usr/lib/im:/sbin/nologin
    winda:x:500:500:wangda:/home/winda:/bin/bash
    cyrus:x:76:12:Cyrus IMAP Server:/var/lib/imap:/bin/bash
    named:x:25:25:Named:/var/named:/sbin/nologin
    pegasus:x:66:65:tog-pegasus OpenPegasus WBEM/CIM services:/var/lib/Pegasus:/sbin/nologin
    alice:x:501:501:Alicechen:/home/alice:/bin/bash
    exim:x:93:93::/var/spool/exim:/sbin/nologin
    postfix:x:89:89::/var/spool/postfix:/sbin/nologin
    mailman:x:41:41:GNU Mailing List Manager:/usr/lib/mailman:/sbin/nologin
    amanda:x:33:6:Amanda user:/var/lib/amanda:/bin/bash
    與用戶相關的配置文件主要有兩個:
    /etc/passwd :用戶配置文件;
    /etc/shadow :用戶影子口令文件;
    Password文件內容參見上面內容,只有root帳戶才有權限修改。該文件中包含了系統(tǒng)中所有用戶的用戶名和它們的相關信息。每個用戶帳號在文件中對應一行,并且用冒號(;)分為7個部分(Linux系統(tǒng)中稱為“域”),各部分間用冒號(:)分隔。格式如下:
    帳戶名:是否有加密口令:用戶ID:組ID:帳戶全名或描述:登錄目錄:登錄shell
    如上面列出的root用戶在此文件中所對應的行為:
    root:x:0:0:root:/root:/bin/bash
    它表示root帳戶的是有密碼的(以x表示,沒有x的表示沒有設置密碼),用戶ID和組ID號均為“0”(內置帳戶的用戶ID和組ID均小于500,而新建的帳戶用戶ID和組ID均等于或大于500),帳戶全名為root,所用的登錄shell有為/bin/bash。
    /etc/passwd文件對系統(tǒng)的所有用戶都是可讀的,這樣的好處是每個用戶都可以知道系統(tǒng)上有哪些用戶,但缺點是其他用戶的口令容易受到攻擊(尤其當口令較簡單時)。所以在像紅帽子和紅旗等品牌Linux中均使用影子口令格式,將用戶的口令存儲在另一個文件/etc/shadow中,該文件只有根用戶root可讀,因而大大提高了安全性。如下所示:
    root:$1$qnvzih07$LKCr9gldeq1ajos5tuLPH.:13670:0:99999:7:::
    bin:*:13670:0:99999:7:::
    daemon:*:13670:0:99999:7:::
    adm:*:13670:0:99999:7:::
    lp:*:13670:0:99999:7:::
    sync:*:13670:0:99999:7:::
    shutdown:*:13670:0:99999:7:::
    halt:*:13670:0:99999:7:::
    mail:*:13670:0:99999:7:::
    news:*:13670:0:99999:7:::
    uucp:*:13670:0:99999:7:::
    operator:*:13670:0:99999:7:::
    games:*:13670:0:99999:7:::
    gopher:*:13670:0:99999:7:::
    ftp:*:13670:0:99999:7:::
    nobody:*:13670:0:99999:7:::
    dbus:!!:13670:0:99999:7:::
    vcsa:!!:13670:0:99999:7:::
    rpm:!!:13670:0:99999:7:::
    haldaemon:!!:13670:0:99999:7:::
    netdump:!!:13670:0:99999:7:::
    nscd:!!:13670:0:99999:7:::
    sshd:!!:13670:0:99999:7:::
    rpc:!!:13670:0:99999:7:::
    rpcuser:!!:13670:0:99999:7:::
    nfsnobody:!!:13670:0:99999:7:::
    mailnull:!!:13670:0:99999:7:::
    smmsp:!!:13670:0:99999:7:::
    pcap:!!:13670:0:99999:7:::
    apache:!!:13670:0:99999:7:::
    squid:!!:13670:0:99999:7:::
    webalizer:!!:13670:0:99999:7:::
    xfs:!!:13670:0:99999:7:::
    ntp:!!:13670:0:99999:7:::
    gdm:!!:13670:0:99999:7:::
    htt:!!:13670:0:99999:7:::
    winda:$1$EzhNNTg6$Zgh0TrLsnuAnWOdb2w1ut.:13670:0:99999:7:::
    cyrus:!!:13670::::::
    named:!!:13670::::::
    pegasus:!!:13670::::::
    alice:$1$vw2uWRMJ$l20TPyj1M3L8x2uqUN/wn.:13670:0:99999:7:::
    exim:!!:13670::::::
    postfix:!!:13670::::::
    mailman:!!:13670::::::
    amanda:!!:13670::::::
    同樣,在這個文件中,也是每個用戶對應一行,并且用冒號分成九個部分(Linux系統(tǒng)中稱為“域”)。每一行的格式如下:
    用戶登錄名
    用戶加密后的口令(若為空,表示該用戶不需口令即可登錄,若為*號,表示該帳號被禁用)
    從1970年1月1日至口令最近一次被修改的天數(shù)
    口令在多少天內不能被用戶修改
    口令在多少天后必須被修改(0為沒有修改過)
    口令過期多少天后用戶帳號被禁止
    口令在到期多少天內給用戶發(fā)出警告
    口令自1970年1月1日被禁止的天數(shù)
    保留域
    同樣以root帳戶為例,它在上面的代碼為:
    root:$1$qnvzih07$LKCr9gldeq1ajos5tuLPH.:13670:0:99999:7:::
    對照上面的格式可以得出,它的用戶登錄名為root,加密口令為“$1$qnvzih07$LKCr9gldeq1ajos5tuLPH.”(因為是加密的,所以顯示的并不是直接的口令),從1970年1月1日至口令最近一次被修改的天數(shù)為13670天,口令不允許修改,口令在99999天后必須被修改,口令過期7天后用戶帳號被禁止,后面的3個域沒有配置。