一、分类
1.用户和用户组分类
(1)用户分类
- 超级用户(root)——它具有一切权限,只有进行系统维护(例:建立用户)或其他必要情形下才用超级用户登录,以避免系统出现安全问题。---UID:0
- 系统用户(伪用户)——是linux系统正常工作所必需的内建用户---UID:201-999
-
普通用户——是为了让使用者能够使用linux系统资源而建立的---UID:1000-60000
(2)用户组分类
- 基本组(私有组):创建用户时,默认情况下创建一个和用户同名的组
- 附加组(公共组):可以容纳多个用户。
- 系统组:创建系统时,创建一个和系统同名的组。
在linux中,用户账号、密码、用户组信息和用户密码均是放在不同的配置文件中的
文件功能 | 文件名称 |
用户账号文件 | /etc/passwd |
用户密码文件 | /etc/shadow |
用户组账号文件 | /etc/group |
用户组密码文件 | /etx/gshadow |
2.用户及组文件
(1)用户账号文件---/etc/passwd
超级用户:root:x:0:0:root:/root:/bin/bash
账户名称:密码占位符:UID:GID:个人资料:主目录:shell
字段说明:
字段 | 含义 |
账号名称 | 用户登录linux系统使用的名称 |
密码占位符 | 此处只是密码占位符“x” 或“*”。若为“x”,说明密码经过了shadow的保护 |
UID | 用户标识,数值,用来区分不同用户 |
GID | 用户所在基本组的标识 |
个人资料 | 记录用户完整姓名、地址等等个人信息 |
主目录 | 用户的主目录(家目录)(普通用户的主目录,在home目录下面,和用户名同名) |
Shell | 定义用户登录后激活的Shell,默认是Bash Shell 不允许登录:/sbin/nlogin;不允许交互:/bin/false |
(2)用户密码文件---/etc/shadow
账号名称:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
字段说明:
字段 | 含义 |
账号名称 | 登录名 |
加密口令 | 使用SHA-512/SHA-256/MD5算法加密后的密码 |
最后一次修改时间 | 以距离1970年1月1日的天数表示 |
最小时间间隔 | 密码多少天内不能修改。默认为0,表示不限制 |
最大时间间隔 | 密码多少天内必须修改。默认99999,表示不进行限制 |
警告时间 | 提前多少天警告密码将过期,默认7天,0为不提供警告 |
不活动时间 | 密码过期多少天禁用用户 |
失效时间 | 以距离1970年1月1日的天数表示,默认为空,表示永久可用 |
标志 | 保留 |
例:计算用户上次修改密码的日期
[root@server ~]# head -1 /etc/shadow
root:$6$ySIbEt.2ieNLyZRD$XC4ssD7iMSiGzJ.2wxGrH9tKSbwmetdtE75aKp9WtnH.0HiCC7zzD7DpAPIqT5OVO1rJ9RFA6ycE9KJ9Ht9CK/:19286:0:99999:7:::
[root@server ~]# date -u -d "1970-01-01 UTC $((19286 * 86400 )) seconds"
Fri Oct 21 00:00:00 UTC 2022
(3)用户组账号文件---/etc/group
系统中的每一个组,在/etc/group文件中都有一行记录
字段说明:
字段 | 说明 |
Groupname | 组的名字 |
Passwd | 组的加密口令 |
GID | 是系统区分不同组的 |
Userlist | 用“,”分开的用户名。列出的是附加组的成员 |
二、管理
1.用户
(1)创建用户:
- 格式: useradd [选项]
- 常用选项:
选项 | 作用 |
-c(注释信息) | 设定与用户相关的说明信息 |
-d(目录) | 设定用户的家目录 |
-e(YYYY-MM-DD) | 设定用户失效日期,过期不能使用该账号 |
-f(天数) | 指定密码到期后多少天账号被禁用。0--到期立即禁用;-1--过期不被禁用 |
-g(组名或GID号) | 为用户指定所属的基本组,该组在指定时必须已存在 |
-M | 不创建用户家目录 |
-N | 不创建与用户名同名的基本组 |
-p(密码) | 指定用户的登录密码 |
-s(shell) | 指定用户登陆使用的Shell,默认bash |
-u(用户号) | 设定账号UID,默认已有用户的最大UID加1。若有-o选项,则可重复使用其它用户标识号 |
<1> 示例1:创建用户user1
[root@server ~]# useradd user1
[root@server ~]# grep user1 /etc/passwd---在passwd中查看含有user1的行
user1:x:1001:1001::/home/user1:/bin/bash
[root@server ~]# grep user1 /etc/group---在group中查看含有user1的行
user1:x:1001:
<2> 示例2:创建用户user2,uid为1111
[root@server ~]# useradd -u 1111 user2
[root@server ~]# grep user2 /etc/group
user2:x:1111:
[root@server ~]# grep user2 /etc/passwd
user2:x:1111:1111::/home/user2:/bin/bash
<3> 示例3:创建用户mysql,说明信息‘mysql server’,系统账号,可以登录
[root@server ~]# useradd -c 'mysql server' -r mysql
[root@server ~]# grep mysql /etc/passwd
mysql:x:977:975:mysql server:/home/mysql:/bin/bash
<4> 示例4:创建用户li4,指定用户的家目录为/usr/li4
[root@server ~]# useradd -d /usr/li4 li4
[root@server ~]# grep li4 /etc/passwd
li4:x:1112:1112::/usr/li4:/bin/bash
<5> 示例5:创建用户,为其设置密码
[root@server ~]# openssl passwd -1 -salt `openssl rand -hex 8 ` '123456'---将123456设置成为随机数
$1$efe34e21$k.sLYXp7oZ/W7IA2aFNXm1
[root@server ~]# useradd -p '$1$efe34e21$k.sLYXp7oZ/W7IA2aFNXm1' user4—将设置为的随机数设置为密码
可用123456作为密码登录
<6> 示例6:新建用户user5,指定用户附加组是user1
[root@server ~]# useradd -G user1 user5
[root@server ~]# grep user1 /etc/group
user1:x:1001:user5
(2)修改用户
- 格式:usermod [选项] username
- 常用选项:-c,-d,-m,-g,-G,-s,-u,-o这些选项的意义与useradd命令中的选项意义相同
选项 | 作用 |
-l | 更改账户的名称,必须在该用户未登录的情况下才能使用 |
-L | 锁定账户,令其不能登录使用 |
-U | 解锁用户账户 |
<1> 示例1:修改用户user1的失效时间为2022.11.07
[root@server ~]# usermod -e '2022-11-27' user1
[root@server ~]# grep user1 /etc/shadow
<2> 示例2:修改用户li4为lis
[root@server ~]# usermod -l lis li4
<3> 示例3:锁定用户user4
[root@server ~]# usermod -L user4(锁定当前用户)
[root@server ~]# passwd -S user4---查看当前user4的状态
user4 LK 2022-11-06 0 99999 7 -1 (Password locked.)
<4> 示例4:解锁用户user4
[root@server ~]# usermod -U user4(解锁当前用户)
[root@server ~]# passwd -S user4
user4 PS 2022-11-06 0 99999 7 -1 (Password set, MD5 crypt.)
(3)删除用户
- 格式:userdel [-r] 账户名
- 常用选项:-r——在删除用户该账户的同时,一并删除该账户对应的主目录
<1> 示例:删除用户user4
[root@server ~]# userdel -r user4---连同用户的家目录以及邮件队列一起删除
(4)用户设置密码(linux账户必须设置密码,才能登录系统)
- 格式:passwd [账户名]
- 常用选项
选项 | 功能 |
-l | 锁定用户 |
-u | 解锁用户 |
-S | 显示用户当前状态信息 |
-i | 口令过期多少天后停用账户 |
-n | 指定口令最短存活期 |
<1> 示例1:设置密码
法1:
[root@server ~]# passwd user1
法2:利用管道实现,将前面命令的标准输出作为后面命令的标准输入
[root@server ~]# echo 2 | passwd --stdin user1
法3:
[root@server ~]# echo "user1:3" | chpasswd
<2> 强制用户下次登录修改密码
[root@server ~]# chage -d 0 user1---强制user1下次登录修改密码
2.用户组
(1)创建用户组
- 格式:groupadd [-r] 用户组名称
- 常用选项:
选项 | 功能 |
-g GID | 制定新用户组的标识号(GID),默认是已有最大GID值加1 |
-r | 建立一个系统组账号,与-g不同时使用时,分配一个1-999的GID |
<1> 示例1:创建组hr
[root@server ~]# groupadd hr
<2> 示例2:创建组IT,gid为1234
[root@server ~]# groupadd -g 1234 IT
(2)修改用户组属性
- 命令格式: groupmod 选项 用户组
- 常用选项:
选项 | 功能 |
-g GID | 为用户组指定新的组标识号 |
-n | 将用户组的名字改为新名字,修改用户组的名称和用户组的GID值 |
<1> 示例1:修改用户组hr为HR
[root@server ~]# groupmod -n HR hr
(3)管理组成员(root用户和组管理员才可使用)
-
格式: gpasswd [选项] [用户] [组]
- 常用选项
选项 | 功能 |
-a | 将用户加入组 |
-d | 将用户移出组 |
-M | 同时添加多个用户 |
-A | 给组指派管理员 |
<1> 示例1:向组内添加成员:将user1添加到HR组
法1:
[root@server ~]# usermod -a user1 -G HR
[root@server ~]# grep HR /etc/group
HR:x:1115:user1
法2:
[root@server ~]# gpasswd -d user1 HR---将user1从HR组中移除
Removing user user1 from group HR
[root@server ~]# gpasswd -a user1 HR---将user1添加到HR组中
Adding user user1 to group HR
<2> 示例2:将user2和user1都加入IT组
[root@server ~]# gpasswd -M user2,user1 IT
[root@server ~]# grep IT /etc/group
IT:x:1234:user2,user1
<3> 示例3:设置user2为IT组管理员
[root@server ~]# gpasswd -A user2 IT
(4)删除组账户
- 格式: groupdel 用户组名
<1> 示例:删除用户组IT、HR
[root@server ~]# groupdel IT
[root@server ~]# groupdel HR
附:信息显示
命令格式 | 作用 |
uesrs | w | who | 显示当前用户信息(三条命令) |
id [用户名] | 显示当前用户或指定用户的ID,以及所属组ID |
groups [用户名] | 显示当前用户或指定用户所属组账号的信息 |