寫在前面:
博客書寫牢記5W1H法則:What,Why,When,Where,Who,How。
用戶、組和權限:
◆ 用戶類別與用戶標識
◆ 組類別與組標識
◆ 認證機制與密碼存儲
加密算法
隨機數簡介
◆ 安全上下文
◆ 用戶和組管理
groupadd
groupmod
groupdel
/etc/passwd
useradd
/etc/login.defs與/etc/default/useradd
/etc/shadow
usermod
userdel
passwd
id
su
gpasswd
newgrp
chage
chfn
finger
chsh
pwck
grpck
linux是多用戶多任務的系統:
多用戶:多人同時使用系統資源;
多任務:同時運行多個進程;
linux AAA機制:
Authentication #認證
Authorization #授權
Account #賬號
用戶類別與用戶標識:
管理員:root
普通用戶:
系統用戶:僅用戶運行系統程序;
登錄用戶:系統資源的正常使用者;
用戶標識(UID):
linux系統一般用16bits的二進制數字表示,即0-65535。也有些系統用32bits的二進制數字表示。
管理員:0
普通用戶:
系統用戶:
centOS5,6:1-499
centOS7:1-999
登錄用戶:
centOS5,6:500+
centOS7:1000+
補充:linux系統存儲二進制數字更加高效,所有用戶都是以UID來標識的,但對於用戶來說,這樣的數字並不好記憶,所以linux對用戶和UID做了關聯文件(/etc/passwd),以使用戶和系統都能快速識別用戶。
組類別與組標識:
管理員組
普通用戶組:
系統組
登錄組
組標識(GID):
管理員組:0
普通用戶組:
系統用戶組:
centOS5,6:1-499
centOS7:1-999
登錄用戶組:
centOS5,6:500+
centOS7:1000+
補充:與用戶類似,組同樣有一個組名與GID對應的文件:/etc/group
認證機制與密碼存儲:
通過對比登錄時提供的信息與事先存儲的信息是否一致來判斷。
用戶認證信息文件:/etc/shadow
組認證信息文件:/etc/gshadow
密碼存儲方式:
加密存放,單向加密。僅加密,無法解密,通過提取數據特徵碼計算,具有以下特徵:
數據相同,加密結果相同;
定長輸出;
雪崩效應;(數據中有一點兒改變,則計算結果大不相同)
加密算法:(以下加密算法在/etc/shadow文件的密碼字段分別以1-6表示)
md5:128bits
sha1:160bits
sha224
sha256
sha384
sha512
補充:
/etc/shadow和gshadow文件存儲加密密碼時,並不是通過密碼字符串直接使用加密算法計算結果來存儲,而是先在密碼字符串中添加不定長隨機數(salt),然後再進行計算並將salt與加密結果一併存儲。
隨機數簡述:
熵池:真正隨機產生的隨機數
僞隨機數:軟件模擬產生
/dev/random:僅從熵池返回隨機數,隨機數耗盡時會阻塞進程;
/dev/urandom:先從熵池返回隨機數,熵池耗盡時,則從僞隨機數生成器返回隨機數;
安全上下文:
進程:以某個用戶的身份運行,進程對資源的操作權限取決於它所代表的用戶;
文件:權限模型
屬主:owner
屬組:group
其它:other
權限模型生效的機制:
進程的運行者:
是否與文件的屬主相同,如果是,則以文件屬主的身份來訪問此文件;否則
是否屬於文件的屬組,如果是,則以文件屬組的身份來訪問此文件;否則
以文件的其它用戶的身份來訪問此文件;
用戶和組管理:
主要命令如下:
組:groupadd、groupmod、groupdel
用戶:useradd、usermod、userdel
密碼認證:passwd
組管理:
組文件:/etc/group
文件格式:
group_name:password:GID:user_list
密碼行只是密碼佔位符,密碼真實存儲位置在/etc/gshadow
groupadd:
create a new group
groupadd [options] group
-g, --gid GID:設置GID
-r, --system:創建系統組
groupmod:
modify a group definition on the system
groupmod [options] GROUP
-g, --gid GID:修改GID
-n, --new-name NEW_GROUP:修改組名
groupdel:
delete a group
groupdel group
用戶管理:
用戶文件:/etc/passwd
文件格式:
account:password:UID:GID:GECOS:directory:shell
GECOS:用戶註釋信息
useradd:
create a new user or update default new user information
useradd [options] LOGIN
-c, --comment COMMENT:用戶註釋信息
-d, --home HOME_DIR:家目錄
-g, --gid GROUP:設置基本組
-G, --groups GROUP1[,GROUP2,...[,GROUPN]]]:設置附加組
-m, --create-home:強制創建家目錄
-M:不創建家目錄
-r, --system:創建系統用戶
-s, --shell SHELL:用戶登錄的shell名
-u, --uid UID:設置UID
useradd -D
顯示創建用戶時的默認設置;
useradd -D [options]
設置默認選項;
-e, --expiredate EXPIRE_DATE:用戶賬號的過期期限;過期後會被鎖定;日期以 YYYY-MM-DD 格式指定
-f, --inactive INACTIVE:密碼過期後,賬戶被徹底禁用之前的天數。0 表示立即禁用,-1 表示禁用這個功能
補充:/etc/login.defs文件設置了新建用戶的默認控制信息(郵箱目錄、密碼過期設置、UID及GID默認取值範圍、家目錄、umask、密碼加密方式);
/etc/default/useradd文件設置了新建用戶的默認家目錄、shell、郵箱創建與否。
補充:
影子口令文件:/etc/shadow
文件格式:
login name:encrypted password:date of last password change:minimum password age:maximum password age:password warning period:password inactivity period:account expiration date:reserved field
登錄名:密碼:密碼最近一次的修改時間:密碼最短使用期限:密碼最長使用期限:警告天數:非活動期限:賬號禁用日期:保留字段
密碼是以“$加密算法$salt$加密的密碼字符串”格式存儲的
用戶密碼過期圖示:
usermod:
modify a user account
usermod [options] LOGIN
-d, --home HOME_DIR
usermod -m -d HOME_DIR修改家目錄的同時,將原家目錄文件複製到新目錄
-g, --gid GROUP
-G, --groups GROUP1[,GROUP2,...[,GROUPN]]]:設置附加組,會覆蓋原有附加組!與-a選項一起使用,添加附加組而不覆蓋
-l, --login NEW_LOGIN:修改用戶名
-s, --shell SHELL
-u, --uid UID
-L, --lock:鎖定用戶,會在密碼文件/etc/shadow密碼字段前加“!”
-U, --unlock:解鎖用戶,去掉密碼字段前!
userdel:
delete a user account and related files
userdel [options] LOGIN
-r, --remove:一併刪除用戶家目錄和用戶郵箱
passwd:
update user’s authentication tokens
passwd [-l] [-u [-f]] [-d] [-e] [-n mindays] [-x maxdays] [-w warndays] [-i inactivedays] [--stdin] [username]
(1)passwd:修改自己的密碼;
(2)passwd USERNAME:修改其他用戶密碼,僅root用戶可用
-l:鎖定密碼
--stdin:從標準輸入讀取密碼
-u:解除鎖定
-d:快速清除密碼;
密碼複雜度:
不少於8位字符
不可與舊密碼太相似
應該包含4類字符(小寫字母、大寫字母、數字、特殊符號)中的3種
id
print real and effective user and group IDs
id [OPTION]... [USERNAME]
-u:僅查看uid
-g:僅查看gid
-G:查看所屬的所有組的ID;
-n:顯示名稱,而非ID
su
run a shell with substitute user and group IDs
-, -l, --login:以登錄方式切換,完全切換
-c, --command=COMMAND:僅以指定用戶身份運行此命令,而不切換用戶
gpasswd
administer /etc/group and /etc/gshadow
gpasswd [option] group
-a, --add user:添加用戶到組
-d, --delete user:從組中將用戶移除
newgrp
log in to a new group
newgrp [-] [group]
臨時切換登錄用戶的基本組,使用exit退出
chage
change user password expiry information修改用戶密碼終止信息
chage [options] [LOGIN]
-d, --lastday LAST_DAY:設置密碼最近一次修改時間。使用距1970年1月1日的天數或設置YYYY-MM-DD格式的日期
-E, --expiredate EXPIRE_DATE:設置賬號禁用日期,設置-1移除禁用日期功能
-I, --inactive INACTIVE:設置非活動期限,設置-1移除非活動期限
-l, --list:顯示密碼信息
-m, --mindays MIN_DAYS:密碼最小改動期限
-M, --maxdays MAX_DAYS:密碼最大使用期限
-W, --warndays WARN_DAYS:密碼過期前提醒天數
chfn
change your finger information
chfn [-f full-name] [-o office] ,RB [ -p office-phone] [-h home-phone] [-u] [-v] [username]
修改用戶附加信息,即/etc/passwd文件的第5字段
finger
user information lookup program
finger [-lmsp] [user ...] [user@host ...]
chsh
change your login shell
-s, --shell shell:修改登錄shell
-l, --list-shells:顯示/etc/shells列出的shell
pwck
(passwd chack)verify integrity of password files
檢查/etc/passwd和/etc/shadow文件格式及信息可用
grpck
(group check)verify integrity of group files
檢查/etc/group和/etc/gshadow文件格式及信息可用