简介

linux基本的用户管理。

⽤户的管理(切换到root)

⽤户的添加(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/groupkcz:x:5001:[root@foundation0 ~]# grep lsz /etc/group[root@foundation0 ~]#[root@foundation0 ~]# groupadd lsz[root@foundation0 ~]# grep lsz /etc/grouplsz:x:5002:[root@foundation0 ~]# groupadd lsj[root@foundation0 ~]# grep lsj /etc/grouplsj:x:5003:②⽤户组的删除[root@foundation0 ~]# groupdel lsz[root@foundation0 ~]# grep lsz /etc/group[root@foundation0 ~]# grep lsj /etc/grouplsj: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/groupkcq:x:10000:⑤修改组(⼀般功能很鸡肋,就是修改个组ID)[root@foundation0 ~]# groupmod -g 20000 kcq[root@foundation0 ~]# grep kcq /etc/groupkcq:x:20000:

⽤户组和⽤户的关联

创建⽤户的时候指定⽤户组

由于任何⽤户都必须依赖于⽤户组才能存在,所以如果创建⽤户没有指定⽤户组(primary group),那么系统会为该⽤户创建⼀个同名的组。这个组叫做该⽤户的private group(私有组),私有组默认⾥⾯只有⼀个和该私有组同名的⽤户。经验之谈:私有组的意义就在于让⽤户有了⼀个⽤户组。[root@foundation0 ~]# grep hzz /etc/passwdhzz:x:5232:5232::/home/hzz:/bin/bash[root@foundation0 ~]# grep 5232 /etc/grouphzz:x:5232:如果你创建了⼀个⽤户,指定了该⽤户的所属组,那么该⽤户就没有私有组。[root@foundation0 ~]# groupadd lsj -g 30000[root@foundation0 ~]# useradd tgb -g lsj[root@foundation0 ~]# grep tgb /etc/passwdtgb: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/passwdhzz:x:5232:5232::/home/hzz:/bin/bash[root@foundation0 ~]# grep hzz /etc/grouphzz:x:5232:在上⾯的例⼦,我们看到了,hzz这个组既是hzz⽤户的private group,⼜是primary group。添加附加组(attached group),⼀个⽤户只可以属于⼀个primarygroup,但是可以同时属于多个attached groupuseradd -g 指定的是添加⽤户该⽤户的primary group,-G 指定的是添加该⽤户的attached group。[root@foundation0 ~]# groupadd diqiu[root@foundation0 ~]# useradd yzq -G diqiu[root@foundation0 ~]# grep yzq /etc/passwdyzq:x:5236:5236::/home/yzq:/bin/bash[root@foundation0 ~]# grep 5236 /etc/groupyzq:x:5236:附加组理论上可以随便将任何⼀个⽤户组当做任何⼀个⽤户的附加组,但是理论上,应该尽可能的不将私有组作为某个⽤户的附加组。[root@foundation0 ~]# id yzquid=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 goushenguid=5238(gousheng) gid=5238(gousheng)groups=5238(gousheng)[root@foundation0 ~]# usermod -G lsj gousheng[root@foundation0 ~]# id goushenguid=5238(gousheng) gid=5238(gousheng)groups=5238(gousheng),30000(lsj)[root@foundation0 ~]# usermod -G kcq gousheng[root@foundation0 ~]# id goushenguid=5238(gousheng) gid=5238(gousheng)groups=5238(gousheng),20000(kcq)[root@foundation0 ~]# usermod -aG lsj gousheng[root@foundation0 ~]# id goushenguid=5238(gousheng) gid=5238(gousheng)groups=5238(gousheng),20000(kcq),30000(lsj)⽤户密码的管理(最常⻅的运维操作)[root@foundation0 ~]# usermod -Ga lys goushengusermod: group 'a' does not exist'[root@foundation0 ~]# gpasswd -a gousheng lysAdding user gousheng to group lys[root@foundation0 ~]# id goushenguid=5238(gousheng) gid=5238(gousheng)groups=5238(gousheng),20000(kcq),30000(lsj),5237(lys)[root@foundation0 ~]# gpasswd -d gousheng lysRemoving user gousheng from group lys[root@foundation0 ~]# id goushenguid=5238(gousheng) gid=5238(gousheng)groups=5238(gousheng),20000(kcq),30000(lsj)[root@foundation0 ~]# gpasswd -d gousheng kcqRemoving user gousheng from group kcq[root@foundation0 ~]# id goushenguid=5238(gousheng) gid=5238(gousheng)groups=5238(gousheng),30000(lsj)[root@foundation0 ~]# gpasswd -d gousheng lsjRemoving user gousheng from group lsj[root@foundation0 ~]# id goushenguid=5238(gousheng) gid=5238(gousheng)groups=5238(gousheng)

⽤户密码的管理(最常⻅的运维操作)

①给⽤户设置密码[root@foundation0 ~]# id wjxuid=5001(wjx) gid=5000(wjx) groups=5000(wjx)[root@foundation0 ~]# passwd wjxChanging password for user wjx.New password: 1BAD PASSWORD: The password is a palindromeRetype new password: 1passwd: all authentication tokens updated successfully.②⽤户的密码信息存放在/etc/shadow中[root@foundation0 ~]# grep wjx /etc/shadowwjx:$6$ae3uY4p/bFgASqKo$pjbAm7hpnwfsEq3fMdvDUIsRmqRhLMHskZizAWLZbLUTuI3EcAi7yce0KhNrptMVz5a1z12PrVyN3o4LHYGjU/:18363:0:99999:7:::[root@foundation0 ~]# grep tgb /etc/shadowtgb:!!:18363:0:99999:7:::[root@foundation0 ~]# grep tgb /etc/shadowtgb:$6$iCqzFNJ7wLtjp/96$iKAyxBortuzeDEpFChKZavAnM6qzhlbuJEdzrECQeZwK8D5UzwwQh/yhTeBOp29tzAvEtNEozxkAg8ZZxChTS.:18363: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/shadowtgb:$6$iCqzFNJ7wLtjp/96$iKAyxBortuzeDEpFChKZavAnM6qzhlbuJEdzrECQeZwK8D5UzwwQh/yhTeBOp29tzAvEtNEozxkAg8ZZxChTS.:18363:0:99999:7:::[root@foundation0 ~]# passwd -d tgbRemoving password for user tgb.passwd: Success[root@foundation0 ~]# grep tgb /etc/shadowtgb::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/shadowtgb::18363:3:10:5:2::passwd的账号失效⽇期-e,直接加⽤户名,能将该⽤户的密码直接设置过期。[root@foundation0 ~]# passwd -e tgbExpiring password for user tgb.passwd: Success[root@foundation0 ~]# grep tgb /etc/shadowtgb::0:3:10:5:2::上次修改密码时间的字段变成了0,就表示该⽤户下次登录必须修改密码。在windows server当中,创建完⽤户,默认该值就是0。使⽤chage(change age)来修改⽤户的密码信息,相⽐于passwd更灵活的修改所有的密码信息。[root@foundation0 ~]# chage -d 1300 -m 2 -M 20 -W 10 -I4 -E 2021-1-1 tgb[root@foundation0 ~]# grep tgb /etc/shadowtgb:$6$akpmgINkDix4ueTo$8g0O70/JD303RjQ7M9iYggZStkpDpHV9ES/gaipVu5qgORqHDjT61U2664IgPcfNPYR/8wNMG5W0yPpdo0aQ81:1300:2:20:10:4:18628:⼀般来说,针对上次修改密码的时候,要么不修改,要么设置为0,表示让⽤户下次登录必须修改密码。(tgb登录的时候,先输⼊tgb原来的密码,然后设置tgb新的密码,新的密码必须有⼀定的密码强度)如何锁定⽤户的密码[root@foundation0 ~]# passwd -l tgbLocking password for user tgb.passwd: Success[root@foundation0 ~]# grep tgb /etc/shadowtgb:!!$6$akpmgINkDix4ueTo$8g0O70/JD303RjQ7M9iYggZStkpDpHV9ES/gaipVu5qgORqHDjT61U2664IgPcfNPYR/8wNMG5W0yPpdo0aQ81:0:2:20:10:4:18628:当账号被锁定了,除了root之外,任何其它⽤户不能切换到被锁定的账号[root@foundation0 ~]# passwd -u tgbUnlocking password for user tgb.passwd: Success[root@foundation0 ~]# grep tgb /etc/shadowtgb:$6$akpmgINkDix4ueTo$8g0O70/JD303RjQ7M9iYggZStkpDpHV9ES/gaipVu5qgORqHDjT61U2664IgPcfNPYR/8wNMG5W0yPpdo0aQ81:0:2:20:10:4:18628:-l 锁定-u 解锁passwd命令root⽤户可以⽤passwd修改任何⽤户的密码,包括⾃⼰的。普通⽤户只可以⽤passwd命令修改⾃⼰的密码。[tgb@foundation0 ~]$ passwd wjxpasswd: Only root can specify a user name.[tgb@foundation0 ~]$[tgb@foundation0 ~]$ passwd hzzpasswd: Only root can specify a user name.[tgb@foundation0 ~]$[tgb@foundation0 ~]$[tgb@foundation0 ~]$ passwd tgbpasswd: Only root can specify a user name.[tgb@foundation0 ~]$[tgb@foundation0 ~]$ passwdChanging password for user tgb.Current password:New password:普通⽤户想修改⾃⼰的密码,直接passwd就可以的。passwd --stdin 可以让passwd接收标准的输⼊,只能root使⽤⽤户组密码信息[root@foundation0 ~]# echo 123 | passwd --stdin tgbChanging 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/gshadowlsj:!::tgb[root@foundation0 ~]# grep lsj /etc/grouplsj:x:30000:tgb组密码的第⼆列记录的是组密码默认的组和默认的⽤户⼀样没有密码[root@foundation0 ~]# gpasswd lsjChanging the password for group lsjNew Password:Re-enter new password:[root@foundation0 ~]# grep lsj /etc/gshadowlsj:$6$Xw4eSQtu$j5cnpBa/aHXzdub9PQwru5k.9tGw70A6.UOV5ThANF4SWwnU.KVmAz5Hl6xz6JaU1LF4ZcG.nf8neb7lfVIjd0::tgb对于任何⼀个⽤户来说,创建的⽂件,默认的拥有⼈就是该⽤户,默认的所属组是该⽤户的primary group[tgb@foundation0 ~]$ iduid=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 -ltotal 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 -ltotal 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.avinewgrp groupname,能让⼀个⽤户临时的切换到另外⼀个组,那么切换成功之后,该⽤户创建的⽂件就都属于切换后的组。组密码的作⽤是让那些不属于该组的⽤户,可以切换到该组的⼀种⽅式,只要提供正确的组密码,即可切换成功。touch /etc/nologin 除了root之外的所有⽤户都进制登录。rm -rf /etc/nologin 解除⽤户登录限制