在linux中,用戶可以分爲幾類:超級用戶、系統用戶、普通用戶。超級用戶uid=0,系統用戶在rhel5和rhel6中uid=1-499,rhel7中,uid=1-200表示系統自帶用戶,201-999表示其他系統用戶,普通用戶在rhel5和rhel6中是500-60000,在rhel7中從1000開始。
用戶相關文件:
/etc/passwd 存放用戶和用戶對應的UID
[root@desktop0 content]# grep ^root /etc/passwd
root:x:0:0:root:/root:/bin/bash
列1、用戶名
2、密碼佔位符
3、用戶UID
4、用戶GID
5、註釋
6、用戶家目錄
7、用戶使用的shell
/etc/shadow 存放用戶密碼信息
[root@desktop0 content]# grep ^root /etc/shadow
root:$6$PFwvgEDl$q/7OKjywR4XEOT8VN.2s/OrfdvhmauyLkJHY1GYvkguClUilvwFrKdMniBlJzl8bxViudknWPptv/81Nz3NfM/:16442:0:99999:7:::
列1、用戶名
2、加密密碼
3、用戶最後一次修改密碼的時間,從1970-1-1開始計算,單位天
4、最短修改密碼的間隔時間,單位天,0代表不限制,隨時可以修改密碼
5、密碼的有效期,單位天,99999表示永不過期
6、密碼過期前多少天提示
最後3個冒號後是空的,這裏使用a、b、c代替
a、密碼過期後多少天不能使用
b、距離1970-1-1號到某天的天數之後,賬號過期
c、保留
/etc/group 存放當前系統所有用戶組信息
group: x: 123: abc,def,xyz
組名 密碼佔位符 組編號 組中用戶列表
/etc/gshadow 存放當前系統中用戶組的密碼信息
group: *: : abc,def,xyz
組名 密碼佔位符(*或!表示爲空) 組管理者 組中用戶列表
/etc/default/useradd 創建用戶時會讀取該配置文件,如果沒有指定選項,該文件中默認指定了用戶的GID,家目錄,shell等信息
/etc/login.defs 密碼策略文件,爲用戶分配密碼時會讀取該配置文件,如果沒有指定選項,該文件中默認指定了密碼的有效期等信息
如何登錄主機:
當系統出現login畫面的時候,提示用戶輸入用戶名和密碼,linux會:
1、先找到/etc/passwd,判斷用戶是否存在,如果沒有則退出,如果有,它會將用戶所對應的UID和GID讀取出來,並將該用戶的家目錄和SHELL一起讀取出來
2、然後到/etc/shadow中核對密碼錶,查找對應用戶的UID,然後覈對剛纔輸入的密碼
3、如果一切相符,進入shell階段
創建用戶:useradd [-選項] [選項值] 用戶名
useradd rheluser1 直接這樣創建,系統會創建一個同名的組並讓該用戶屬於這個組,使用命令id rheluser1可以查看用戶的UID、GID、和組名
常用選項:
-u:指明用戶uid
-g:指明用戶所屬組,可以是GID也可以是組名
-G:指明用戶還屬於其他組
-s:指明用戶使用的shell,sbin/nologin表示不允許登錄
-c:指明註釋信息
-d:指明用戶家目錄
創建用戶執行的步驟:
1、修改/etc/passwd
2、修改/etc/shadow
3、修改/etc/group
4、修改/etc/gshadow
5、創建家目錄
6、拷貝一些桌面環境變量 cp etc/skel* /home/username
7、將用戶家目錄的擁有者和組 chown username:usergroup /home/username
創建組:groupadd [-選項] [選項值] 組名
修改用戶:usermode [-選項] [選項值] 用戶名
密碼策略:
使用man 3 crypt可以查看到密碼策略:
ID | Method
─────────────────────────────────────────────────────────
1 | MD5
2a | Blowfish (not in mainline glibc; added in some
| Linux distributions)
5 | SHA-256 (since glibc 2.7)
6 | SHA-512 (since glibc 2.7)
使用grep ^root /etc/shadow查看密碼:
:$6$PFwvgEDl$q/7OKjywR4XEOT8VN.2s/OrfdvhmauyLkJHY1GYvkguClUilvwFrKdMniBlJzl8bxViudknWPptv/81Nz3NfM/
可以分爲3段,以$進行分割,三段間的值這裏用A、B、C表示
$A$B$C
A-->ID,散列算法
B-->Salt,鹽值,系統生成的一個隨機串
C-->salt+明文密碼封裝而成的密文密碼
可以安裝一個工具 yum install authconfig-gtk krb5-workstation sssd -y,然後使用system-config-authentication命令來修改密碼加密方式,在第二個選項卡Advanced Options(高級配置)中,修改加密方式爲md5。然後修改密碼,再去查看/etc/shadow,root的密碼散列算法ID變成了1。這時候,可以將密碼穹取出來,使用openssl -table -l -salt 'B對應的字符串' -stdin < /usr/share/dict/words | grep 'C對應的字符串',就能查詢出對應的密碼明文了!
su:切換用戶
su -student 表示切換並登錄用戶
加載的文件:/etc/profile、 /etc/profile.d/*、 ~/.bash_profile、 ~/.bashsrc、 /etc/bashsrc
su student 表示切換但未登錄用戶
加載的文件:~/.bashsrc、 /etc/bashsrc、 /etc/profile.d/*
文件說明:
/etc/profile和 /etc/profile.d/*:全局設置文件,定義全局環境變量(只有當用戶登錄的時候加載一次)
/etc/bashsrc:全局設置文件,定義命令別名(每次打開shell就加載一次)
~/.bash_profile:用戶私有配置文件,用戶可以定義自己的環境變量(只有當用戶登錄的時候纔會加載一次)
~/.bashsrc:用戶私有配置文件,定義私有別名