Linux系統用戶管理算法
1、理論概念sql
(一)系統用戶shell
百科定義的系統用戶是:那些在一般意義上使用信息系統或者受到信息系統影響的「客戶」。通俗講就是可以使用和管理系統資源,並達到某種特定目標的人或「客戶」。centos
(二)用戶分類bash
系統管理員ide
普通用戶測試
系統用戶ui
登陸用戶加密
(三)用戶標識spa
UID:Linux經過UID來區別和標識用戶
根據用戶分類UID的取值範圍:0-65535
系統管理員:0
普通用戶:1-60000
系統用戶:1-499,1-999
登陸用戶:500+,1000+
(四)用戶組
具備相同權限或用戶屬性的用戶劃分爲一類,用組表示
(五)用戶組分類
管理員組
普通組
用戶基本組
用戶附加組
(六)用戶組標識
GID:Linux經過GID來區別和標識用戶組
管理員組:0
普通組:1-499,1-999
500+,1000+
註解:centos的版本從6升到7後,默認用戶建立的新用戶ID從500開始改成從1000開始
2、Linux系統用戶相關的配置文件
1、/etc/passwd;記錄用戶基本信息
2、/etc/group:記錄用戶組基本信息
3、/etc/shadow:記錄用戶密碼及相關信息
4、/etc/gshadow:記錄用戶組密碼及相關信息
(一)各配置文件默認格式:
(1)/etc/passwd;
name:password:UID:GID:GECOS:directory:shell
登陸名:x:UID:GID:comment:主目錄:用戶默認shell
(2)/etc/group:
group_name:password:GID:user_list
組名:x:GID:組用戶列表
(3)/etc/gshadow:
group name:encrypted password:administrators:members
組名:加密字符串:組管理:組成員
(4)/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
用戶名:密碼加密字串:密碼最後修改日期:密碼最小過時期限:密碼最大過時期限:密碼到期警告期:密碼鎖定週期:帳號過時日期:保留字段
(5)擴展:
root:$6$amdZ6oA3a.Cbr7UG$l1RTCNNacewA5vFA263R9NcFpWZGtjl9x4nq0DnCX25wMqdxWApWI7UwTgVO0/wAu1geXrirVv7WChL8FFhsS0:16673:0:99999:7:::
註解:密碼加密字符串由$分隔,分三部分
1、加密算法,6表示sha512加密算法
2、隨機字符串
3、密碼和隨機字符串合併加密後的字符串
加密算法:
md5,sha1, sha224, sha256, sha384, sha512(1,2,3,4,5,6)
md5:用數字1標識,按固定的算法轉換設置的密碼字符串,若是兩個用戶設置相同的密碼,在shadow文件中兩個用戶的加密密碼字符串也是相同的。這是風險點
sha512:用數字6標識,先將用戶設置的密碼串按算法添加部分隨機的字符串,再按固定的加密算法轉換密碼爲加密的字符串,最大程度的下降md5算法存在的風險
注:兩個或多個加密算法能夠混合使用
測試顯示系統加密算法命令:
[root@localhost ~]# authconfig --test|grep hashing
password hashing algorithm is sha512
密碼複雜性策略:
1、使用數字、小寫字母、大寫字母、特殊字符四類中至少三類;
2、足夠長;
3、使用隨機密碼;
4、按期更換
3、命令
1、useradd:添加用戶
useradd [options] LOGIN
-c, --comment COMMENT:用戶描述
-d, --home-dir HOME_DIR:指定用戶家目錄路徑
-e, --expiredate EXPIRE_DATE:指定用戶使用期限;format YYYY-MM-DD
-g, --gid GROUP:指定用戶所屬基本組,此組必須事先存在
-G, --groups GROUP1[,GROUP2,...[,GROUPN]]]:指定所屬的附加組;
-K, --key KEY=VALUE:指定配置文件/etc/login.defs中參數的值
-m, --create-home:建立用戶家目錄
-M, --no-create-home:不給用戶建立家目錄
-p, --password PASSWORD:建立時設置用戶密碼
-r, --system:建立系統用戶
-s, --shell SHELL:設定用戶默認的shell;cat /etc/shells查看可設置的shell類型
-u, --uid UID:指定用戶UID
練習:建立用戶Oracle,所屬附加組database和sql,ID號爲3000, 家目錄爲/home/database,密碼爲1q2w3e,並指定用戶的shell爲bash;
[root@localhost ~]# groupadd database [root@localhost ~]# groupadd sql [root@localhost ~]# useradd -G database,sql -u 3000 -d /home/database -p 1q2w3e -s /bin/bash Oracle
結果:shadow文件中Oracle的密碼是明文密碼,而不是加密後的字符串?
[root@localhost ~]# passwd Oracle
從新用passwd命令重置Oracle密碼後,shadow文件中Oracle用戶密碼是加密後的字符串二、groupadd:添加用戶組
groupadd [options] group
-g, --gid GID:指定組ID
-r, --system:建立系統組
例子是1、useradd練習中的database和sql,查看兩個組信息
id [OPTION]... [USER]
-g, --group:只打印組ID
-a:默認格式
-G, --groups:打印全部GID
-n, --name:打印名字而不是ID,與-ugG一塊兒使用
-u, --user:只打印用戶ID
su [OPTION]... [-] [USER [ARG]...]
-, -l, --login USERNAME:徹底切換,登陸式切換;至關於用新用戶登陸
USERNAME:非徹底切換
-c, --command=COMMAND:以新用戶身份執行命令‘command’
五、usermod修改用戶屬性
usermod [options] LOGIN
-d, --home HOME_DIR:修改用戶家目錄
-g, --gid GROUP:修改用戶所屬基本組
-G, --groups GROUP1[,GROUP2,...[,GROUPN]]]:修改用戶附加組
-L, --lock:鎖定用戶
-p, --password PASSWORD:修改用戶密碼
-s, --shell SHELL:修改用戶默認shell
-u, --uid UID:修改UID
-U, --unlock:解鎖,不能和-p與-L一塊兒使用
六、passwd設置用戶密碼
passwd [-k] [-l] [-u [-f]] [-d] [-e] [-n mindays] [-x maxdays] [-w warn-
days] [-i inactivedays] [-S] [--stdin] [username]
-l:lock user
-u:unlock user
--stdin:從標準輸出接收用戶密碼
echo 123456 | passwd --stdin root
7、userdel:刪除用戶
userdel [-r] USERNAME
-r:刪除用戶的同時刪除其家目錄
8、groupmod: 組屬性修改
groupmod [OPTION] GROUPNAME
-n GROUP_NAME:修改組名
-g GID:修改用戶組GID
九、newgrp:爲當前用戶臨時添加用戶組,切換shell後消失
例:
十、gpasswd:設置用戶組密碼
groupdel:刪除用戶組
十一、chfn:修改用戶信息
chfn [-f full-name] [-o office] ,RB [ -p office-phone] [-h home-phone] -u][-v] [username]
chfn USERNAME:交互式同時修改用戶全部信息,包括name,phone,office
例:
十二、chsh:修改用戶默認shell
chsh [-s shell] [-l] [-u] [-v] [username]
-s, --shell shell:修改默認shell
-l, --list-shells:等同於命令:cat /etc/shells
1三、finger:顯示系統用戶信息
finger [-lmsp] [user ...] [user@host ...]
1四、whoami:顯示系統當前shell登陸用戶。等同於id -un
1五、who:顯示登陸系統的用戶信息
who [OPTION]... [ FILE | ARG1 ARG2 ]
-a, --all:顯示全部信息
-b, --boot:系統最後一次啓動時間
-q, --count:全部登陸的用戶名和用戶數
-r, --runlevel:顯示系統運行級別
-u, --users:顯示登陸的用戶
16、w:顯示哪些用戶登陸以及在做什麼
w - [husfiV] [user]
-h:不打印頭信息
-u:忽略用戶名
-s:簡略方式顯示
-f:不顯示From域
-i:用IP顯示