一、用户管理
1.1 用户与组的基本概念
用户类别
在 Linux 系统中,用户分为以下三种类型:
超级用户(root):拥有系统的最高权限,仅用于执行管理操作。
普通用户:权限受限,通常只能操作自己的目录和文件。
程序用户:用于运行系统服务,一般由系统自动创建,不允许登录系统。
组类别
用户账户可以归属于以下两种组:
基本组(主组):用户创建时自动生成的默认组,通常与用户名相同,每个用户有且只有一个基本组。
附加组(补充组):用户除基本组外可加入的其他组,一个用户可以同时属于多个附加组,用于获取对应组的资源访问权限。
1.2 用户账号文件
Linux 系统中的用户信息主要存储在以下两个关键文件中:
/etc/passwd:存储用户的基本信息,如用户名、UID、家目录和登录 Shell 等。
/etc/shadow:存储用户的密码信息(加密格式)及相关属性,如密码有效期等,权限更严格,仅 root 用户可读。
用户基本信息文件/etc/passwd:
其中分别代表的内容为:用户名:密码占位符:UID:GID:用户描述:宿主目录:登录Shell
用户密码信息文件/etc/shadow:
1.3 常见的用户命令
添加用户账号:useradd 用户名
添加用户后,系统会在/home目录下自动创建一个家目录。可以使用ls /home命令来检查目录是否创建成功,或者使用tail -5 /etc/passwd命令来验证用户是否已成功添加。
修改用户密码:passwd 用户名
使用passwd wangwu命令后可以看到让我们输入两遍密码,设置密码成功后可以切换用户登录测试。su -是切换用户命令,我们需要先切换到一个普通用户下,因为从 root 管理员切换到任何用户都不用输入密码。我们先切换到 zhangsan 这个用户下,然后再切换到 wangwu 用户下,可以看到让我们输入密码,输入后显示我们登录上了,这表明我们密码设置成功了。
注:passwd -l 用户名表示锁定用户账号,锁住之后就无法登录了。
passwd -u 用户名表示解锁用户账号,解锁后可以看到会有一次失败的登录信息。
删除用户账号:userdel -r用户名
可以看到 wangwu 用户账号已被删除。
注:删除用户账号时一定要加 -r 参数,否则这个账户无法再次使用,创建。
1.4用户账号的初始配置文件
使用useradd创建新用户时,系统会自动将/etc/skel/目录下的默认配置文件复制到新用户的家目录中,作为该用户的环境初始设置。
这些配置文件主要用于定制用户的工作环境,常见文件包括:
.bash_profile:用户登录时执行一次,通常用于设置环境变量。
.bashrc:每次启动 Bash 时执行(包括登录和打开子 Shell),常用于定义别名、函数等。
.bash_logout:用户退出登录时执行,可用于清理临时文件或记录登出日志。
二、组管理
2.1组账号文件
与组账号关联的配置文件主要有两个,分别是:
/etc/group:用于存储组账号的基本信息,包括组名、GID(组ID)以及组成员列表等。
/etc/gshadow:用于保存组账号的加密密码信息,但在实际运维中使用频率较低。
在/etc/group文件中,每个组所包含的用户成员会记录在该行的最后一个字段中。多个成员之间使用逗号,分隔。
组的基本信息文件
组的密码文件
2.2 常见的组命令
添加组:gruopadd [-g GID] 组名
删除组:groupdel 组名
三、查询账号信息
3.1groups— 查看用户所属的组
功能:查询指定用户所属的所有组(包括基本组和附加组)。
用法:groups [用户名]
3.2id— 查看用户身份标识(常用)
功能:显示指定用户的 UID(用户ID)、GID(基本组ID)以及所属的附加组列表。
用法:id [用户名]
3.3finger— 查看用户详细信息(需下载安装)
功能:显示用户的详细信息,包括登录名、真实姓名、家目录、登录 Shell、最后登录时间等。
用法:finger [用户名]
3.4w、who、users— 查看已登录用户信息
这三个命令均用于查看当前登录到系统的用户信息,但详细程度和展示风格有所不同。
users 仅列出当前登录的用户名
who 显示当前登录用户的基本信息
w 显示当前登录用户的详细信息
四、文件权限
4.1 查看访问权限
访问权限分为三种:读,写,执行
| 权限 | 字符 | 数字 | 作用 |
| 读 | r | 4 | 允许查看文件内容 |
| 写 | w | 2 | 允许修改文件内容 |
| 执行 | x | 1 | 允许运行该文件(程序或脚本) |
查看权限:ls -l 目录或文件
其中左侧代表的是权限分别解释为:
命令输出的权限字符串共包含 10 个有效字符(末尾的 . 为 SELinux 标记,稍后单独说明),其整体结构可划分为四个部分:
[类型位][属主权限][属组权限][其他用户权限]
1位 3位 3位 3位
现在这个目录的权限为:所属主拥有全部的权限,所属组只有读和执行的权限,其他人有读和执行的权限。
4.2 查看归属
属主:拥有该文件或目录的用户账号。
属组:拥有该文件或目录的组账号。
现在这个目录的归属为属主是 root,属组是 root。
4.3 设置权限和归属
设置权限:chmod -R [ugoa] [+-=] [rwx] 文件或目录 或 chmod -R nnn 文件或目录
可用看到 0707 的权限全部变为 可读可写可执行,-R 表示递归,即修改当前目录下所有文件。
设置归属:chown -R 属主:属组 文件或目录
可以看到 0707 目录下的所有文件或目录的属主和属组都从 root 变为了 zhangsan
五、提权权限
5.1sudo 机制介绍
sudo(Superuser Do)机制提供了一种更安全的折中方案:允许普通用户在授权范围内执行部分特权命令,而无需知晓 root 密码。该机制由管理员预先在/etc/sudoers文件中进行授权配置,明确允许哪些用户在哪些主机上执行哪些命令。
5.2sudo 命令常用选项
sudo -l:列出当前用户在主机上可执行和禁止执行的命令
sudo -v:刷新用户的时间戳。sudo 会在验证密码后一段时间内免密执行
sudo -u:以指定用户的身份执行命令
sudo -k:清除时间戳,使下次执行 sudo 时必须重新输入密码
5.3 授权配置详解(/etc/sudoers)
/etc/sudoers文件的默认权限为440,必须使用visudo命令进行编辑(该命令会进行语法检查,避免因配置错误导致 sudo 不可用)。若使用vi强制编辑,保存时需执行:w!。格式如下:
用户/组 主机名 = 命令
userMACHINE COMMANDS
用户:可以是具体的用户名,也可以使用 %组名 的形式表示授权给该组内的所有用户。
主机名:允许执行命令的主机名称。在单机环境中通常设置为 localhost 或实际主机名,主要用于多主机共享同一份 sudoers 文件。
命令:允许通过 sudo 执行的特权命令列表,需填写命令的绝对路径(如 /bin/systemctl restart httpd)。多个命令之间使用逗号 , 分隔。
5.4 案例
案例一:
需求:wangliu 用户可以使用useradd usermod(wangliu root用户下的权限 useradd usermod)
配置:
1.创建 wangliu 用户并设置密码
2.使用 visudo 命令修改文件
3.验证
切换用户到 wangliu;
使用 sudo /usr/sbin/useradd tom 命令添加 Tom 用户账号;
使用 ls /home 或 tail -5 /etc/passwd 验证用户是否创建成功。
案例二:
用户可以临时创建网卡
1.创建用户账号并设置密码
2.编辑配置文件
visudo
3.验证
切换用户到 Tom 修改IP
六、总结
1.了解用户账号的分类。
2.用户账号和密码存放的位置 /etc/passwd /etc/shadow。
3.一些常见的创建用户和组的命令
创建账号/组:useradd 账号名 groupadd 组名
删除账号/组:userdel -r 账号名 groupdel 组名
修改密码:passwd 账号名
4.明白了文件或目录的权限有哪些,归属有那些。
5.文件权限的设置:chmod -R [ugoa] [+-=] [rwx] 文件或目录 或 chmod -R nnn 文件或目录。
归属的设置:chown -R 属主:属组 文件或目录。
6.运用 visudo 配置文件给普通用户提高权限。