⽤戶管理
⽤戶的管理(/etc/passwd)
⽤戶的添加(useradd)
⽤戶的刪除(userdel)
⽤戶的修改(usermod)
⽤戶的查看(查看/etc/passwd) id
⽤戶組的管理(切換到root)
①⽤戶組的添加(groupadd)
②⽤戶組的刪除
③⽤戶組的查看
④⽤戶組的修改
primary group(主要組),private group(私有組),attached
group(附加組)
/etc/group存放着⽤戶組的信息
[root@foundation0 ~]# head /etc/group
root:x:0:
bin:x:1:
daemon:x:2:sys:x:3:
adm:x:4:
tty:x:5:
disk:x:6:
lp:x:7:
mem:x:8:
kmem:x:9:
/etc/group
每⼀個冒號分割了⼀個內容
第⼀列表示組名
第⼆列表示組密碼,x表示密碼存放在/etc/gshadows⽂件⾥
第三列表示組ID
第四列表示"組成員"
①⽤戶組的添加
[root@foundation0 ~]# groupadd kcz
[root@foundation0 ~]# grep kcz /etc/group
kcz:x:5001:
[root@foundation0 ~]# grep lsz /etc/group
[root@foundation0 ~]#
[root@foundation0 ~]# groupadd lsz
[root@foundation0 ~]# grep lsz /etc/group
lsz:x:5002:
[root@foundation0 ~]# groupadd lsj
[root@foundation0 ~]# grep lsj /etc/group
lsj:x:5003:
②⽤戶組的刪除
[root@foundation0 ~]# groupdel lsz
[root@foundation0 ~]# grep lsz /etc/group
[root@foundation0 ~]# grep lsj /etc/group
lsj:x:5003:
[root@foundation0 ~]# groupdel lsj
[root@foundation0 ~]# grep lsj /etc/group
⽤戶組和⽤戶的關聯
建立⽤戶的時候指定⽤戶組
③⽤戶組的查看
grep 組名 /etc/group
④⽤戶是有UID的,對於⽤戶組來講也有GID(group ID),GID也是惟⼀
的。
能夠添加⽤戶組的同時指定GID
[root@foundation0 ~]# groupadd -g 10000 kcq
[root@foundation0 ~]# grep kcq /etc/group
kcq:x:10000:
⑤修改組
[root@foundation0 ~]# groupmod -g 20000 kcq
[root@foundation0 ~]# grep kcq /etc/group
kcq:x:20000:
因爲任何⽤戶都必須依賴於⽤戶組才能存在,因此若是建立⽤戶沒有指定⽤
戶組(primary group),那麼系統會爲該⽤戶建立⼀個同名的組。這個組
叫作該⽤戶的private group(私有組),私有組默認⾥⾯只有⼀個和該私
有組同名的⽤戶。
私有組的意義就在於讓⽤戶有了⼀個⽤戶組
。
[
root@foundation0 ~]# grep hzz /etc/passwd
hzz:x:5232:5232::/home/hzz:/bin/bash
[root@foundation0 ~]# grep 5232 /etc/group
hzz:x:5232:
若是你建立了⼀個⽤戶,指定了該⽤戶的所屬組,那麼該⽤戶就沒有私有
組。
[root@foundation0 ~]# groupadd lsj -g 30000
[root@foundation0 ~]# useradd tgb -g lsj[root@foundation0 ~]# grep tgb /etc/passwd
tgb:x:5233:30000::/home/tgb:/bin/bash
[root@foundation0 ~]# grep tgb /etc/group
[root@foundation0 ~]#
/etc/passwd的第四列GID表示該⽤戶屬於的primary group(主要
組),⼀個⽤戶能夠屬於多個組,記錄在/etc/passwd的那個組就是
primary group(主要組)
[root@foundation0 ~]# grep hzz /etc/passwd
hzz:x:5232:5232::/home/hzz:/bin/bash
[root@foundation0 ~]# grep hzz /etc/group
hzz:x:5232:
hzz這個組既是hzz⽤戶的private group,⼜是primary group。
添加附加組(attached group),⼀個⽤戶只能夠屬於⼀個primary
group,可是能夠同時屬於多個attached group
useradd -g 指定的是添加⽤戶該⽤戶的primary group,-G 指定的是
添加該⽤戶的attached group。
[root@foundation0 ~]# groupadd diqiu
[root@foundation0 ~]# useradd yzq -G diqiu
[root@foundation0 ~]# grep yzq /etc/passwd
yzq:x:5236:5236::/home/yzq:/bin/bash
[root@foundation0 ~]# grep 5236 /etc/group
yzq:x:5236:
附加組理論上能夠隨便將任何⼀個⽤戶組當作任何⼀個⽤戶的附加組,可是
理論上,應該儘量的不將私有組做爲某個⽤戶的附加組。
[root@foundation0 ~]# id yzq
uid=5236(yzq) gid=5236(yzq)
groups=5236(yzq),30001(diqiu)
id查看⼀個⽤戶的時候,能夠看到uid和gid還有該⽤戶屬於的全部組。
gid就表示該⽤戶的primary group,除了gid以外的全部組都是
attached group。
添加⽤戶的時候直接指定附加組
useradd username -G attached group
將⼀個現有的⽤戶添加到附加組
[root@foundation0 ~]# useradd gousheng
[root@foundation0 ~]# id gousheng
uid=5238(gousheng) gid=5238(gousheng)
groups=5238(gousheng)
[root@foundation0 ~]# usermod -G lsj gousheng
[root@foundation0 ~]# id gousheng
uid=5238(gousheng) gid=5238(gousheng)
groups=5238(gousheng),30000(lsj)
[root@foundation0 ~]# usermod -G kcq gousheng
[root@foundation0 ~]# id gousheng
uid=5238(gousheng) gid=5238(gousheng)
groups=5238(gousheng),20000(kcq)
[root@foundation0 ~]# usermod -aG lsj gousheng
[root@foundation0 ~]# id gousheng
uid=5238(gousheng) gid=5238(gousheng)
groups=5238(gousheng),20000(kcq),30000(lsj)⽤戶密碼的管理(最常⻅的運維操做)
[root@foundation0 ~]# usermod -Ga lys gousheng
usermod: group 'a' does not exist'
[root@foundation0 ~]# gpasswd -a gousheng lys
Adding user gousheng to group lys
[root@foundation0 ~]# id gousheng
uid=5238(gousheng) gid=5238(gousheng)
groups=5238(gousheng),20000(kcq),30000(lsj),5237(lys)
[root@foundation0 ~]# gpasswd -d gousheng lys
Removing user gousheng from group lys
[root@foundation0 ~]# id gousheng
uid=5238(gousheng) gid=5238(gousheng)
groups=5238(gousheng),20000(kcq),30000(lsj)
[root@foundation0 ~]# gpasswd -d gousheng kcq
Removing user gousheng from group kcq
[root@foundation0 ~]# id gousheng
uid=5238(gousheng) gid=5238(gousheng)
groups=5238(gousheng),30000(lsj)
[root@foundation0 ~]# gpasswd -d gousheng lsj
Removing user gousheng from group lsj
[root@foundation0 ~]# id gousheng
uid=5238(gousheng) gid=5238(gousheng)
groups=5238(gousheng)
①給⽤戶設置密碼
[root@foundation0 ~]# id wjxuid=5001(wjx) gid=5000(wjx) groups=5000(wjx)
[root@foundation0 ~]# passwd wjx
Changing password for user wjx.
New password: 1
BAD PASSWORD: The password is a palindrome
Retype new password: 1
passwd: all authentication tokens updated successfully.
②⽤戶的密碼信息存放在/etc/shadow中
[root@foundation0 ~]# grep wjx /etc/shadow
wjx:$6$ae3uY4p/bFgASqKo$pjbAm7hpnwfsEq3fMdvDUIsRmqRhLMHs
kZizAWLZbLUTuI3EcAi7yce0KhNrptMVz5a1z12PrVyN3o4LHYGjU/:1
8363:0:99999:7:::
[root@foundation0 ~]# grep tgb /etc/shadow
tgb:!!:18363:0:99999:7:::
[root@foundation0 ~]# grep tgb /etc/shadow
tgb:$6$iCqzFNJ7wLtjp/96$iKAyxBortuzeDEpFChKZavAnM6qzhlbu
JEdzrECQeZwK8D5UzwwQh/yhTeBOp29tzAvEtNEozxkAg8ZZxChTS.:1
8363:0:99999:7:::
/etc/shadow存放的是密碼信息,每⼀列密碼信息都被冒號分割開來。
第⼀列表示存放的是哪一個⽤戶的密碼信息(username)
第⼆列存放的就是密碼,該密碼並非明⽂的,⽽是使⽤算法⽣成的,算法
在/etc/login.defs中有指定。
第三列存放的是上次修改密碼的時間
第四列存放的是密碼最⼩有效期
若是是0,就能夠⽆限次的不考慮間隔的修改密碼
若是是1,就表示,修改完密碼以後,必須使⽤該密碼⼀天才能再次修改
第五列存放的是密碼的最⼤有效期
默認是99999,表示密碼99999天就會失效。若是該數字是3,就表示,3天后密碼會過時,若是你想繼續使⽤,必需要在
密碼到期以前修改。
第六列存放的是密碼到期前提早多少天警告的時間信息
若是該數字爲7,就表示密碼到期以前的7天就會發出警告,告訴你密碼即將
過時。
第七列表示⽤戶密碼到期後寬限⽇期
若是該數字是2,就表示密碼到期後,你還能使⽤該密碼2天,若是2天到了,
你還沒修改或更新密碼,密碼就失效了。
第⼋列表示帳號失效⽇期
第⼋列的⽇期就是帳號的失效⽇期。若是到了第⼋列的時間,帳號直接失
效。不可登陸。
第九列保留
使⽤passwd命令控制⽤戶的密碼信息
[root@foundation0 ~]# grep tgb /etc/shadow
tgb:$6$iCqzFNJ7wLtjp/96$iKAyxBortuzeDEpFChKZavAnM6qzhlbu
JEdzrECQeZwK8D5UzwwQh/yhTeBOp29tzAvEtNEozxkAg8ZZxChTS.:1
8363:0:99999:7:::
[root@foundation0 ~]# passwd -d tgb
Removing password for user tgb.
passwd: Success
[root@foundation0 ~]# grep tgb /etc/shadow
tgb::18363:0:99999:7:::
-d 參數能夠刪除⼀個⽤戶的密碼
passwd不能設置上次修改密碼的時間信息
[root@foundation0 ~]# passwd -n 3 -x 10 -w 5 -i 2 tgbAdjusting aging data for user tgb.
passwd: Success
[root@foundation0 ~]# grep tgb /etc/shadow
tgb::18363:3:10:5:2::
passwd的帳號失效⽇期-e,直接加⽤戶名,能將該⽤戶的密碼直接設置過
期。
[root@foundation0 ~]# passwd -e tgb
Expiring password for user tgb.
passwd: Success
[root@foundation0 ~]# grep tgb /etc/shadow
tgb::0:3:10:5:2::
上次修改密碼時間的字段變成了0,就表示該⽤戶下次登陸必須修改密碼。在
windows server當中,建立完⽤戶,默認該值就是0。使⽤chage(change age)來修改⽤戶的密碼信息,相⽐於passwd更靈
活的修改全部的密碼信息。
[root@foundation0 ~]# chage -d 1300 -m 2 -M 20 -W 10 -I
4 -E 2021-1-1 tgb
[root@foundation0 ~]# grep tgb /etc/shadow
tgb:$6$akpmgINkDix4ueTo$8g0O70/JD303RjQ7M9iYggZStkpDpHV9
ES/gaipVu5qgORqHDjT61U2664IgPcfNPYR/8wNMG5W0yPpdo0aQ81:1
300:2:20:10:4:18628:
⼀般來講,針對上次修改密碼的時候,要麼不修改,要麼設置爲0,表示讓⽤
戶下次登陸必須修改密碼。(tgb登陸的時候,先輸⼊tgb原來的密碼,而後
設置tgb新的密碼,新的密碼必須有⼀定的密碼強度)
如何鎖定⽤戶的密碼
[root@foundation0 ~]# passwd -l tgb
Locking password for user tgb.
passwd: Success
[root@foundation0 ~]# grep tgb /etc/shadow
tgb:!!$6$akpmgINkDix4ueTo$8g0O70/JD303RjQ7M9iYggZStkpDpH
V9ES/gaipVu5qgORqHDjT61U2664IgPcfNPYR/8wNMG5W0yPpdo0aQ81
:0:2:20:10:4:18628:
當帳號被鎖定了,除了root以外,任何其它⽤戶不能切換到被鎖定的帳號
[root@foundation0 ~]# passwd -u tgb
Unlocking password for user tgb.
passwd: Success
[root@foundation0 ~]# grep tgb /etc/shadowtgb:$6$akpmgINkDix4ueTo$8g0O70/JD303RjQ7M9iYggZStkpDpHV9
ES/gaipVu5qgORqHDjT61U2664IgPcfNPYR/8wNMG5W0yPpdo0aQ81:0
:2:20:10:4:18628:
-l 鎖定
-u 解鎖
passwd命令root⽤戶能夠⽤passwd修改任何⽤戶的密碼,包括⾃⼰的。
普通⽤戶只能夠⽤passwd命令修改⾃⼰的密碼。
[
tgb@foundation0 ~]$ passwd wjx
passwd: Only root can specify a user name.
[tgb@foundation0 ~]$
[tgb@foundation0 ~]$ passwd hzz
passwd: Only root can specify a user name.
[tgb@foundation0 ~]$
[tgb@foundation0 ~]$
[tgb@foundation0 ~]$ passwd tgb
passwd: Only root can specify a user name.
[tgb@foundation0 ~]$
[tgb@foundation0 ~]$ passwd
Changing password for user tgb.
Current password:
New password:
普通⽤戶想修改⾃⼰的密碼,直接passwd就能夠的。
passwd --stdin 可讓passwd接收標準的輸⼊,只能root使⽤⽤戶組密碼信息
[root@foundation0 ~]# echo 123 | passwd --stdin tgb
Changing password for user tgb.
passwd: all authentication tokens updated successfully.
將tgb的密碼設置爲123
⽤戶組密碼信息存放在/etc/gshadow
[root@foundation0 ~]# usermod -G lsj tgb
[root@foundation0 ~]# grep lsj /etc/gshadow
lsj:!::tgb
[root@foundation0 ~]# grep lsj /etc/group
lsj:x:30000:tgb
組密碼的第⼆列記錄的是組密碼
默認的組和默認的⽤戶⼀樣沒有密碼
[root@foundation0 ~]# gpasswd lsj
Changing the password for group lsj
New Password:
Re-enter new password:
[root@foundation0 ~]# grep lsj /etc/gshadow
lsj:$6$Xw4eSQtu$j5cnpBa/aHXzdub9PQwru5k.9tGw70A6.UOV5ThA
NF4SWwnU.KVmAz5Hl6xz6JaU1LF4ZcG.nf8neb7lfVIjd0::tgb對於任何⼀個⽤戶來講,建立的⽂件,默認的擁有⼈就是該⽤戶,默認的所
屬組是該⽤戶的primary group
[tgb@foundation0 ~]$ id
uid=5239(tgb) gid=5239(tgb) groups=5239(tgb),30000(lsj)
context=unconfined_u:unconfined_r:unconfined_t:s0-
s0:c0.c1023
[tgb@foundation0 ~]$ touch aaa.avi
[tgb@foundation0 ~]$ ls -l
total 0
-rw-rw-r--. 1 tgb tgb 0 Apr 11 22:51 aaa.avi
[tgb@foundation0 ~]$ newgrp lsj
[tgb@foundation0 ~]$ touch bbb.avi
[tgb@foundation0 ~]$ ls -l
total 0
-rw-rw-r--. 1 tgb tgb 0 Apr 11 22:51 aaa.avi
-rw-r--r--. 1 tgb lsj 0 Apr 11 22:51 bbb.avi
newgrp groupname,能讓⼀個⽤戶臨時的切換到另外⼀個組,那麼切換成
功以後,該⽤戶建立的⽂件就都屬於切換後的組。
組密碼的做⽤是讓那些不屬於該組的⽤戶,能夠切換到該組的⼀種⽅式,只
要提供正確的組密碼,便可切換成功。
touch /etc/nologin 除了root以外的全部⽤戶都進制登陸。
rm -rf /etc/nologin 解除⽤戶登陸限制