用戶、組和權限
安全3A資源分派
(authentication)認證
(authorization)授權
(accounting)審計
user( 用戶)
Linux用戶:Username/UID (用戶的名稱和用戶的UID)
管理員:root,0 管理員的UID是0 (一般系統默認root為管理員,用戶UID為0的都可以作為管理員)
普通用戶:1-65535
普通用戶分為兩種:
系統用戶:1-499(CentOS6),1-999(CentOS)
對守護進程獲取資源進行權限分配
登錄用戶:500+(CentOS6),1000+(centos7)
通過交互式交互式登錄
【用戶是UID、組是GID】
group(組)一些用戶或組的集合 稱之為組
Linux組:Groupnname/GID (組的名稱和組的GID)
管理員組:root,0 管理員組的GID是0
系統組:1-499(centos6) 1-999(centos7)
普通組:500+(centos 6) 1000+(centos 7)
對於一個普通用戶而言可以有多個不同的組,分別稱之為用戶的基本組(主組)和附加組;基本組
組名與用戶名相同,切僅僅包含一個用戶,也叫私有組。基本組以外的組屬於用戶的附加組
例如:[root@MKB ~]# cat /etc/passwd
執行結果:root:x:0:0:root,chfn,xiaomage,sdad:/root:/bin/bash
格式:(用戶名:密碼:UID:GID:主組,附加組:家目錄:用戶默認的shell)
Linux組的類別
用戶的主要組稱為(主組):
用戶必須屬於一個並且只有一個主組
組名同用戶名,且僅包含一個用戶稱為(私有組)
用戶的付加組稱為(輔助組):
一個用戶可以屬於零個或者多個輔助組
例如: ~]# groups (查看當前所在組)
執行結果: root
例如: ~]# groups bin(查看用戶主組,有沒有附加組)
執行結果: bin : bin daemon sys (用戶):(主組)(附加組)
例如: ~]# id bin (顯示指定用戶或當前用戶的用戶與組信息)
執行結果 : uid=1(bin) gid=1(bin) groups=1(bin),2(daemon),3(sys) (用戶)(主組) 組的列表= 主組,輔助組,附加組
例如: ~]# id -u makangbo (僅顯示有效用戶ID)
執行結果:500 (命令加選項,用戶id)
例如: ~]# getent passwd makangbo (查看家目錄的路徑信息)
makangbo:x:500:500::/home/makangbo:/bin/bash
(用戶名:密碼:UID:GID:用戶注釋信息:用戶的家目錄:用戶默認的shell)
security context (安全上下文)
運行中的程序:進程(process)
以進程發起者的身份運行:例如# root:/bin/cat
例如# xiaomag:/bin/cat
進程所能訪問資源的權限取決於進程的運行者的身份
而不是取決於資源的所有者 (人不一樣權限不一樣,跟程序無關)
Linux用戶和組的主要配置文件:
/etc/passwd:用戶及其屬性信息(名稱、UID、主組ID等)
/etc/group:組及其屬性信息
/etc/shadow:用戶密碼及其相關屬性
/etc/gshadow:組密碼及其相關屬性
~]# pwunconv (密碼從shadow轉換到passwd)
~]# pwconv (密碼不轉換)
passwd 文件格式 (用戶及其屬性信息)
login name:登錄用戶名(xiaomage)
passwd: 密碼 (x)
UID:用戶身份編號(1000)
GID:登錄默認所在組編號(1000)
GECOS:用戶全名或注釋
home directory:用戶主目錄(/home/xiaomag)
shell:用戶默認使用shell(/bin/bash)
例如:~]# cat /etc/passwd
執行結果:xiaomage:x:3010:3010::/home/xiaomage:/bin/bash
格式:(用戶:密碼:UDI:GID:用戶全名或注釋:家目錄:當前所用的shell)
shadow 文件格式 (用戶密碼及其相關屬性)
登錄用戶
用戶密碼:一般用sha512加密
從1970年1月1日起到密碼最近一次被更改的時間
密碼再過幾天可以被變更(0表示隨時可被變更)
密碼再過幾天必須被變更(9999表示永不過期)
密碼過期前幾天系統提示用戶(默認為一周)
密碼過期幾天后帳號會被鎖定
從1970年1月1日算起,多少天后帳號失效。
例如:~]# cat /etc/shadow
執行果結果:xiaomage:$6$3C3XJDxs$2sUoIOWp3IoHu6jzz3lXVVCmUcq.ABX8LQv/YywLSFWhowlmN1eWKWUWmkl.HQ.gYufi030F3m0XnfE9jLslo/:17015:0:99999:7:::
格式 (用戶名:加了密的密碼:最近一次更改密碼的日期:密碼的最小使用期限:密碼的最大使用期限:提示密碼警告時間段:密碼禁用期:賬戶過期日期:保留字段)
密碼的加密解密機制
加密:明文- 密文
解密: 密文- 明文
單項加密:哈希算法,原文不同,密文必不同
相同算法定長輸入,獲取密文不可逆推原始數據
雪崩效應:初始條件的衛校改變,引起結果的巨大改變
sha256:256bits
sha512:512bits
更改加密算法 authconfig --passalgo=sha256 --update
group文件格式 (組及其屬性信息)
群組名稱
群組密碼:通常不設定,密碼是被記錄在/etc/gshadow
GID:就是群組的ID
以當前組為附加組的用戶列表(分隔符為逗號)
例如:~]# cat /etc/group
執行結果 bin:x:1:bin,daemon
格式 (組名稱:組密碼:組GID:當前組為組的附加組用戶列表,以逗號分隔開)
gshdow文件格式 (組密碼及其相關屬性)
群組名稱
群組密碼
組管理員列表:組管理員列表,更改組密碼和成員
以當前組為附加組的用戶列表:(分隔符為逗號)
文件操作
vipw和vigr (編輯密碼、組、影子密碼或影子組文件)
pwck (檢查密碼的完整性)
grpck(檢查組組文件的完整性)
vipw, vigr - 編輯密碼、組、影子密碼或影子組文件。
vipw [選項]
vigr [選項]
描述 vipw 和 vigr 命令分別編輯 /etc/passwd 和 /etc/group 文件。使用 -s 標識時
,將編輯這些文件的影子版,即分別為 /etc/shadow 和 /etc/gshadow。這些程序
將設置相應的鎖,以防止文件損壞。尋找編輯器時,首先嘗試環境變量 $VISUAL,
然后是環境變量 $EDITOR,最后是默認編輯器 vi(1)。
選項:
-g, --group
編輯 group 數據庫。
-h, --help
現實幫助信息並退出。
-p, --passwd
編輯 passwd 數據庫。
-q, --quiet
安靜模式。
-R, --rootCHROOT_DIR
適用於chroot_dir目錄的變化和使用從chroot_dir目錄的配置文件。
-s, --shadow
編輯 shadow 或 gshadow 數據庫。
pwck (檢查密碼的完整性)
用戶管理命令
useradd (增加用戶)
usermod (修改用戶)
userdel (刪除用戶)
組帳號維護命令
groupadd (建立組)
groupmod (修改組)
groupdel (刪除組)
useradd - 創建一個新用戶或更新默認新用戶信息
useradd [選項] 登錄
useradd -D
useradd -D [選項]
描述
如果使用時不帶 -D 選項,useradd 命令使用命令行上指定的值和系統的默認值創
建一個新用戶。根據命令行選項,useradd 命令也會更新系統文件和創建新用戶的
主目錄並復制初始文件。
默認上,也會為用戶創建組
-u, --uidUID
用戶 ID 的數字值。此值必須為唯一的,除非使用了 -o 選項。此值必須非負
,默認使用大於等於 UID_MIN,且大於任何其他用戶 ID 最小值。
-o, --non-unique
允許使用重復的 UID 創建用戶賬戶。
此選項只有和 -u 選項組合使用才有效。
-g, --gidGROUP
用戶初始登陸組的組名或號碼。組名必須已經存在。組號碼必須指代已經存在
的組。 指明用戶所屬基本組,可為組名也可為GID
-c, --commentCOMMENT
任何字符串。通常是關於登錄的簡短描述,當前用於用戶全名。 用戶注釋信息
-d, --home-dir HOME_DIR
以指定的路徑(不存在)為家目錄
-s, --shellSHEL
指明用戶的默認shell程序;可用在列表/etc/shell 文件中
-G, --groupsGROUP1[,GROUP2,...[,GROUPN]]]
為用戶指明附加組,組必須事先存在
受到了 -g 選項給定的組同樣的限制。
-N, --no-user-group
不創建私用組做主組,使用users做主組
-r, --system
創建系統用戶
-m, --create-home
如果不存在,則創建用戶主目錄。骨架目錄中的文件和目錄(可以使用 -k 選
項指定),將會復制到主目錄。
練習:1
創建testuser uid 1234,主組:bin,輔助組:root,ftp,shell:/bin/csh home:/testdir/testuser
#useradd testuser -u 1234 -g bin -G root,ftp -m -d home/testdir/testuser -s /bin/csh
(命令選項加家目錄名稱)(加選項-u創建UID)(-g創建主組) (-G創建附加組)(-d創建家目錄路徑- m配合-d使用具體的看上面選項)
usermod (修改用戶)
usermod [選項] 登錄
描述 usermod 修改系統賬戶文件和在命令行上指定的相關更改。
-c, --commentCOMMENT ('xiaomage')
用戶密碼文件中注釋字段的新值。通常使用 chfn(1) 工具對其進行修改。新的注釋信息 -u, --uidUID
用戶 ID 的新數值。
這個值必須是唯一的,除非使用了 -o 選項,必須是非負值。
-g, --gidGROUP
新基本組GID 用戶的新初始登錄組的組名或數字代號。此組必須存在。
用戶主目錄中,屬於原來的主組的文件將轉交新組所有。
G, --groups GROUP1[,GROUP2,...[,GROUPN]]]
新附加組,原來的附加組將會被覆蓋;若保留原有,則要同時使用-a選項,表示append(附加,貼上)
-s, --shellSHELL
用戶的新登錄 shell 的名稱。將此字段設置為空會讓系統選擇默認的登錄 shell
-d, --homeHOME_DIR
新家目錄不會自動創建,原家目錄的文件不會移動至新家目錄;
若要創建新家目錄並移動原家目錄數據,同時使用-m選項。
-m, --move-home
將家目錄內容移至新位置 (僅於 -d 一起使用)
-l, --loginNEW_LOGIN
修改為新的名字
-L, --lock
指定用戶名字,在/etc/shadow,密碼欄中增加!字符進行鎖定
-U, --unlock
指定用戶,在/etc/shadow,密碼欄中刪除!字符 進行解鎖 -e, --expiredateEXPIRE_DATE
指明 用戶賬戶將過期的日期。日期以 YYYY-MM-DD 格式指定。
-f, --inactiveINACTIVE
密碼過期之后,賬戶被徹底禁用之前的天數。
0 表示密碼過期時,立即禁用賬戶;-1 表示不使用這個功能。
此選項需要一個 /etc/passwd 文件。
userdel (刪除用戶)
userdel [選項] 登錄
描述 userdel 修改系統賬戶文件,刪除與用戶名 LOGIN 相關的所以項目。給出的用戶
名必須存在。
-r, --remove 刪除用戶家目錄
用戶主目錄中的文件將隨用戶主目錄和用戶郵箱一起刪除。在其它文件系統中
的文件必須手動搜索並刪除。
練習:2
修改testuser uid:4321,主組:root,輔助組:nobody, loginname:test,home:/home/test 家數據遷移
~ ]# usermod -u 4321 -g root -G nobody -l test -m -d /home/test testuser
(命令加-u選項修改UID)(-g修改主組 -G改新家目錄)(-l改附加組) (-d創建新家目錄-m般原始數據遷移到新家目錄)(原家目錄)
練習:3
批量創建帳號:user1...user10 uid:3000-3009,shell:/bin/csh,home:/testdir/username
passwd:usernamepass
注意家目錄相關配置,使用戶正常登錄
先來創建用戶
]# vim u.txt 用編輯器 編輯一個自定義名稱的txt文檔 文檔格式看下面
]# cat u.txt 查看文檔的內容
user:x:3000:3000::/home/testdir/user:/bin/csh
user1:x:3001:3001::/home/testdir/user1:/bin/csh
user2:x:3002:3002::/home/testdir/user2:/bin/csh
user3:x:3003:3003::/home/testdir/user3:/bin/csh
user4:x:3004:3004::/home/testdir/user4:/bin/csh
user5:x:3005:3005::/home/testdir/user5:/bin/csh
user6:x:3006:3006::/home/testdir/user6:/bin/csh
user7:x:3007:3007::/home/testdir/user7:/bin/csh
user8:x:3008:3008::/home/testdir/user8:/bin/csh
user9:x:3009:3009::/home/testdir/user9:/bin/csh
]# newusers u.txt (新增用用戶的命令,新增文檔內的用戶)
~]# ll /home/testdir/ (查看路徑是否成功)
總用量 40
drwx------. 2 user user 4096 8月 2 19:58 user
drwx------. 2 user1 user1 4096 8月 2 19:58 user1
drwx------. 2 user2 user2 4096 8月 2 19:58 user2
drwx------. 2 user3 user3 4096 8月 2 19:58 user3
drwx------. 2 user4 user4 4096 8月 2 19:58 user4
drwx------. 2 user5 user5 4096 8月 2 19:58 user5
drwx------. 2 user6 user6 4096 8月 2 19:58 user6
drwx------. 2 user7 user7 4096 8月 2 19:58 user7
drwx------. 2 user8 user8 4096 8月 2 19:58 user8
drwx------. 2 user9 user9 4096 8月 2 19:58 user9
~]# cat /etc/passwd (查看用戶信息)
user:x:3000:3000::/home/testdir/user:/bin/csh
user1:x:3001:3001::/home/testdir/user1:/bin/csh
user2:x:3002:3002::/home/testdir/user2:/bin/csh
user3:x:3003:3003::/home/testdir/user3:/bin/csh
user4:x:3004:3004::/home/testdir/user4:/bin/csh
user5:x:3005:3005::/home/testdir/user5:/bin/csh
user6:x:3006:3006::/home/testdir/user6:/bin/csh
user7:x:3007:3007::/home/testdir/user7:/bin/csh
user8:x:3008:3008::/home/testdir/user8:/bin/csh
user9:x:3009:3009::/home/testdir/user9:/bin/csh
以上就是創建用戶成功了
賬戶都有了但是沒有密碼,這就不正常了,下面要批量創建密碼
~]# vim m.txt 用編輯器 編輯一個自定義名稱的txt文檔 上面已經有個用戶的文檔了,
盡量不要搞重名的文檔,不然會報錯 文檔格式看下面
~]# cat m.txt 查看文檔內容
user:userpass
user1:user1pass newusers
user2:user2pass
user3:user3pass
user4:user4pass
user5:user5pass
user6:user6pass
user7:user7pass
user8:user8pass
user9:user9pass
文檔創建成功 ,接下來讀取
~]# cat m.txt |chpasswd (把文檔用管道符 傳給設置密碼的命令)
~]# cat /etc/shadow (查看用戶密碼及其相關屬性)
user1:$6$9RYuW/M8iMIv$e5rTqpt4bPWycu9dflgmlmTxqsC5V9KVF.IvANn16YxI.QC3gRII7zXdBnEDOiiKY70SxtDeqeA/i76RgMSFh.:17015:0:99999:7:::
user2:$6$gmd.k/BQ$1Ql1A6PNP7EVG.BVfinrZYsO0vDpyuk8mp7pGkE.tkHdIQQcjQqfeI4JjtnTq5VSi.OmCy9/TvxscuYazQxy71:17015:0:99999:7:::
user3:$6$iUyAeZuXLR/Sn$Oyg98sTOyQL49LOv1.xPg4sjj6nrOHtPzIza8rXn9LFzsTg2Nfo/lODx5SKrbp9ymlZq3eBRcERoWvn8x7ptx/:17015:0:99999:7:::
user4:$6$WgQDi/WewTe$ajT38DDqkSdhTMkvdAW8koAqiWe85jo8CtrunpVu3mcF7HleO6Qr3W1u2hLkrPzPr2rAOL5F63PV7JmdzNXn70:17015:0:99999:7:::
user5:$6$RpHcooAEzPWfXE$K2enpej7BLJptsBVfgrEnhKIYVNtWHEqF5kEb450QfQ7RvGcSvyIxFhUrfz3APU68McEIlFpVR4Hj2jN/WK7J.:17015:0:99999:7:::
user6:$6$VNZIrZd/$ANJbrUlG62NKiuxM5SmiMx8.NGwdcQYcFOHbXzbIMAw1LO8DZmSoXoHvvObMaVmVd4U4MjT.JrDQRBZF5ZAqE/:17015:0:99999:7:::
user7:$6$oR0Alfvtp$2ZC6f8O3A09sc.eXZXpo3DPRnLLBWmY5AOG7mRXPwc50xg/jmmlEifLYh/mres8K9Q3VMjr.Cr9MSszcENEZT0:17015:0:99999:7:::
user8:$6$QVxA9n13$ShUI1NGBOOI5DsLcZXpUsUHPTMqIcWDn9C5aZlklrkstopXD8/ToJwvDzgj5wxF8YOXgq5XLOcVRHaY7HPoUA.:17015:0:99999:7:::
user9:$6$eWpxt/KyUX1FmNgB$ByklE1y2ESnglrfvPpOYxoaJZnIhgs/jmj4empwc.T1qILZP11zwCwNyaCBMT/3A9DBNQdIU8QP4Fvro4QLTr1:17015:0:99999:7:::
這就是成功了,當然密碼經過加密了。
下面找一個沒設置密碼的做對比:test:!!:17015:0:99999:7::: 看格式對比就行了