/etc/passwd用戶記錄文件,文件記錄着ID和賬號與一般身份用戶的對應關系
用戶至少會有2個ID,用戶ID(UserID簡UID)和用戶組ID(GroupID簡GID)。
/etc/group用戶組記錄文件,文件記錄着ID和用戶組名的對應關系
文件利用UID和GID判別所有者和用戶組。當要顯示文件屬性需求時,系統會根據/etc/passwd和/etc/group的內容,找到UID/GID對應的賬號與用戶組名再顯示出來。
/etc/shadow為專門管理密碼相關數據文件
/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
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
chrony:x:998:996::/var/lib/chrony:/sbin/nologin
jiangshan:x:1000:1000::/home/jiangshan:/bin/bash
jinyan:x:1001:1001::/home/jinyan:/bin/bash
以‘jinyan’用戶為例,其中,1001:1001為UID:GID,UID標識用戶,GID標識用戶組。
/etc/group
root:x:0:
bin:x:1:
daemon:x:2:
sys:x:3:
adm:x:4:
tty:x:5:
disk:x:6:
lp:x:7:
mem:x:8:
kmem:x:9:
wheel:x:10:
cdrom:x:11:
mail:x:12:postfix
man:x:15:
dialout:x:18:
floppy:x:19:
games:x:20:
tape:x:33:
video:x:39:
ftp:x:50:
lock:x:54:
audio:x:63:
nobody:x:99:
users:x:100:
utmp:x:22:
utempter:x:35:
input:x:999:
systemd-journal:x:190:
systemd-network:x:192:
dbus:x:81:
polkitd:x:998:
ssh_keys:x:997:
sshd:x:74:
postdrop:x:90:
postfix:x:89:
chrony:x:996:
jiangshan:x:1000:
jinyan:x:1001:
/etc/shadow
root:$6$Ue1tISumzuerjoaq$1Y696T4DwWQdL5m9HU3XAvlT3z3TGR2eVSxo5vBId7x2T8hti9SQenCetayvF6UxOR4am0uXWbeg5Kagavzfe0::0:99999:7:::
bin:*:17834:0:99999:7:::
daemon:*:17834:0:99999:7:::
adm:*:17834:0:99999:7:::
lp:*:17834:0:99999:7:::
sync:*:17834:0:99999:7:::
shutdown:*:17834:0:99999:7:::
halt:*:17834:0:99999:7:::
mail:*:17834:0:99999:7:::
- operator:*:17834:0:99999:7:::
games:*:17834:0:99999:7:::
ftp:*:17834:0:99999:7:::
nobody:*:17834:0:99999:7:::
systemd-network:!!:17960::::::
dbus:!!:17960::::::
polkitd:!!:17960::::::
sshd:!!:17960::::::
postfix:!!:17960::::::
chrony:!!:17960::::::
jiangshan:$6$ZPd3YtMU$4.SDHumdEN9V4jD4L2sa.MZ318jx3yl2ByKQV3mxjxmMfDCXM2IFTEl1MqG/UAqJeSVsltjcnB4NWr4j9X7Hy1:17962:0:99999:7:::
jinyan:$6$3/Py/FGX$RgIA8mFS1CWvSM7GcNYa0CDe3IHcEpbPuZOWrKgPzugEQBnRiNbAsLdliMjcVefoXj9jYOqCofjONbmHRuOiu1:17962:0:99999:7:::
若某用戶登錄主機以取得shell的環境:在計算機前面利用tty1~tty2的終端機提供的login接口,輸入賬號和密碼;若通過網絡,還需要設置ssh遠程訪問功能;系統后台替你完成的工作:
- 系統在/etc/passwd文件中找到輸入的賬號,並讀取出該賬號對應的UID與GID(在/etc/group中讀取),另外賬號的主文件夾與shell設置也一並讀出。
- 核對密碼表,系統在/etc/shadow文件中找出對應的賬號與UID,然后核對輸入的密碼和/etc/shadow文件中賬號對應的密碼是否相符。
- 一切OK,則進入shell階段。
/etc/passwd文件結構
每一行代表一個賬號,有幾行系統就有幾個賬號,大多數為系統所必需的賬號。
以/etc/passwd文件第一行為例解讀:
root:x:0:0:root:/root:/bin/bash
共7個字段,用:分隔,每個字段分別是:
- 賬號名稱 賬號用來對應UID的,例如root的UID對應就是0第3個字段。
- 密碼,早期是將密碼放入該字段中,由於不安全,后來將密碼放置在/etc/shadow中,用x填入。
- UID 用戶標識符,UID的限制如下:
i. 0 系統管理員
ii. 1~499 系統賬號(保留給系統使用)
iii. 500~2^32-1 可登錄賬號 給一般用戶使用
- GID 與/etc/group有關 /etc/group與/etc/passwd差不多,只是它用來規定組名與GID的對應而已。
- 用戶信息列表 解釋賬號而已
- 主文件夾 當用戶登錄后,就會立刻進入到該目錄中
- Shell 當用戶登陸系統后就會取得一個Shell來與系統的內核通信以進行用戶操作,這個字段指定shell會使用bash,如該字段為“/bin/bash”。注意:/sbin/nologin Shell可以用來替代成讓賬號無法取得shell環境的登錄操作,如可以用來制作純pop郵件賬號者的數據。
/etc/shadow文件結構 共有9個字段
程序運行都與權限有關,而權限與UID/GID有關,因此各程序需要讀取/etc/passwd文件來了解不同賬號的權限,因此/etc/passwd文件的權限設置為“-rw-r-r--”。早期密碼放置在/etc/passwd文件中,存在着風險,因此發展后期將密碼移至/etc/shadow文件中,進行分隔開來,例如:
root:$6$Ue1tISumzuerjoaq$1Y696T4DwWQdL5m9HU3XAvlT3z3TGR2eVSxo5vBId7x2T8hti9SQenCetayvF6UxOR4am0uXWbeg5Kagavzfe0::0:99999:7:::
- 賬號名稱 由於密碼也需要和賬號對應 必須要和/etc/passwd相同
- 密碼 經過加密的密碼
- 最近更動密碼的日期
- 密碼不可被更動的天數(與第3個字段相比)
- 密碼需要重新更改的天數(與第3個字段相比)
- 密碼需要更改期限前的警告天數(與第5個字段相比)
- 密碼過期后的賬號寬限時間(密碼失效日)(與第5個字段相比)
- 賬號失效日期 常用來做“收費服務”
- 保留字段
/etc/group文件結構 共有4個字段
每一行代表一個用戶組。例如:
root:x:0:
- 用戶組名稱
- 用戶組密碼 通常不需要設置,這個設置通常是給“用戶管理員”使用,但是密碼早已移動到/etc/gshadow文件中了,此字段只會存在一個“x”
- GID 用戶組ID
- 此用戶組支持的賬號名稱 一個賬號可以加入多個用戶組,某個賬號想要加入此用戶組,將該賬號填入該字段即可。例如想讓 jeshy 加入root這個用戶組,那么在該字段加入“,jeshy”即“root,jeshy”------ root:x:0:root,jeshy
