Linux中/etc/passwd、/etc/shadow文件字段的含義以及用處

    今天本人學習到了兩個個Linux中非常重要的文件,它們承載著Linux用戶的相關信息,如果在賬號方面出現一些密碼相關的問題,就可以來找這兩個文件查看和分析一番。

    他們分別是/etc/passwd和/etc/shadow兩個文件,他們都存放于/etc目錄中,都可以使用cat命令來查看其內容。

    /etc/passwd的內容類似于這樣:

        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
        operator:x:11:0:operator:/root:/sbin/nologin
        games:x:12:100:games:/usr/games:/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
        polkitd:x:999:998:User for polkitd:/:/sbin/nologin
        avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
        avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin
        postfix:x:89:89::/var/spool/postfix:/sbin/nologin
        sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
        gentoo:x:1000:1002:Gentoo Distribution:/home/gentoo:/bin/bash

    其中每一條代表一個賬戶,每個條目有7個字段分別用(:)冒號分開,它們每一個字段都有自己的含義。下面我來具體描述下每個字段的含義。

        USERNAME:PASSWORD:UID:GID:COMMENT:HOME DIRECTORY:SHELL

    USERNAME:用戶名

    PASSWORD:用戶密碼

    UID:用戶識別碼

        0:為系統管理員root

        1-499:系統用戶(其中CentOS6是1-499,CentOS7是1-999)系統用戶請一定保留出來,因為系統的一些進程用到的用戶名的ID如果占用了,會造成一些錯誤,所以還請保留。

        1000-65535:為普通用戶(暫時用這些也夠了,其實2.6的核心已經支持2^32了)

    GID:用戶組識別碼

        不同的用戶可以屬于同一個組,享有該用戶組共有的權限。

    COMMENT:賬號描述

    HOME DIRECTORY:用戶的家目錄,一般創建的新用戶的家目錄都在/home/USERNAME同名的目錄,這個目錄也是可以修改和移動的。每一個用戶的家目錄都會從/etc/skel/中復制文件

    Shell:用戶默認的shell,可以修改/etc/default/useradd文件來改變默認的shell,可用的shell可以在/etc/shells中查看。

   

    /etc/shadow

       root:$6$9HRSe8I3Sbgcigq7$WhKt.yxTsI.eC38Cks/lNkRExXN/xnuazSfHrcipg3L.vF9qo.U1b.QRGSbEkMvxtBSP0Vy1C7WybuSVUwMU4/:16801:0:99999:7:::
       bin:*:16231:0:99999:7:::
       daemon:*:16231:0:99999:7:::
       adm:*:16231:0:99999:7:::
        lp:*:16231:0:99999:7:::
       sync:*:16231:0:99999:7:::
       shutdown:*:16231:0:99999:7:::
       halt:*:16231:0:99999:7:::
       mail:*:16231:0:99999:7:::
       operator:*:16231:0:99999:7:::
       games:*:16231:0:99999:7:::
       ftp:*:16231:0:99999:7:::
       nobody:*:16231:0:99999:7:::
       dbus:!!:16801::::::
       polkitd:!!:16801::::::
       avahi:!!:16801::::::
       avahi-autoipd:!!:16801::::::
       postfix:!!:16801::::::
       sshd:!!:16801::::::
       gentoo:$6$uTTHTd9m$/pWKUhUvCdjvgRjivCUil8M8UUBKaFPTQgUQVGh4MZ1lDa7RPyeAZuvC0v.AcL5x5CEeXzBYe2bk4pVUgfw5/0:16811:0:99999:7:::

   九個字段的含義:賬戶名:密碼:最近一次修改的日期:密碼多久之內不能被修改:口令需要變更的天數:口令變更前的提醒天數:口令過期后的寬限時間:賬號失效日期:保留字段        

    第一字段  帳戶名稱 (與/etc/passwd保持一致)

    第二字段  帳戶口令(即密碼, 加密過的所以是一串字符,如果是在密碼欄的第一個字元為‘ * ’或者是‘ ! ’,表示這個帳號并不會被用來登入的意思,經過本人測試,如果將第一個字符修改成"*"此賬號將無法登錄)

    第三字段  最近一次修改的日期

    每四字段  密碼多久之內不能被修改, 以天為單位

    第五字段  口令需要變更的天數 (出于安全考慮, 可以這樣設置,強制用戶多久換一次密碼)

    第六字段  口令變更前的提醒天數(根據第五個字段, 前多少天提醒用戶去修改口令)

    第七字段  口令過期后的寬限時間(即第五字段過期后還可以寬限的天數, 過了這個天數帳號就會默認為失效了)

    第八字段  帳號失效日期(帳號如果超出這個設置后就會失效, 通過用在收費服務中, 或者我們的后臺任務當時, 任務完成帳號失效等)

    第九字段  保留字段, 目前無實際應用

    

    下面兩個命令是這兩個文件相關的,可以作為參考。

    pwconv
    根據/etc/passwd文件生成/etc/shadow。它把所有口令從/etc/passwd移到/etc/shadow中。
    pwunconv
    將/etc/shadow中的信息盡可能地恢復到/etc/passwd。

    

    像我們這種新手經常會碰到root密碼忘記的問題,所以我借鑒了網上各位大神的處理方式,在這里分享出來。

     1、啟動grub菜單,選擇編輯選項啟動。

    blob.png

    2 – 按鍵盤e鍵,來進入編輯界面

    blob.png

    3 – 找到Linux 16的那一行,將ro改為rw init=/sysroot/bin/sh

    blob.png

    4 – 現在按下 Control+x ,使用單用戶模式啟動

    blob.png

    5 – 現在,可以使用下面的命令訪問系統

     chroot /sysroot    # 改變系統根目錄(指定臨時根目錄)
     passwd root         # 修改root用戶的密碼
     touch /.autorelabel # 更新系統信息
     exit                # 退出
     reboot              # 重啟系統

    好了,重啟之后就可以用新設置的密碼登錄了,今天就寫到這里,希望能夠幫助到和我一樣剛剛入門的新手。謝謝大家。

   

原創文章,作者:qiaojia596,如若轉載,請注明出處:http://www.www58058.com/10956

(6)
qiaojia596qiaojia596
上一篇 2016-01-14
下一篇 2016-01-14

相關推薦

  • N26-第十周

    1、請詳細描述CentOS系統的啟動流程(詳細到每個過程系統做了哪些事情)     看到同學的圖不錯拿來用用 ~ ~      2、為運行于虛擬機上的CentOS 6添加一塊新硬件,提供兩個主分區;  (1) 為硬盤新建兩個主分區;并為其安裝grub;  (2) 為硬盤的第一個主…

    2017-03-26
  • Linux基礎(四)——用戶管理&grep命令

    1、  復制/etc/skel目錄為/home/tuser1,要求/home/tuser1及其內部文件的屬組和其它用戶均沒有任何訪問權限。 cp /etc/skel/ /home/tuser1 –r chmod -R 700 /home/tuser1/ 2、  編輯/etc/group文件,添加組hadoop。 echo "ha…

    Linux干貨 2016-11-08
  • Linux之bash shell腳本編程入門篇(一)

    什么是bash shell腳本編程? 答:Linux里面有多種shell,而CentOS和redhat的默認shell是bash shell。至于shell腳本,這個跟windows操作系統里面的批處理文件有點像(.bat的文件)。不知道大家還是否記得Linux的哲學思想嗎?其中有那么兩點點:由眾多目的的單一應用程序組成:一個程序只做一件事,且做好;組合目的…

    Linux干貨 2016-08-15
  • N26-第二周

    1、Linux上的文件管理類命令都有哪些,其常用的使用方法及相關示例演示;   1)alias:命令別名;     # alias ;獲取所有可用別名的定義;     # alias NAME=‘COMMAND’:定義別名;    &nbs…

    Linux干貨 2017-02-11
  • 自制簡易linux系統

    一、環境準備 1.筆記本電腦 2.vmware12軟件 3.CentOS 6虛擬機 4.大于5G空間的物理磁盤分區 二、分區并掛載文件系統 1.添加磁盤 在vmware中選中CentOS 6系統并右擊鼠標選擇設置,添加–>硬盤–>SCSI(推薦)–>創建新虛擬磁盤–>大小改為5G–>完成 2.分區并…

    Linux干貨 2016-09-20
  • 進程與計劃任務

    PID 進程號,用來標記各個進程;CentOS6中起始的第一個進程為init7中為systemd 進程優先級: 系統優先級:數字越小,優先級越高 0-139(4,5中) 各有140個運行隊列和過期隊列 0-98,99(6中) 實時優先級:99-0:值越大優先級越高 nice值:-20到19,對應系統優先級100-139或99 進程狀態: 運行:running…

    2017-05-14
欧美性久久久久