用户和用户组管理
用户和组的分类
用户分类
在linux中,用户分为三类:
1、超级用户:它是用于管理操作系统,权限非常高,一般在创建用户等条件下才会使用,它的编号为0。简单来说,编号为0的用户就是超级用户。
2、系统用户:它是用于系统能够正常运行时所需要的用户,这类用户不是用来登录的。它的编号在1-999之间。
3、普通用户:它是用于能够让使用者使用linux系统功能,大多数是此类用户。它的编号在1000-60000
之间。
用户组分类
在linux中,用户组分为两类:
1、 基本组(私有组),它是建立用户时,如果没有指定用户所属组,则系统自动建立一个与用户名相同名称的组名,这个组就是基本组。
2、 附加组(公有组),它可以容纳多个用户。
注意:一个用户只能有一个基本组,但是可以有零到多个附加组.
用户和组的配置文件
在 Linux 中,用户名、密码、用户组和用户组密码都是在保存在不同的配置文件中。
/etc/passwd:用于保存用户账号文件,这个文件用来存储用户的信息。不包含密码信息,在这个文件中,每一行记录了一个用户信息,以英文冒号来进行分隔的,共7个部分组成,这7个部分的意义说明如下:
root : x : 0 : 0 : root : /root :
/bin/bash
redhat : x : 1000 : 1000 : redhat : /home/redhat :
/bin/bash
1 2 3 4 5 6 7
1 用户名
2 用户登录密码的占位符,如果为x表示有密码,如果为空或*表示没有密码
3 用户的 ID,即 uid
4 用户所属组 ID,即 gid
5 用户的个人信息,比如用户的完整名称、地址、办公电话、家庭住等个人信息
6 用户的家日录
7 用户的默认登录所能使用的 she11脚本
/etc/shadow:用户保存用户的密码文件,在这个文件中,每一行记录了一个用户密码信息,以英文冒号来进行分隔的,共9个部分组成,这9个部分的意义说明如下:
root:$6$SFwIxMQOM/5KTecz$WboODTBf3XEZwR7Ug5zN2BNaFBkZM.RkydCb5cwn4YSz44oPbpgNl96
KsykIQWJILQ27vTq/ETqV6EEBZ5h
qt/::0:99999:7:::
1 用户名,它与 /etc/passwd文件中第一个字段相同
2 用户的密码,它包括算法、盐和密文。在这个字段中 $id$表示的就是算法(id为1表示 md5加密,id为5
长示sha256加密,id为6表示sha512加密),如果这个字段的值为 !!,则表示账号已被锁定不能登录,如果
这个字段为*号表示该用户无须登录
3 最后一次修改密码时间,单位为天,是从1970年1月1日开始到创建账号时的天数差
4 最小时间间隔,即经过多少天后才可以再次修改密码,单位是天,如果值为0,则表示没有限制
5 最大时间问隔,密码经过多少天后必须修改,否则不能登录。默认值为 999999,单位是天。
6 警告时间,在密码失效之前多少天会有提示信息,默认值为7天。如果值为0表示不限制
7 不活动时间,密码过期后多少天就禁用该账号,0 表示过期后立即失效;表示密码永远不过期;正数表示往后
宽限多少天。
8 密码失效时间,以距离1970年1月1日的天数来表示,如果值为空,表示永久可用
9 保留字段,目前暂无使用
/etc/group:用于保存用户组的文件,在这个文件中,每一行记录了一个组信息,以英文冒号来进行分隔的,共4个部分组成,这4个部分的意义说明如下:
root : x : 0 :
1 2 3 4
1 表示组名称
2 表示组的密码占位符,真正的密码保存在/ete/gshadow文件
3 表示组的 id 值
4 表示这个组的用户列表,以英文逗号分隔,如果为空表示没有附加用户
/etc/gshadow:用于保存用户组密码的文件,在这个文件中,每一行记录了一个组密码信息,以英文冒号来进行分隔的,共4个部分组成,这4个部分的意义说明如下:
redhat : ! : :
1 2 3 4
1 组名称,与 /etc/group 文件中第一列相同
2 组密码,如果值为!表示没有密码
3 组的管理员,很少使用
4 组中附加用户,和/etc/group中第4列相同
用户管理
添加用户
useradd : 创建一个新的用户
常用选项:
选项 | 功能 |
-g | 指定基本组 |
-G | 指定附加组 |
示例:
[root@localhost ~]# useradd xiaoxiao #这样添加完用户之后会在/var/mail 目录下生成一个同
名的文件和在/home目录下生成一个同名的目录,并且生成一个同名的组为基本组
[root@localhost ~]# useradd xiaobai -g xiaoxiao #创建xiaobai用户的时候指定基本组为
xiaoxiao
[root@localhost ~]# id xiaobai
uid=1003(xiaobai) gid=1002(xiaoxiao) groups=1002(xiaoxiao)
[root@localhost ~]# useradd xiaolv -g xiaoxiao -G xiaoxiao #创建xiaolv用户的时候指定
基本组为xiaoxiao,附加组为xiaoxiao
[root@localhost ~]# id xiaolv
uid=1004(xiaolv) gid=1002(xiaoxiao) groups=1002(xiaoxiao)
[root@localhost ~]#
# 用户创建完了之后,会在/etc/passwd和/etc/shadow和/etc/group 和/etc/gshadow文件中的最后
一行添加信息。
查看用户
id : 打印真实和有效的用户及组ID。
示例:
[root@localhost ~]# id xiaoxiao
uid=1001(xiaoxiao) gid=1001(xiaoxiao) groups=1001(xiaoxiao) #uid是用户,gid是基本
组,groups是有哪些组
[root@localhost ~]# grep xiaoxiao /etc/passwd #过滤/etc/passwd文件中有xiaoxiao的
一行,以此查看用户是否创建成功。
xiaoxiao:x:1001:1001::/home/xiaoxiao:/bin/bash
修改密码
passwd : 更新用户的密码
#交互式的修改用户密码
[root@localhost ~]# passwd #直接回车或者passwd root 是修改root用户的密码
[root@localhost ~]# passwd xiaoxiao #修改xiaoxiao用户的密码。
#非交互式的修改密码
[root@localhost ~]# echo 123 | passwd --stdin xiaoxiao
Changing password for user xiaoxiao.
passwd: all authentication tokens updated successfully.
修改用户
usermod : 修改用户账户
常用选项:
选项 | 功能 |
-l | 修改用户名 |
-g | 修改用户的基本组 |
-G | 修改用户的附加组 |
-a | 将用户添加到附加组中 |
示例:
[root@localhost ~]# usermod -l xiaoxiao1 xiaoxiao #将xiaoxiao改名为xiaoxiao1
[root@localhost ~]# usermod -g group1 xiaolan #将xiaolan的基本组改为group1
[root@localhost ~]# usermod -G group1 xiaolan #将xiaolan用户的附加组修改为group1
[root@localhost ~]# usermod -G "" xiaolan #删除所有xiaolan用户的附加组
删除用户
userdel : 删除一个用户账户及其相关文件。删除用户的同时删除同名的基本组,如果基本组和用户名不同名,该组不会被删除。如果同名的组不是用户的基本组。同名的组不会被删除。看下面的示例
[root@localhost ~]# userdel xiaoxiao1 #这样删除不会相关的配置文件
[root@localhost ~]# useradd xiaoming
[root@localhost ~]# userdel -r xiaoming # 删除xiaoming用户的同时删除家目录和邮箱目
录
================================================================================
====
#示例1:
[root@xxx ~]# groupadd xiaoxiao #添加xiaoxiao组
[root@xxx ~]# groupadd group1 #添加group1组
[root@xxx ~]# useradd xiaoxiao -g group1 #添加xiaoxiao用户的同时它的指定基本组为
group1
[root@xxx ~]# id xiaoxiao #此时xiaoxiao用户的基本组为group1
uid=1006(xiaoxiao) gid=1007(group1) groups=1007(group1)
[root@xxx ~]# grep -e xiaoxiao -e group1 /etc/group #查看文件,确实有xiaoxiao和
group1组。-e 指定多个关键字
xiaoxiao:x:1006:
group1:x:1007:
[root@xxx ~]# userdel -r xiaoxiao #userdel删除用户会删同名的基本组,现在xiaoxiao用户的
基本组不是xiaoxiao,
userdel: group xiaoxiao not removed because it is not the primary group of user
xiaoxiao.
[root@xxx ~]# id xiaoxiao #所以xiaoxiao用户删除了,但是xiaoxiao和group1组还在
id: ‘xiaoxiao’: no such user
[root@xxx ~]# grep -e xiaoxiao -e group1 /etc/group
xiaoxiao:x:1006:
group1:x:1007:
组的管理
添加用户组
groupadd : 添加用户组
[root@localhost ~]# groupadd xiaolan
查看用户组
[root@localhost ~]# grep xiaolan /etc/group
修改用户组
groupmod : 修改用户组信息
[root@localhost ~]# groupmod -n xiaolan1 xiaolan #将xiaolan组名改为xiaolan1
[root@localhost ~]# grep xiaolan1 /etc/group
xiaolan1:x:1001:
删除用户组
groupdel : 删除用户组信息
[root@localhost ~]# groupdel xiaolan1