今天本人學習到了兩個個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菜單,選擇編輯選項啟動。
2 – 按鍵盤e鍵,來進入編輯界面
3 – 找到Linux 16的那一行,將ro改為rw init=/sysroot/bin/sh
4 – 現在按下 Control+x ,使用單用戶模式啟動
5 – 現在,可以使用下面的命令訪問系統
chroot /sysroot # 改變系統根目錄(指定臨時根目錄) passwd root # 修改root用戶的密碼 touch /.autorelabel # 更新系統信息 exit # 退出 reboot # 重啟系統
好了,重啟之后就可以用新設置的密碼登錄了,今天就寫到這里,希望能夠幫助到和我一樣剛剛入門的新手。謝謝大家。
原創文章,作者:qiaojia596,如若轉載,請注明出處:http://www.www58058.com/10956