用戶管理
請叫我貪財的文字搬運工,終于下心補了一篇博客,最后嘮叨一句,博客園的排版太難用了,參考鏈接:http://c.biancheng.net/view/3059.html
一、基礎概念
linux是一個多任務多用戶的作業系統,所謂的Multi_tasks和Multi-Users
認證(Authentication):資源是有限的,通過某種識別技術,將其于系統上某個賬戶關聯起來的程序,就是認證程序,
授權(Authorization):給通過認證后的賬號分配權限的程序,
審計(Audition):對賬戶使用權限記錄的程序,
用戶名:用戶的登錄憑證,計算機容易識別的是數字,人容易識別的字符,所以需要一種資料庫來進行數字憑證和字符憑證的轉化,
用戶組:用戶的一種容器,可以把組看成一種角色,以方便對批量用戶管理、授權的一種方式,
用戶類別:Linux中每個用戶是通過User Id (UID)來唯一標識的
管理員: 管理員的UID為0
普通用戶:
系統用戶: 系統用戶的UID為 1-499(CENTOS6) 1-999(CENTOS7\8)
登錄用戶: 登錄用戶的UID為 500-60000(CENTOS6) 1000-60000(CENTOS7\8)
用戶組類別1:Linux中可以將一個或多個用戶加入用戶組中,用戶組是通過Group ID(GID) 來唯一標識的,
管理員組: 管理員的GID為0
普通用戶組:
系統組: 系統組的GID為 1-499(CENTOS6) 1-999(CENTOS7\8)
登錄組: 登錄組的GID為 500-60000(CENTOS6) 1000-60000(CENTOS7\8)
用戶組類別2:
基本組:
附加組:
用戶組類別3:
私有組:組名同用戶名,且只包含了一個用戶
公共組:組內可以包含多個用戶
密碼的復雜性原則:
1、使用隨機密碼
2、最短長度不要低于8位
3、應該使用大寫字符、小寫字符、數字、標點符號四類字符中至少三類
4、定期更換
加密演算法
對稱加密:加密解密都使用同一種密鑰,
非對稱加密:加密解密使用的一對密鑰
公鑰: 使用公鑰加密只能使用與之配對的私鑰進行解密, 公鑰加密;私鑰解密
私鑰: 使用私鑰加密只能使用與之配對的公鑰進行解密, 私鑰加密;公鑰解密
單項加密:只能加密,不能解密,主要用于提取資料特征碼,
單向加密演算法的特征:
1、定長輸出
2、雪崩效應
單向加密演算法:
md5 定長輸出128位
sha1 安全的hash演算法,定長輸出160位
sha224
sha256
sha384
sha512
二、與用戶相關的組態檔
/etc/passwd
/etc/shadow
/etc/group
/etc/gshadow
/etc/default/useradd
/etc/login.defs
/etc/skel/*
/etc/passwd簡介:
root:x:0:0:root:/root:/bin/bash
以冒號位分隔符,分隔成7個自然段
1> 用戶名
2> 密碼占位符或者密碼
3> UID
4> GID
5> 用戶注釋資訊
6> 用戶家目錄位置
7> 用戶的默認登錄SHELL
/etc/shadow簡介:
root:$6$b4tMixbfyTY1Ck2J$bpdKlcQs5YF643oeeLqIbNPrehMn.gb8hfdVhLFVw5xy06j7H.5Jkt2PyJUDPO5odjVvnZCETMU50upFTW/::0:99999:7:::
以冒號位分隔符,分隔成9個自然段
1> 用戶名
2> 加密的密碼串
以$為分隔符
第一段為加密演算法
1表示為md5
2表示為sha1
3表示為sha224
4表示為sha256
5表示為sha384
6表示為sha512
第二段為加密的雜質
第三段為真正的加密串
3> 最近一次密碼的修改時間
這個時間段的計演算法是從1970-01-01開始到現在多少天
0表示用戶下次登陸時必須更改密碼
空表示禁用此功能
4> 密碼最短使用期限
5> 密碼最長時使期限
6> 密碼到期前的提醒(警告)時間
7> 密碼到期后的寬限時間
8> 此賬戶的失效期,這個時間段的計演算法是從1970-01-01開始到現在多少天
9> 保留欄位
/etc/group簡介:
root:x:0:
以冒號位分隔符,分隔成4個自然段
1> 用戶組名
2> 組密碼的占位符
3> GID
4> 附加組用戶串列
/etc/gshadow簡介:
netadmin:$6$XLxGGrM9LBWIQTg$nbfw1qWuxVJVZaM6BKNOCrD75Cnd9FkxGcBAkVR6P02LgYcbKPev.SQ3H./u8VuNofDWhaFOtK7.PhQAV2I/::gentoo
以冒號位分隔符,分隔成4個自然段
s
1> 用戶組名,同/etc/group檔案中的組名相對應
2> 組密碼,對于大多數用戶來說,通常不設組密碼,一般為慷訓者!,表示改用戶組沒有設定用戶組密碼,也沒有設定組管理員,
3> 組管理員,設定組管理員來替root用戶完成一部分組管理作業,現在一般都使用sudo類命令代替了,所以組管理員已經很少設定使用了,
4> 附加組用戶串列,同/etc/group檔案最后欄位保持一致,
/etc/default/useradd簡介:
此檔案定義了使用useradd創建用戶使用的默認配置
GROUP=100 #定義了創建新用戶屬于哪個公共組ID,但現在都是使用了私有組機制,所以此項定義已不再生效,默認創建新用戶的私有組與用戶名同名,GID默認為當前最大GID數值加1
HOME=/home #定義了創建新用戶的家目錄存放位置為/home目錄下,與用戶名同名的目錄
INACTIVE=-1 #定義了新用戶的默認密碼到期的寬限天數(shadow檔案第7個欄位),這里默認值是 -1,代表所有新建立的用戶密碼永遠不會失效
EXPIRE= #定義了新用戶的賬戶失效時間(shadow檔案第8個欄位),這里默認為空,表示新用戶沒有過期時間
SHELL=/bin/bash #定義了新用戶的默認登錄shell
SKEL=/etc/skel #定義了新用戶家目錄有哪些組態檔,
CREATE_MAIL_SPOOL=yes #定義了新用戶是否啟用郵箱,默認是創建.也就是說,對于所有的新建用戶,系統都會新建一個郵箱,放在 /var/spool/mail/ 目錄下,和用戶名相同.
/etc/login.defs簡介
此檔案定義了創建新用戶,對用戶的一些基本屬性做出默認設定,如:GID UID 密碼最大長度等
MAIL_DIR /var/spool/mail #創建用戶時,系統會在目錄 /var/spool/mail 中創建一個用戶郵箱,比如 lamp 用戶的郵箱是 /var/spool/mail/lamp,
PASS_MAX_DAYS 99999 #密碼有效期,99999 是自 1970 年 1 月 1 日起密碼有效的天數,相當于 273 年,可理解為密碼始終有效,
PASS_MIN_DAYS 0 #表示自上次修改密碼以來,最少隔多少天后用戶才能再次修改密碼,默認值是 0,
PASS_MIN_LEN 5 #指定密碼的最小長度,默認不小于 5 位,但是現在用戶登錄時驗證已經被 PAM 模塊取代,所以這個選項并不生效,
PASS_WARN_AGE 7 #指定在密碼到期前多少天,系統就開始通過用戶密碼即將到期,默認為 7 天,
UID_MIN 500 #指定最小 UID 為 500,也就是說,添加用戶時,默認 UID 從 500 開始(centos7是從1000開始),注意,如果手工指定了一個用戶的 UID 是 550,那么下一個創建的用戶的 UID 就會從 551 開始,哪怕 500~549 之間的 UID 沒有使用,
UID_MAX 60000 #指定用戶最大的 UID 為 60000,
GID_MIN 500 #指定最小 GID 為 500,也就是在添加組時,組的 GID 從 500 開始,
GID_MAX 60000 #用戶 GID 最大為 60000,
CREATE_HOME yes #指定在創建用戶時,是否同時創建用戶主目錄,yes 表示創建,no 則不創建,默認是 yes,
UMASK 077 #指定用戶主目錄的權限,這里默認設定為 077的是遮罩碼,所以用戶家目錄的實際權限是700
USERGROUPS_ENAB yes #指定洗掉用戶的時候是否同時洗掉用戶組,準備地說,這里指的是洗掉用戶的初始組,此項的默認值為 yes,
ENCRYPT_METHOD SHA512 #指定用戶密碼采用的加密規則,默認采用 SHA512,這是新的密碼加密模式,原先的 Linux 只能用 DES 或 MD5 加密,
/etc/skel/*目錄簡介
此目錄中定義了新用戶家目錄下有哪些組態檔,大多數為隱藏檔案
.bash_logout #用戶登出配置腳本檔案
.bash_profile #用戶私有環境組態檔
.bashrc #用戶私有別名組態檔
三、用戶管理命令:
groupadd命令 [OPTIONS] GROUP_NAME 創建用戶組
選項:
-r 創建系統系統組,系統組的GID小于500或1000
-g ### 創建GID為指定###的用戶組,系統默認為最大GID+1
groupmod命令
groupmod [option] GROUP_NAME
選項:
-g ### 修改組GID,再不加-o選項時不能與其它組的GID相同
-n NEW_GROUP_NAME 修改組名
-o 常與-g一起使用,修改組的GID和別的組的GID相同
groupdel命令
groupdel GROUP_NAME 洗掉組
-f 強制洗掉
gpasswd命令
gpasswd [OPTION] GROUP
gpasswd GROUP 設定GROUP組密碼
-a USERNAME 向GROUP組中添加用戶USERNAME,也就是讓USERNAME以GROUP為附加組
-d USERNAME 從GROUP組中移除用戶USERNAME
-A user1,user2,... 設定有管理權限的用戶串列
useradd命令
useradd [OPTION] USER_NAME
-u ### 指定新用戶的UID為###,如果不指定會默認以其中最大UID+1.同時如果沒有指定GID時一般GID和指定的UID相同,
-g ### 指定新用戶的基本組GID為###,同時指定的基本組必須存在,
-G GROUP1,GOURP2... 指定新用戶的附加組,多個附加組需要用英文逗號分開,同時指定的附加組必須存在,
-c "String" 指定用戶的注釋資訊
-d /PAHT/TO/SOMEDIR 指定新用戶的家目錄坐在位置,默認是/home/下與用戶同名的目錄,其中家目錄下的檔案是復制/etc/skel目錄下的所有檔案,
-s SHELL 指定新用戶的SHELL,同時,此SHELL必須是/etc/shells檔案內記錄的shell型別才行,部分發行版會指定為/bin/false效果等同于/sbin/nologin
-r 或--system 創建系統用戶
-m 強制創建家目錄
-M 強制不創建家目錄,即使指定了家目錄的位置
-f # 表示指定用戶的寬限期,即用戶密碼到期后寬限的那幾天.-1表示禁用此功能
-D 顯示或設定創建新用戶默認配置屬性資訊,讀取的是/etc/default/useradd檔案內的資訊
-D -s SHELL 設定創建用戶SHELL型別的默認值,此更改同時會修改/etc/default/useradd檔案內的資訊,所以為永久有效更改
-D -e # 設定創建用戶賬戶過期時間的默認值,此更改同時會修改/etc/default/useradd檔案內的資訊,所以為永久有效更改
-D -f # 設定創建用戶寬限期時間的默認值,此更改同時會修改/etc/default/useradd檔案內的資訊,所以為永久有效更改
-D -b /PATH/ 設定創建用戶家目錄存放位置的默認值,此更改同時會修改/etc/default/useradd檔案內的資訊,所以為永久有效更改
usermod命令
usermod [OPTION] USER_NAME
-u ### 修改UID
-g ###/GROUP_NAME 修改GID,修改的GID必須得存在
-G GROUP1,GOURP2... 指定新用戶的附加組,多個附加組需要用英文逗號分開,同時指定的附加組必須存在,還有,現在指定的附加組會覆寫原來的附加組資訊,如果想要追加需要加上-a選項
-a 只能和-G選項一起使用,追加附加組
-c "STRING" 修改注釋資訊
-d /PATH/TO/SOMEDIR 修改家目錄,用戶原來家目錄內有檔案是不會被轉移到新目錄內,如果想要連同目錄內檔案一塊轉移需要使用-m選項
-m 只能和-d選項一起使用,用來移動原來家目錄內的檔案到新家目錄內
-l NEW_NAME 修改用戶名
-s SHELL 修改SHELL
-L 鎖定用戶的密碼,即禁止用戶登錄,小技巧也就是再用戶密碼前加上!
-U 解鎖用戶的密碼,即允許用戶登錄,移除密碼前的!
-e YYYY-MM-DD: 修改用戶賬號的過期日期
-f INACTIVE: 修改用戶賬戶的非活動期限,即寬限期
userdel命令
username [OPTION] USER_NAME
-r 默認情況下洗掉用戶賬戶時是不會洗掉用戶的家目錄和郵箱的,加上-r選項就會連同郵箱和家目錄一并洗掉
-f, --force 強制
passwd命令
passwd [-k] [-l] [-u [-f]] [-d] [-e] [-n mindays] [-x maxdays] [-w warndays] [-i inactivedays] [-S] [--stdin] [username]
passwd 修改自己的密碼
passwd USERNAME 僅root使用,強制修改USERNAME的密碼
-l 鎖定用戶的密碼,即禁止用戶登錄,小技巧也就是再用戶密碼前加上
-u 解鎖用戶的密碼,即允許用戶登錄,移除密碼前的!
-d 清楚用戶的密碼
-n 指定密碼的最短使用時間
-x 指定密碼的最長使用時間
-w 指定密碼的警告期
-i ### 指定密碼的寬限期
-e YYYY-MM-DD 指定用戶賬戶的過期時間
--stdin 從標準輸入接受用戶密碼,然后更改,Ubuntu沒有此選項
chage命令
-d LAST_DAY 更改密碼的時間
-m MIN_DAYS 修改密碼最短使用時間
-M MAX_DAYS 修改密碼最長時間時間
-W WARN_DAYS 修改密碼到期前的警告時間
-I INACTIVE 密碼過期后的寬限期
-E EXPIRE_DATE 用戶的有效期
-l 顯示密碼策略
id命令
用來顯示用戶的實際和有效的用戶資訊
id 什么也不跟,表示顯示當前登錄用戶的用戶資訊
id USERNAME 顯示USERNAME的用戶資訊
-u 僅顯示有效的UID
-g 僅顯示基本組ID
-G 僅顯示用戶所屬組的所有組的ID
-n 顯示組名,而不是ID,但是需要配合-u -g -G一起使用
-r 顯示真實ID
newgrp命令
newgrp [-] GROUP 臨時切換用戶的基本組,如果用戶要切換的組為用戶的附加組則不用輸入密碼,如果不屬于則需要輸入密碼
備注:切換用戶相當于進入子shell,可以使用exit退出
如果加上- 相當于完全切換,可以初始化用戶環境,不加相當于不完全切換,
su命令
su [options...] [-] [user [args...]]
-l 登錄式切換,相當于 su - UserName,會讀取目標用戶的組態檔,同時切換家目錄,屬于完全切換
-c <COMMAND> 不會切換登錄,只是利用對方身份執行一次COMMADN命令
-s SHELL 指定切換登錄的shell型別,
su USERNAME 非完全切換(非登錄式切換),切換用戶時不會讀取對方的組態檔進行初始化,也不會切換家目錄,
su - USERNAME 完全切換(登錄式切換),切換用戶時會去讀對方的組態檔進行初始化,也會切換家目錄,
完全切換和非完全切換都時以子shell的身份進行的,退出需要使用exit
root 切換切換普通用戶時是不需要知道對方的登錄密碼的,
chsh命令
僅管理員使用,更改指定用戶的SHELL型別
chsh USERNAME
chsh -s /bin/bash gentoo
whoami命令
查詢當前登錄用戶是誰
pwch命令、grpck命令
用來檢查用戶的組態檔是不是有問題,主要用于手工批量創建賬戶的檢查
groupmems命令
可以管理附加組的成員關系
groupmems [options] [action]
-g, --group groupname #更改為指定組 (只有root)
-a, --add username #指定用戶加入組
-d, --delete username #從組中洗掉用戶
-p, --purge #從組中清除所有成員
-l, --list #顯示組成員串列
groups命令
可查看用戶組關系
groups [OPTION].[USERNAME]...
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/103641.html
標籤:Linux
上一篇:Linux學習筆記(四)幫助命令
下一篇:Linux筆記:磁盤磁區和掛載
