用户组管理
用户概念及作用
用户:指的是Linux操作系统中用于管理系统或者服务的人
问:管理系统到底在管理什么?
答:Linux下一切皆文件,所以用户管理的是相应的文件
问:如何管理文件呢?
答:
-
文件基本管理,比如文件的创建、删除、复制、查找、打包压缩等;文件的权限增加、减少等;
-
文件高级管理,比如程序文件的安装、卸载、配置等。终极目的是对外提供稳定的服务。
用户的分类
超级用户
-
超级用户,也叫管理员,root。该用户(root)具有所有权限,UID=0并且绝对只能是0。
系统用户
-
系统用户,也叫程序用户。一般都是由程序创建,用于程序或者服务运行时候的身份。
-
默认不允许登录系统。1<=UID<=499
-
比如后面要学的web服务的管理用户apache,文件共享ftp服务的管理用户ftp等
注意:Centos7/RHEL8中,系统用户UID范围:1<=UID<=999
普通用户
-
普通用户,一般都是由管理员创建,用于对系统进行有限的管理维护操作。
-
默认可以登录系统。500<=UID<=60000
注意:Centos7/RHEL8中,普通用户UID范围:1000<=UID<=60000 特别说明:
-
用户指的是操作系统上管理系统或服务的人,是人,就有相关的属性信息
-
用户的属性信息包括但不限于,如:家目录、唯一身份标识(UID)、所属组(GID)等
-
今天我们讨论的用户指的是普通用户,即由管理员创建的用户
用户的基本管理
创建用户(useradd)
(1) 基本语法和选项
useradd [选项] 用户名 常用选项: -u 指定用户uid,唯一标识,必须唯一 -g 指定用户的默认组(主组) -G 指定用户附加组(一个用户可以加入多个组,但是默认组只有一个) -d 指定用户家目录(每个用户都有一个自己的家,并且默认在/home/xxx) -s 指定用户默认shell 查看系统支持的shell(命令解释器) [root@localhost ~]# cat /etc/shells /bin/sh 软连接文件 /bin/bash 系统默认的解释器 /usr/bin/sh 软连接文件 /usr/bin/bash 系统默认的解释器 其他shell: /sbin/nologin 不能登录操作系统,也叫非交互式shell /bin/dash /bin/tcsh /bin/csh
(2) 举例说明
① 创建默认用户
#创建一个用户stu1 [root@localhost ~]# useradd stu1 #查看用户信息 [root@localhost ~]# id stu1 uid=1001(stu1) gid=1001(stu1) 组=1001(stu1) 注意:当创建一个默认用户时,系统会给该用户以下东西,以stu1为例说明 1)用户的UID(唯一标识) 1001(系统自动分配) 2)用户的默认组(主组) stu1组,默认跟该用户的用户名一致;组ID(1001),默认和用户UID一致 3)用户的家目录 /home/stu1 4)拷贝相应的文件到用户的家里 #切换用户 [root@localhost ~]# su stu1 #列出所有文件 [stu1@localhost ~]$ ls -a . .. .bash_logout .bash_profile .bashrc .gnome2 .mozilla
② 根据需求创建用户
#1. 创建用户stu2,但是不能登录操作系统 #注意:-s 指定用户的默认shell,/sbin/nologin表示不能登录系统,也叫非交互 [root@localhost ~]# useradd -s /sbin/nologin stu2 #验证: [root@localhost ~]# id stu2 uid=1002(stu2) gid=1002(stu2) 组=1002(stu2) #切换用户失败,说明该用户不能登录系统 [root@localhost ~]# su stu2 This account is currently not available. #2. 创建用户stu2,同时指定该用户的家目录为/rhome/stu2 #注意:-d 指定用户的家目录,前提该用户家目录的上一级目录/rhome必须存在 [root@localhost ~]# mkdir /rhome [root@localhost ~]# useradd -d /rhome/stu2 stu2 [root@localhost ~]# id stu2 uid=1002(stu2) gid=1002(stu2) 组=1002(stu2) 说明:指定stu2家目录/rhome/stu2时,只需要/rhome存在即可,系统会默认在/rhome下创建stu2目录
用户密码设置(passwd)
passwd 用户名 表示给指定用户修改密码 passwd 直接回车 表示给当前用户修改密码 [root@localhost ~]# passwd stu1 Changing password for user stu1. New password: 密码不显示 BAD PASSWORD: it is WAY too short BAD PASSWORD: is too simple Retype new password: 密码不显示 passwd: all authentication tokens updated successfully. 说明: 1.管理员root可以给任何用户修改密码 2.普通用户可以自己给自己修改密码,但是密码复杂度要符合规范 [root@localhost ~]# echo 123|passwd --stdin stu2 更改用户 stu2 的密码 。 passwd:所有的身份验证令牌已经成功更新。 说明:使用这种方法不用交互可以直接设置成功,一般用于脚本中。
① 保存用户信息的文件
1. 用户信息保存文件/etc/passwd 了解相关配置文件内容,可以通过求man文档解决,即 man passwd 以冒号:分割为7列,如下: account --> stu1 用户名称 password --> x 密码,将密码单独存放在另外一个文件中 UID --> 501 用户ID GID --> 501 组ID GECOS --> 用户自定义,描述说明 directory --> /home/stu1 用户的家目录 shell --> /bin/bash用户的默认shell,其中/sbin/nologin表示非交互,不能登录系统 2. 用户密码信息保存文件/etc/shadow 了解相关配置文件内容,可以通过求man文档解决,即 man shadow 以冒号:分隔为9列,如下: login name 登录的用户名 encrypted password 加密后的密码;!!表示没有设置密码 date of last password change 最后一次更改密码的天数(距离1970年的1月1日到现在的天数) minimum password age 密码的最小生存周期;0表示可以立刻修改密码;如果是3,则表示3天后才能更改密码 maximum password age 密码的最大生存周期;如果30表示每隔30天需要更新一次密码 password warning period 密码过期前几天发出警告;7表示过期前7天开始警告 password inactivity period 密码的宽限期;如果3表示允许密码过期3天,3天内还能登录系统,但是要求修改密码。3天后(密码过期3天后账户被封锁, 需要联系管理员) account expiration date 账户过期的时间,账户过期的用户不能登录;密码过期用户不能用原来的密码登录。以1970年1月1日算起。 reserved field 保留
② 更改用户的账号信息(chage)
chage --help -d 修改用户最后一次更改密码的时间 -m 修改密码的最小存活期(几天后才能修改密码) -M 修改密码的最大存活期(每隔多少天更新一次密码) -W 修改密码过期前警告(过期前几天发出警告) -I 修改允许密码过期几天 -E 修改账户过期时间 -l 列出账户的信息 举例说明: 查看用户账号的相关信息命令:chage -l stu1 [root@localhost ~]# chage -l stu1 Last password change : Mar 04, 2019 Password expires : never Password inactive : never Account expires : never Minimum number of days between password change : 0 Maximum number of days between password change : 99999 Number of days of warning before password expires : 7 修改用户账号的过期时间:2019-03-10过期 [root@localhost ~]# chage -E '2019-03-10' stu1 [root@localhost ~]# chage -l stu1 Last password change : Mar 04, 2019 Password expires : never Password inactive : never Account expires : Mar 10, 2019 Minimum number of days between password change : 0 Maximum number of days between password change : 99999 Number of days of warning before password expires : 7 修改用户账号的过期时间为10天以后: [root@localhost ~]# chage -E $(date +%F -d '+10days') stu1
修改用户信息(usermod)
① 基本语法选项
usermod [选项] 用户名 常用选项: -u 指定用户uid,唯一标识,必须唯一 -g 指定用户的默认组(主组) -G 指定用户附加组(一个用户可以加入多个组,但是默认组只有一个) -d 指定用户家目录(每个用户都有一个自己的家,并且默认在/home/xxx) -s 指定用户默认shell -m 移动用户家目录,和-d一起使用
② 举例说明
1. 修改stu3用户的UID为1100 [root@localhost ~]# usermod -u 1100 stu3 [root@localhost ~]# tail -5 /etc/passwd yunwei:x:1001:1001::/home/yunwei:/sbin/nologin stu1:x:1002:1002::/home/stu1:/bin/bash stu2:x:1003:1003::/rhome/stu2:/bin/bash stu3:x:1100:1004::/rhome/stu3:/bin/bash stu4:x:1005:1005::/home/stu4:/sbin/nologin 2.修改stu4用户的默认shell为可登录系统 [root@localhost ~]# su stu4 This account is currently not available. [root@localhost ~]# usermod -s /bin/sh stu4 [root@localhost ~]# tail -5 /etc/passwd yunwei:x:1001:1001::/home/yunwei:/sbin/nologin stu1:x:1002:1002::/home/stu1:/bin/bash stu2:x:1003:1003::/rhome/stu2:/bin/bash stu3:x:1100:1004::/rhome/stu3:/bin/bash stu4:x:1005:1005::/home/stu4:/bin/sh 3.修改stu5用户的家目录 [root@localhost ~]# useradd -d /rhome/stu5 stu5 [root@localhost ~]# usermod -md /home/stu5 stu5
删除用户(userdel)
① 基本语法选项
userdel [选项] 用户名 常用选项: -r 删除用户并且移除其家目录和邮箱 -f 强制删除正在登录的用户
② 举例说明
说明: 创建完用户后,家目录默认在/home/用户名下;用户的邮箱在/var/spool/mail/用户名 1. 删除stu4用户以及家目录 [root@localhost ~]# userdel -r stu4 [root@localhost ~]# id stu4 id: stu4: No such user 2.强制删除一个正在登录的用户 [root@localhost ~]# userdel -r stu5 userdel: user stu5 is currently used by process 7998 [root@localhost ~]# id stu5 uid=1101(stu5) gid=1101(stu5) 组=1101(stu5) [root@localhost ~]# userdel -rf stu5 userdel: user stu5 is currently used by process 7998 [root@localhost ~]# id stu5 id: “stu5”:无此用户 3. 只删除用户user02,不删除其家目录 [root@localhost ~]# userdel stu1
小结
-
创建用户(useradd)
-
useradd 用户名——>家目录/home/用户名、邮箱、UID、默认组(GID)[用户主组]
-
useradd [选项] 用户名字——>常用选项:-d/-s/-u/-g/-G
-
-
设置用户密码(passwd)
-
passwd 用户名——>给指定的用户(管理员可以给任何人设置任何密码
-
echo 密码|passwd --stdin 用户名——>非交互式(用于脚本中)
-
用户基本信息和用户密码信息保存文件——>/etc/passwd和/etc/shadow
-
扩展chage命令——>用来修改用户密码信息(账号过期时间、密码最小生存周期等)
-
-
修改用户信息(usermod)
-
usermod [选项] 用户名——>usermod -md 新家 用户名
-
-
删除用户(userdel)
-
userdel 用户名——>只删除用户,不删除用户家目录、邮箱等信息
-
userdel -r 用户名——>删除用户以及用户其他信息
-
userdel -f 用户名——>强制删除用户(删除正在登录的用户)
-
组管理
组和用户的关系(理解)
核心:组的目的是为了方便管理用户
-
用户是操作系统上管理维护系统或服务的人组是用户的一个属性信息
-
任何一个用户默认都会有一个主组(默认组)
-
一个用户除了主组也可以有多个其他组(附加组)
一问:用户的主组和附加组到底有啥关系呢?
答:用户的主组和附加组半毛钱关系都木有
二问:那要这个主组或者附加组有啥用呢?
答:肯定是有用的,组的目的是方便管理用户,用户的目的是管理操作文件,文件就有权限这个属性。
-
用户要操作一些文件,文件是由用户创建,不同用户创建的文件的属性信息也就不一样
-
文件的属性都有啥呢?比如,文件的创建者,文件属于哪个组,文件大小,文件时间等
-
其中,不同用户所创建的文件的属组就是该用户的主组(默认组)
-
A用户附加组也有可能是其他用户的主组,道理同上(权限章节再细细体会组的作用)
组的管理
创建组(groupadd)
① 基本语法
groupadd [选项] 组名 常用选项: -g 指定组的GID(编号),默认唯一
② 举例说明
1.创建一个组admin [root@localhost ~]# groupadd admin 2.查看组信息 [root@localhost ~]# tail -1 /etc/group admin:x:1005: 说明:关于/etc/group配置文件说明,可以man 5 group找帮助 3.创建一个组sysadmin,指定组的GID为1111 [root@localhost ~]# groupadd -g 1001 sysadmin [root@localhost ~]# tail -2 /etc/group admin:x:1005: sysadmin:x:1111
删除组(groupdel)
① 基本语法
groupdel 组名
② 举例说明
[root@localhost ~]# groupdel admin [root@localhost ~]# groupdel stu2 groupdel: cannot remove the primary group of user 'stu2' 注意:以上信息说明不能删除属于其他用户的主组
组成员管理(gpasswd)
① 基本语法
gpasswd [选项] 组名 常见选项: -a 添加用户到组 -d 从组中删除成员 -A 指定管理员 -M 指定组成员,可以批量添加用户到组中 -r 删除密码 gpasswd 组名 给组设置密码
② 举例说明
1. 创建3个用户user01~user03 2. 将user01添加到sysadmin组里 方法:1:指定user01用户的附加组为sysadmin(站在用户角度) # usermod -G sysadmin user01 方法2:使用gpasswd命令添加用户到组里 # gpasswd -a user01 sysadmin -a选项:表示往组里追加用户 # gpasswd -M user02,user03 sysadmin 设置sysadmin组成员为user02,user03 -M选项:表示覆盖设置组成员(会覆盖原来的成员列表) #删除组成员 #将user03用户从组sysadmin里移除 # gpasswd -d user03 sysadmin
课堂练习
-
创建一个admin组,组id为900
-
创建一个用户tom,并且admin组作为tom用户的附加组(要求在建立用户的时候就完成),密码为123
-
创建一个用户jack,要求在建立用户之后使用gpasswd把jack加入到该组,密码为123
-
给admin组设定一个默认密码为123 (gpasswd命令)
-
把tom用户设定为admin组的组管理员(gpasswd命令)
小结
1、创建组(groupadd)
-
组的信息保存文件——>/etc/group和/etc/gshadow
2、删除组(groupdel)
-
什么样的组不能删除?——>不能删除属于其他用户的主组
3、管理组成员(gpasswd)
1) 添加用户到组里——>gpasswd -a user1 组名 或 gpasswd -M user1,user2,... 组名
2) 从组里移除用户——>gpasswd -d user1 组名
总结
-
能够根据需求创建普通用户
-
能够根据需求修改用户基本信息
-
能够将用户加入到指定组里
-
能够使用两种方法给用户设置密码
-
能够删除用户
-
能够创建并删除组
-
能够使用vim编辑器修改并保存文件
任务
任务1
-
创建一个公司zking,3个部门财务(cw),人事(rs),市场(sc)
说明:实际是创建4个组,分别为zking、cw、rs、sc,没有包含的关系
-
每个部门创建2个用户,如 cw01 cw02,rs01,rs02,sc01,sc02;boss01管理公司所有部门; 说明:boss01管理所有部门说明,boss01的附加组为财务、人事和市场部门
-
所有用户账号有效期3个月<90天>,第一次登录强制修改密码,每隔15天更新一次密码;默认密码为123456
任务2
-
添加3个用户,用户harry,natasha,sarsh,要求harry,natasha用户的附加组为admin组,sarsh用户点登录shell为非交互式shell。密码均为redhat
-
修改harry用户的家目录为/home/zking/redhat/harry
-
修改natasha,sarsh用户的主组为zking,并且可以登录系统