用户
Linux 系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须向系统管理员申请一个账号,然后以这个账号的身份进入系统
users 的命令是列出当前登录用户的列表
创建账号
添加用户账号就是在系统中创建一个新账号,然后为新账号分配用户号、用户组、主目录和登录 Shell 等资源。刚添加的账号是被锁定的,无法使用
useradd [选项] 用户名| 选项 | 含义 |
|---|---|
-c | comment 指定一段注释性描述 |
-d | 指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录 例子: useradd -d /home/xxx -m 用户名 |
-g | 用户所属组,指定用户所属的用户组。创建用户时必须指定(不指定就自动创建同名组) 而且只能有 1 个。这个用户在创建文件时,文件的所属组就是这个主组 |
-G | 用户附加组,指定用户所属的附加组。没有个数限制。 作用:让用户拥有多个组的权限(不影响文件归属,只影响权限) |
-s | 指定用户的登录Shell,如果不指定系统会用默认 Shell 或者可以指定 没有 Shell。意思就是这个用户不能登录,只能用来跑服务 / 程序 例子: useradd -s /sbin/nologin 用户名 |
-u | 用户号:指定用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标识号 |
删除帐号
删除用户账号就是要将/etc/passwd等系统文件中的该用户记录删除,必要时还删除用户的主目录
userdel [选项] 用户名| 选项 | 含义 |
|---|---|
| 无 | 仅删除用户,保留家目录 |
-r | 删除用户 + 家目录 |
-f | 强制删除用户(即使用户已登录) |
-rf | 强制删除用户 + 家目录 |
家目录 = 创建用户时
-d指定的目录
修改用户
usermod [选项] 用户名| 选项 | 含义 |
|---|---|
-c | comment:修改用户的注释性描述 |
-d | 修改用户的主目录,若要同时迁移目录内容,需配合 -m 使用 |
-m | 配合 -d 使用,将原主目录内容迁移到新指定的目录 |
-g | 修改用户的主组(只能有 1 个),用户创建文件时的所属组将更新为此组 |
-G | 覆盖用户的附加组列表,多个组用逗号分隔,会清空原有附加组 |
-aG | 向用户的附加组列表中追加新组,不会覆盖原有附加组 |
-s | 修改用户的登录 Shell,可指定为 /sbin/nologin 或 /bin/false 来禁止登录 |
-u | 修改用户的 UID(用户号),若配合 -o 可使用非唯一的 UID |
-l | 修改用户的登录名(用户名) |
-L | 锁定用户账号,禁止登录 |
-U | 解锁用户账号,恢复登录权限 |
用户口令
用户账号刚创建时没有口令,但是被系统锁定,无法使用,必须为其指定口令后才可以使用,即使是指定空口令;指定和修改用户口令的命令是 passwd。root 用户可以为自己和其他用户指定口令,普通用户只能用它修改自己的口令
passwd [选项] 用户名| 选项 | 含义 |
|---|---|
-l | 锁定口令,即禁用账号(在 /etc/shadow 中密码字段前加 !) |
-u | 口令解锁,恢复账号登录权限 |
-d | 使账号无口令(清空密码,登录时无需输入密码) |
-f | 强迫用户下次登录时修改口令 |
-e | 立即让密码过期,强制用户下次登录时修改密码 |
-S | 显示指定用户的密码状态信息 |
-n | 设置密码的最小使用天数(用户在多少天内不能再次修改密码) |
-x | 设置密码的最大使用天数(超过该天数必须修改密码) |
-w | 设置密码过期前的警告天数 |
-i | 设置密码过期后账号的禁用天数 |
普通用户:直接使用
passwd命令即可,上述选项基本上都是给 root 用户使用
组
在 Linux 中,组是一种将多个用户组织在一起的机制还有分配权限(只要用户属于某个组,就拥有那个组的权限)。每个用户都属于一个或多个组,而组可以包含多个用户;每个用户必定有一个主组(创建用户的时候创建,不指定名称的话默认会创建和用户同名的组)
groups 命令能列出当前的用户所属的所有组(或者使用 groups 用户名 查看指定用户的所属组),第一个组名为主组,其他都是附加组
创建组
groupadd [选项] 组名| 选项 | 含义 |
|---|---|
-g | 指定组的 GID(组标识号),需是未被使用的数字,默认系统会自动分配 |
-r | 创建系统组(适用于服务类组),系统组的 GID 范围通常小于 1000(不同发行版略有差异) |
-f | 强制创建,若要创建的组已存在,不会报错(默认重复创建会提示错误) |
-o | 允许创建重复 GID 的组(配合 -g 使用),默认 GID 必须唯一 |
删除组
groupdel [选项] 组名| 选项 | 含义 |
|---|---|
-f | 强制删除组(即使是某个用户的主组也强行删) |
默认删除组的话那么这个组必须不是某个用户的主组
修改组
groupmod [选项] 组名| 选项 | 含义 |
|---|---|
-g | 修改组的 GID |
-n | 修改组的 组名 |
newgrp
| 指令 | 含义 |
|---|---|
newgrp 组名 | 临时切换当前有效主组为指定组名,之后新建文件的所属组将变为该组 |
exit | 退出 newgrp 环境,恢复原来的主组 |
用户系统文件
Linux系统中,用户与用户组的所有配置、权限、身份信息,均依托三大核心文件存储
| 路径 | 含义 |
|---|---|
/etc/passwd | 用户基本信息 |
/etc/shadow | 用户密码与安全配置 |
/etc/group | 用户组信息 |
上述的 用户/组 执行的命令本质上就是对这三个文件的更新
/etc/passwd
存储系统内所有用户的基础身份信息,无密码明文,仅做用户身份标识与基础配置记录。所有用户均拥有可读权限,仅 root 用户可修改,普通用户无法写入
格式:用户名:密码占位:UID:GID:注释信息:家目录:登录Shell
| 字段含义 | 说明 |
|---|---|
| 用户名 | 用户登录系统的名称,全局唯一,区分大小写 |
| 密码占位 | 早期存放加密密码,现已迁移至 /etc/shadow,此处仅为占位x 代表密码正常存于 shadow,空值代表无密码,!/*代表账号锁定 |
| UID(用户ID) | 系统识别用户的唯一数字标识: 0 为 root 超级管理员 1-999为系统/服务用户 ≥1000为普通登录用户 |
| GID(主组ID) | 用户所属主组的数字标识,一个用户仅有一个主组,对应 /etc/group 内的GID |
| 注释信息 | 用户备注说明,可填写用途等,无实际权限约束 |
| 家目录 | 用户登录系统后的默认工作目录,root 默认为 /root,普通用户默认为 /home/用户名 |
| 登录Shell | 用户登录后使用的命令解释器,/bin/bash 为标准可登录 Shell,/sbin/nologin 为禁止登录(服务用户专用) |
/etc/shadow
专门存储用户的加密密码、密码有效期、账号锁定状态等敏感安全信息,仅root用户拥有可读可写权限,普通用户无任何访问权限
格式:用户名:加密密码:最后修改时间:最小修改间隔:最大有效期:过期警告天数:过期宽限天数:账号失效时间:保留字段
| 字段含义 | 说明 |
|---|---|
| 用户名 | 与 /etc/passwd 内用户名一一对应,用于关联用户基础信息 |
| 加密密码 | 采用 SHA-512 等算法加密的密码串,无密码为空,!/* 开头代表账号锁定 |
| 最后修改时间 | 从1970年1月1日到上次修改密码的天数,0代表下次登录需强制改密 |
| 最小修改间隔 | 密码修改后,需等待该天数才能再次改密,0代表无限制 |
| 最大有效期 | 密码最长使用天数,超期需改密,99999代表永久有效 |
| 过期警告天数 | 密码过期前,提前提醒用户改密的天数 |
| 过期宽限天数 | 密码过期后,仍可登录改密的宽限天数,过期则账号失效 |
| 账号失效时间 | 账号永久失效的时间(1970年起算天数),空值代表永久有效 |
| 保留字段 | 系统预留字段,暂无实际用途 |
/etc/group
存储系统内所有用户组的基础信息,包括组名、GID、组内成员,用于管理用户的组权限,实现文件权限的批量管控,所有用户均可读取,仅root用户可修改
格式:组名:密码占位:GID:组内成员
| 字段含义 | 详细说明 |
|---|---|
| 组名 | 用户组的名称,全局唯一 |
| 密码占位 | 组密码占位符,x 代表密码存于 /etc/gshadow,极少使用,空值代表无组密码 |
| GID(组ID) | 用户组的唯一数字标识,与 /etc/passwd 内GID对应1-999为系统组 ≥1000为普通组 |
| 组内成员 | 属于该组的附加组成员,多个用户用逗号分隔 用户主组的成员不会显示在组内成员字段中,仅附加组成员会罗列 |
