7.1 用戶配置文件
7.1.1 用戶信息文件 /etc/passwd
man 5 passwd ?查看配置文件功能
第1字段: 用戶名稱
第2字段: 密碼標志 X代表有密碼 如果用戶沒有密碼,則只允許本地登錄
第3字段: UID(用戶ID)
?????????? 0 ????超級用戶
?????????? 1-499 系統用戶(偽用戶) 絕對不能刪
?????????? 500-65535 ?普通用戶 ?改為0則變為管理員 ?UID相同被視為同一個用戶
第4字段: GID(用戶初始組ID)
第5字段: 用戶說明
第6字段: 家目錄
?????????? 普通用戶: /home/用戶名/
?????????? 超級用戶: /root/
第7字段: 登錄之后的Shell
?
初始組:用戶一登錄就立刻擁有這個用戶組的相關權限,每個用戶的初始組只能有一個,一般就是和這個用戶
????????的用戶名相同的組名作為這個用戶的初始組。
附加組:指用戶可以加入多個其他的用戶組,并擁有這些組的權限,附加組可以有多個。
?
Shell是什么?
Shell就是Linux的命令解釋器
在/etc/passwd當中,除了標準Shell是/bin/bash之外,還可以寫如/sbin/nologin
?
7.1.2 影子文件 /etc/shadow
第1字段: 用戶名
第2字段: 加密密碼
??????????>加密算法升級為SHA512散列加密算法
??????????>如果密碼位是“!!”或“*”代表沒有密碼,不能登錄。
第3字段: 密碼最后一次修改日期
??????????>使用1970年1月1日作為標準時間,每過一天時間戳加1
第4字段: 兩次密碼的修改間隔時間(和第3字段相比)
第5字段: 密碼有效期(和第3字段相比)
第6字段: 密碼修改到期前的警告天數(和第5字段相比)
第7字段: 密碼過期后的寬限天數(和第5字段相比)
??????????>0代表密碼過期后立即失效 不寫則默認為0
??????????>-1代表密碼永遠不會失效
第8字段: 帳號失效時間
??????????>用時間戳表示
第9字段: 保留
把時間戳換算為日期 ?date -d "1970-01-01 16866 days" #16866是時間戳,基準時間是1970-01-01
把日期換算為時間戳 ?echo $(($(date --date="2014/01/06" + %s)/86400 + 1)) #86400 每天的秒
7.1.3 組信息文件 /etc/group
第1字段: 組名
第2字段:組密碼標志
第3字段:GID
第4字段:組中附加用戶
?
?
7.1.4 組密碼文件 /etc/gshadow??
用的不多
第1字段:組名
第2字段:組密碼 ?用的不多,不推薦使用
第3字段:組管理員用戶名
第4字段:組中附加用戶
?
用戶信息全包含在這四個文件之中,可以通過修改這四個文件來對用戶做增刪查改的操作
?
7.1.5 用戶管理相關文件
1、用戶的家目錄 ??用戶的初始登錄位置
???普通用戶: /home/用戶名/ ???所有者和所屬組都是此用戶,權限是700
???超級用戶: /root/ ???所有者和所屬組都是root用戶,權限是550
?
2、用戶的郵箱
???/var/spool/mail/用戶名/
?
3、用戶模板目錄
???/etc/skel/ ?????創建新用戶時,自動將此目錄下的文件復制到新用戶的家目錄
?
?
7.2 用戶管理命令
7.2.1 用戶添加命令
useradd -u UID ?手工指定用戶的UID號
???-d 家目錄 手工指定用戶的家目錄
???-c 用戶說明 手工指定用戶的說明
???-g 初始組名 手工指定用戶的初始組
???-G 附加組名 指定用戶的附加組
???-s shell 手工指定用戶的登錄Shell。默認是/bin/bash
?
useradd sc
passwd sc
grep sc /etc/passwd
grep sc /etc/shadow
grep sc /etc/group
grep sc /etc/gshadow
ll -d /home/sc
ll /var/spool/main/sc
?
useradd -u 666 -G root,bin -d /home/sc1 -c "test user" -s /bin/bash sc
用戶默認值文件:
/etc/default/useradd
GROUP=100 ?#用戶默認組
HOME=/home #用戶家目錄
INACTIVE=-1 #密碼過期天數(shadow文件7字段)
EXPIRE= ????#密碼失效時間(shadow文件8字段)
SHELL=/bin/bash #默認shell
SKEL=/etc/skel ?#模板目錄
CREATE_MAIL_SPOOL=yes #是否建立郵箱
?
/etc/login.defs
MAIL_DIR /var/spool/mail
?
PASS_MAX_DAYS 9999 ?#密碼有效期(5)
PASS_MIN_DAYS 0 ????#密碼修改間隔(4)
PASS_MIN_LEN ?5 ????#密碼最小5位(PAM)默認是8位
PASS_WARN_AGE 7 ????#密碼到期警告(6)
?
UID_MIN ??500 ??????#最大和最小UID范圍
UID_MAX ??60000
?
GID_MIN ??500 ??????#最大和最小GID范圍
GID_MAX ??60000
?
CREATE_HOME ?yes
?
UMASK 077
?
USERGROUPS_ENAB yes
?
ENCRYPT_METHOD ?SHA512 #加密模式
?
7.2.2 修改用戶密碼
passwd -選項 用戶名
? ? ? ?-S 查詢用戶密碼的狀態。僅root用戶可用。
???????-l 暫時鎖定用戶。僅root可用 ?將shadow文件中,密碼項前加了!!
???????-u 解鎖用戶。僅root可用
???????--stdin 可以通過管道符輸出的數據作為用戶的密碼
?
whoami 查看當前用戶名
?
echo "123" | passwd -stdin sc
將123作為sc用戶的密碼,用于Shell編程中
?
7.2.3 修改用戶信息usermod
usermod -選項 用戶名
???-u UID ???修改用戶的UID號
???-c 用戶說明 修改用戶的說明信息
???-G 組名 ??修改用戶的附加組
???-L ???????臨時鎖定用戶(lock) 密碼前加了!,使密碼失效
???-U ??解鎖用戶鎖定(Unlock)
?
?
?
7.2.4 修改用戶密碼狀態chage??
change user password expiry information
change -選項 用戶名
? ? ? ?-l ?列出用戶的詳細密碼狀態
? ? ? -d 日期 密碼最后一次更改日期(shadow 3字段)
??????-m 天數 兩次密碼修改間隔(4字段)
??????-M 天數 密碼有效期(5字段)
??????-W 天數 密碼過期前警告天數(6字段)
??????-I 天數 密碼過期后寬限天數(7字段)
??????-E 日期 帳號失效時間(8字段)
?
用vim修改更直觀
用的最多的是
chage -d 0 sc
#這個命令其實是把密碼修改日期歸零了(shadow第3字段)
#這樣用戶一登陸就要修改密碼
?
?
7.2.5 刪除用戶userdel
userdel -r 刪除用戶的同時刪除用戶家目錄
?
手工刪除用戶
vi /etc/passwd
vi /etc/shadow
vi /etc/group
vi /etc/gshadow
rm -rf /var/spool/mail/sc
rm -rf /home/sc
?
7.2.6 查看用戶ID
id 用戶名
查看用戶id 初始組id 附加組id
?
?
7.2.7 用戶切換su??
run a Shell with substitute user and group IDs
?
env
查看用戶環境變量
?
su root #只切換了部分環境變量
?
su 選項 用戶名
- 連帶用戶的環境變量一起切換
-c 僅執行一次命令,而不切換用戶身份
?
su - root -c "useradd user3"
不切換用戶身份,臨時調用一次root權限命令
?
exit 退出當前用戶
?
?
?
7.3 用戶組管理命令
添加用戶組
groupadd [選項] 組名
-g GID ??指定組ID
?
?
修改用戶組 ?不建議修改組名
groupmod [選項] 組名
? -g GID 指定組ID
? -n 新組名
groupmod -n testgrp group1
把組名group1修改為testgrp
?
?
刪除用戶組
groupdel 組名
如果組中存在初始用戶,不能刪除此組
如果組中都是附加用戶,可以刪除
?
?
把附加用戶添加入組或從組中刪除
gpasswd -a 用戶名 ?組名 #把用戶加入組
???-d 用戶名 ?組名 #把用戶從組中刪除
?