Linux是個多用戶多任務的分時操作系統,越是對服務器安全性要求越高的服務器,越需要建立合理的用戶權限等級制度和服務器操作規范。
在Linux中主要是通過配置文件來查看和修改用戶信息
關於用戶的配置文件有四個。
/etc/passwd
/etc/shadow
/ect/group
/etc/gshadow
/etc/passwd
記錄了這個用戶的一些基本屬性
第1字段:用戶名稱
第2字段:密碼標識(表示有密碼,會去/etc/shadow下調用)
第3字段:UID
0 超級用戶
1-499 系統用戶(偽用戶)
500-65535普通用戶
第4字段:GID(用戶初始組ID)
第5字段:用戶說明
第6字段:家目錄
普通用戶:/home/用戶名
超級用戶:/root/
第7字段:登錄之後的shell
shell就是linux的命令解釋器
在/etc/passwd當中,除了標准shell是/bn/bash之外,還可以寫如/sbin/nologin(無法登錄)
對於組,有初始組和附加組的概念。
初始組:就是指用戶一建立就立刻擁有這個用戶組的相關權限,每個用戶的初始組只能有一個,一般就是和這個用戶的用戶名相同的組名作為這個用戶的初始組。
每個用戶都必須擁有一個初始組,每個用戶只能擁有一個初始組
附加組:指用戶可以加入多個其他的用戶組,並擁有這些組的權限,附加組可以有多個。
影子文件/etc/shadow
存放用戶密碼信息,只有系統管理員才有權利進行查看和修改的文件,權限為000
前面說的passwd裡只有密碼標志x,shadow存放著真正的密碼
第一個字段:用戶名
第二個字段:經過加密後的密碼(如果密碼位是!!或*代表沒有密碼,不能登錄)
第三個字段:密碼最後一次修改日期(使用1970年1月1日作為標准時間,每過一天時間戳加1)
第四個字段:兩次密碼的修改間隔時間(和第三個字段相比,也就是多少時間間隔後才能修改密碼)
第五個字段:密碼有效期(和第3字段相比)
第六個字段:密碼修改到期錢的警告天數(和第五字段相比)
第七個字段:密碼過期後的寬限天數(和第5個字段相比,0代表密碼過期後立即失效,-1代表密碼永不失效)
第八個字段:帳號失效時間(不管有效期是否到,要用時間戳表示)
第九個字段:保留
/etc/group
存放用戶組的配置信息
每添加一個用戶,就會生成和用戶名一樣的組作為用戶名的初始組
第一字段:組名
第二字段:組密碼 (root給組選個管理員,設置完密碼,管理員知道設置的密碼,就可以把其他用戶拉到組或者從組中刪除,會降低系統的安全性,通常不使用)
第三個字段:GID
第四字段:組中附加用戶(linux無法直接查看初始組,先進/etc/passwd查看初始組id,再進/etc/gourp查看組id是哪個組)
需要注意的是,linux不是用用戶名和組名來區別的,用的是UID和GID,當然,還有之前說的PID,理論上來說都是唯一的。
gshadow
用戶組管理密碼
第一字段:組名,是用戶組的名稱,由字母或數字構成。
第二字段:用戶組密碼,這個段可以是空的或!,如果是空的或有!,表示沒有密碼
第三字段:組管理者,這個字段也可為空,如果有多個用戶組管理者,用,號分割
第四字段:組內用戶列表,如果有多個成員,用,號分割
用戶的家目錄
普通用戶:/home/用戶名,所有者和所屬組都是此用戶,權限是700
超級用戶:/root/,所有者和所屬組都是root用戶,權限是550
假如通過修改/etc/passwd,將某用戶的uid更改為0,他的權限更改了,但是家目錄的位置卻沒有更改。
命令:
useradd 添加用戶
語法:useradd 【選項】用戶名
-u UID 手工指定用戶的UID號
-d 家目錄 手工指定用戶的家目錄
-c 用戶說明 手工指定用戶的說明
-g 組名 手工指定用戶的初始組
-G 組名 指定用戶的附加組(可以多個附加組,逗號分割就行了)
-s shell 手工指定用戶的登錄shell,默認是/bin/bash
其實就是修改了剛剛所說的幾個配置文件,我們也可以手動寫入這幾個文件來創建用戶
一般新建用戶使用默認值就可以了,用戶的默認值文件
GROUP=100 用戶默認組(linux系統中,有一種共有模式和私有模式,在公有模式中是這樣的,在現在的linux中,默認的是都是私有模式,在私有模式中,用戶添加是創建同名的組)
HOME=/home 用戶家目錄
INACTIVE=-1 密碼過期寬限天數 (shadow文件的第7字段相對應)
EXPIRE= 密碼失效時間 (shadow文件的第8字段相對應)
SHELL=/bin/hsah 默認的shell
SKEL=/etc/skel 模版目錄
CREATE_MAIL_SPOOL=YES 是否建立郵箱
還有另外一個默認配置文件,/etc/login.defs ,把注釋行去掉,就剩這些了、
PASS_MAX_DAYS 99999 密碼有效期 (shadow文件的第5個字段)
PASS_MIN_DAYS 0 密碼修改間隔 (shadow文件的第4個字段)
PASS_MIN_LEN 密碼最小5位(現在用的是PAM原則)
PASS_WARN_AGE 7 密碼到期警告 (shadow文件的第6個字段)
UID_MIN 500 最小uid值
UID_MAX 60000 最大UID范圍
ENCRYPT_METHOD SHA512 加密模式
passwd【選項】用戶名
-S 查詢用戶密碼的密碼狀態,僅root用戶可用
-l 暫時鎖定用戶。僅root可用
-u 解鎖用戶。僅root用戶可用
-stdin 可以通過管道符輸出的數據作為用戶的密碼
用-S來查看下密碼狀態,內容是和/etc/shadow相對應的
鎖定和解鎖用戶
實際上可以看到是shadow中的user1用戶加了!當然,我們可以手工添加。
usermod 修改用戶信息
前面的useradd所用的-u,g,G,c,L,U等對usermod來說,基本通用
chage 修改用戶密碼狀態
chage【選項】用戶名
-l 列出用戶的詳細密碼狀態
-d 修改密碼最後一次更改日期
-m 天數 兩次密碼修改間隔
-M 天數 密碼過期前警告天數
-I 天數 密碼過期後寬限天數
-E日期 帳號失效時間
我學習的時候在想,我還要記這麼多參數?就算用--help去查看也得多少時間,所以如果我用到這,我就直接用vim編輯配置文件了。
shage -d 0 user1 估計這個命令的最大作用也就是這了,要求用戶一登錄就必須設置密碼。
userdel 刪除用戶
userdel【選項】用戶名
-r 刪除用戶的同時刪除用戶家目錄
id 查詢用戶的uid
id 用戶名
su 切換用戶身份
su 【選項】用戶名
- 選項只用-,代表連用戶的環境變量一起切換
-c 命令:僅執行一次命令,而不切換用戶身份
如果在切換時沒有加-,會有各種各樣的問題
groupadd 添加用戶組
groupadd 【選項】組名
-g GID 指定組ID
groupmod【選項】組名
-g GID 修改組ID
-n新組名 修改組名
groupdel 組名 刪除用戶組
如果組中有初始用戶存在,無法刪除,附加用戶,不影響組的刪除。
gpasswd【選項】組名 把用戶添加入組或從組中刪除
-a 用戶名 把用戶加入組
-d用戶名 把用戶從組中刪除