一:知识点
1. /etc/passwd 文件解读
-
作用
文件是一个在Linux操作系统中用于记录和管理用户账户信息的重要文本文件。系统管理员通过修改这个文件来完成对用户的管理工作,该文件对所有用户都是可读的。
注:该文件虽然名字为passwd,但用户的密码并没有放在其中,在该文件中密码信息只是用 X 代替,实际的密码放在shadow文件中
- 文件解读
- 普通用户
lisen:x:1000:1000:lisen:/home/lisen:/bin/bash
# 解读:
用户名:lisen
密码:x 此处只是占位符
用户ID(UID):1000
组ID(GID):1000
全名/描述:lisen
主目录:/home/lisen
登录Shell:/bin/bash
- 系统用户
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
# 解读
用户名(login name):mail,这是用户的登录名,用于识别用户。
加密后的密码(password):用户密码,X为占位符
用户ID(UID):8,系统内部使用的用户识别数字。
组ID(GID):12,用户的主组ID。
用户全名:mail,用户的全名或其他描述信息。
主目录:/var/spool/mail,用户登录后所在的主目录。
登录shell:/sbin/nologin,定义用户登录后启动的shell程序。
/sbin/nologin表示该用户不能登录系统。
- 超级用户root
root:x:0:0:root:/root:/bin/bash
# 解读
用户名: root
密码: x 占位符
用户ID: 0 linux系统规定root的uid为0
组ID:0 linux系统规定root的GID为0
用户全名:root
主目录(家目录):/root
登录shell:/bin/bash
2. /etc/shadow 文件解读
- 作用
/etc/shadow文件是Linux系统中用于存储用户密码信息的重要文件,通常被称为“影子文件”,
在早期的Linux系统中,用户的密码信息存储在/etc/passwd文件中,由于该文件可以被所有用户读取,因此存在安全隐患。为了提高系统的安全性,Linux系统将密码信息从/etc/passwd中分离出来,单独存放在/etc/shadow文件中,并且只有root用户有权限访问该文件
- 文件解读
root:$6$9w5Td6lg
$bgpsy3olsq9WwWvS5Sst2W3ZiJpuCGDY.4w4MRk3ob/i85fl38RH15wzVoom ff9isV1 PzdcXmixzhnMVhMxbvO:15775:0:99999:7:::
bin:*:15513:0:99999:7:::
格式解读:
用户名:加密密码:最后一次修改时间:最小修改时间间隔:密码有效期:密码需要变更前的警告天数:密码过期后的宽限时间:账号失效时间:保留字段
- 用户名:root 与 /etc/passwd 中的用户名一致
- 密码:$bgpsy3olsq9WwW.... 到 :为止,不能修改,否则将失效,也可以有意修改达到禁止用户登录的目的
- 最后一次修改时间:15775 从1970-01-01到当前的天数,date -d "1970-01-01 15775 days" 可以计算出具体日期
- 最小修改时间间隔:0 该字段规定了从第 3 字段(最后一次修改密码的日期)起,多长时间之内不能修改密码,如果是 0,则密码可以随时修改,如果是7则密码自最后修改事件7天内不能修改
- 密码有效期:为了强制要求用户变更密码,这个字段可以指定距离第 3 字段(最后一次更改密码)多长时间内需要再次变更密码,否则该账户密码进行过期阶段。默认值为 99999,也就是 273 年,可认为是永久生效。
- 密码需要变更前的警告天数:当账户密码有效期快到时,系统会发出警告信息给此账户,提醒用户 "再过 n 天你的密码就要过期了,请尽快重新设置你的密码!"。该字段的默认值是 7,也就是说,距离密码有效期的第 7 天开始,每次登录系统都会向该账户发出 "修改密码" 的警告信息
- 密码过期后的宽限天数:也称为“口令失效日”,简单理解就是,在密码过期后,用户如果还是没有修改密码,则在此字段规定的宽限天数内,用户还是可以登录系统的;如果过了宽限天数,系统将不再让此账户登陆,也不会提示账户过期,是完全禁用。
- 账号失效时间:同第 3 个字段一样,使用自 1970 年 1 月 1 日以来的总天数作为账户的失效时间。该字段表示,账号在此字段规定的时间之外,不论你的密码是否过期,都将无法使用!该字段通常被使用在具有收费服务的系统中。
- 保留:这个字段目前没有使用,等待新功能的加入
3. /etc/group 文件解读
- 作用
/etc/group
是一个在 Unix 和类 Unix 系统(如 Linux)中存储用户组信息的文件。它包含了系统中所有用户组的列表,每个用户组都有一个唯一的组名、组密码(通常为空)、组ID以及属于该组的用户列表。
- 文件解读
lisen:x:1000:lisen
- 组名(Group Name):用户组的名称。
- 密码(Password):通常为空或包含加密后的密码。在某些系统中,可能使用
x
表示密码已被加密,但在现代系统中,密码通常被存储在/etc/gshadow
文件中。 - GID(Group ID):用户组的唯一标识符,用于系统内部引用。
- 用户列表(User List):属于该组的用户列表,以逗号分隔。
4. /etc/gshadow 文件解读
- 作用
组用户信息存储在 /etc/group 文件中,而将组用户的密码信息存储在 /etc/gshadow 文件中
- 文件解读
lisen:!!::lisen
组名:加密密码:组管理员:组附加用户列表
- 组名: 同 /etc/group 文件中的组名相对应。
- 组密码: 对于大多数用户来说,通常不设置组密码,因此该字段常为空,但有时为 "!",指的是该群组没有组密码,也不设有群组管理员
- 组管理员:从系统管理员的角度来说,该文件最大的功能就是创建群组管理员。
- 组中的附加用户:该字段显示这个用户组中有哪些附加用户,和 /etc/group 文件中附加组显示内容相同
组管理员的作用:考虑到 Linux 系统中账号太多,而超级管理员 root 可能比较忙碌,因此当有用户想要加入某群组时,root 或许不能及时作出回应。这种情况下,如果有群组管理员,那么他就能将用户加入自己管理的群组中,也就免去麻烦 root 了, 该功能很少用。
二:命令
(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)用户密码设置
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:所有的身份验证令牌已经成功更新。
说明:使用这种方法不用交互可以直接设置成功,一般用于脚本中
(3)修改用户信息
usermod [选项] 用户名
常用选项:
-u 指定用户uid,唯一标识,必须唯一
-g 指定用户的默认组(主组)
-G 指定用户附加组(一个用户可以加入多个组,但是默认组只有一个)
-d 指定用户家目录(每个用户都有一个自己的家,并且默认在/home/xxx)
-s 指定用户默认shell
-m 移动用户家目录,和-d一起使用
1.删除用户
userdel [选项] 用户名
常用选项:
-r 删除用户并且移除其家目录和邮箱
-f 强制删除正在登录的用户
(4)创建组
groupadd [选项] 组名
常用选项:
-g 指定组的GID(编号),默认唯一
1.删除组
groupdel 组名
2.组成员管理
gpasswd [选项] 组名
常见选项:
-a 添加用户到组
-d 从组中删除成员
-A 指定管理员
-M 指定组成员,可以批量添加用户到组中
-r 删除密码
gpasswd 组名 给组设置密码
三:组和用户的关系(理解)
核心:组的目的是为了方便管理用户
-
用户是操作系统上管理维护系统或服务的人组是用户的一个属性信息
-
任何一个用户默认都会有一个主组(默认组)
-
一个用户除了主组也可以有多个其他组(附加组)
一问:用户的主组和附加组到底有啥关系呢?
答:用户的主组和附加组半毛钱关系都木有
二问:那要这个主组或者附加组有啥用呢?
答:肯定是有用的,组的目的是方便管理用户,用户的目的是管理操作文件,文件就有权限这个属性。
-
用户要操作一些文件,文件是由用户创建,不同用户创建的文件的属性信息也就不一样
-
文件的属性都有啥呢?比如,文件的创建者,文件属于哪个组,文件大小,文件时间等
-
其中,不同用户所创建的文件的属组就是该用户的主组(默认组)
-
A用户附加组也有可能是其他用户的主组,道理同上(权限章节再细细体会组的作用)