当前位置: 首页 > news >正文

Linux小课堂: 用户管理与权限控制机制详解

概述

  • 在 Linux 系统中,用户和权限管理是系统安全的核心基础之一
  • 作为一种典型的多用户操作系统,Linux 允许多个用户从不同终端或网络位置同时登录并操作同一系统,但每位用户所能执行的操作范围由其所属身份和权限严格限定,这种设计不仅支持协作,更有效防止越权访问、误操作及恶意程序破坏,系统初始化时会自动创建 root 用户,并要求管理员设置初始密码
  • 此外,用户在安装过程中所创建的第一个账户(如本例中的 wang)属于普通用户,具备有限权限,无法直接执行高危系统级操作。该机制构成了一道基础安全防线,避免因误用指令导致系统崩溃

Linux 多用户模型与权限隔离机制

Linux 的多用户特性意味着系统必须对每个用户的操作行为进行精确控制。每一个用户都拥有独立的账户,并归属于一个或多个用户组(group),权限则通过用户身份与所属组共同决定

其中,最特殊的用户是 root ——即超级用户(Superuser),也被称作“系统大管家”。该用户具有最高权限,可执行所有操作,包括修改系统配置、安装软件、管理其他用户账号等。正因为其能力极强,默认情况下不建议以 root 身份直接登录使用系统,以防误操作导致系统崩溃或被恶意利用

例如,命令 rm -rf / 若被执行,将递归删除整个根目录下的所有文件,造成不可逆的系统损毁。因此,常规操作应使用普通用户(非 root)完成,仅在必要时临时获取管理员权限。

root 用户的身份标识通常表现为命令行提示符中的 # 符号,而普通用户的提示符则为 $

切换用户身份:sudo 与 su 命令详解


1 ) 临时提升权限:sudo 命令

sudo 是 substitute user do 的缩写,意为“以另一用户的身份执行命令”,默认代表以 root 权限运行指定命令。

使用方式:

sudo [command]

当普通用户执行此命令时,系统会提示输入当前用户的密码(而非 root 密码),验证通过后即可短暂获得 root 权限执行单条命令。

示例:

$ sudo date
[sudo] password for wang: 
Thu Apr  5 10:23:45 CST 2025

输出当前时间,虽然 date 不需要特权也能运行,但此例用于演示 sudo 工作流程

首次执行时终端提示:

[sudo] password for wang: 

输入正确密码后命令以 root 身份执行。

注意:sudo 的认证信息会在一段时间内缓存(通常为5分钟),无需重复输入密码,sudo 所需的是当前用户的密码,而非 root 的密码

配置文件说明(补充代码):
/etc/sudoers 文件定义了哪些用户或组可以使用 sudo 及其权限范围。推荐使用专用编辑器 visudo 修改,避免语法错误导致系统无法提权

查看当前 sudoers 配置
sudo cat /etc/sudoers或进入编辑模式(安全方式)
sudo visudo

典型配置行:

wang ALL=(ALL:ALL) ALL 

表示用户 wang 可在任意主机上以任意用户身份执行任意命令

2 ) 永久切换身份:su 命令及其变体

sudo 执行单条命令不同,su(switch user)允许用户完全切换到另一个账户上下文

2.1 基本用法:

su -

或等价写法:

su -l 

切换至 root 用户,需输入 root 的密码
使用 - 参数(等同于 --login)表示进行一次完整的登录会话,环境变量也将切换为该用户的初始环境,工作目录变为目标用户的家目录(如 /root

执行后提示符由 $ 变为 #,表明已进入超级用户环境

2.2 带连字符与不带的区别:

命令效果
su切换用户身份,但保留原用户的环境变量和工作目录
su -完整切换至目标用户,加载其完整的登录环境(包括家目录、PATH、shell 等)

示例对比:

当前为普通用户 wang
whoami          # 输出: wang
pwd             # 输出: /home/wangsu              # 输入 root 密码
whoami          # 输出: root 
pwd             # 仍为: /home/wang ← 未切换家目录!exit            # 返回 oscarsu -            # 再次切换,使用连字符
whoami          # 输出: root 
pwd             # 输出: /root ← 成功进入 root 家目录

2.3 切换至其他普通用户:

su - thomas

可切换至名为 thomas 的普通用户,前提是知道其密码

2.4 退出 root 身份的方法

  • 执行 exit 命令
  • 或按下快捷键 Ctrl+D,两者效果相同

此外,sudo -i 可模拟登录式 shell 进入 root 环境,功能上等价于 su -

$ sudo -i
pwd
/root

用户组织结构:用户与组的层级关系

Linux 中的用户按逻辑划分为不同的用户组(Group),实现更细粒度的权限管理,每个用户至少属于一个主组,也可加入多个附加组

特殊用户 root 属于 root 组,具有最高权限,能够执行任何系统级操作,如安装软件、修改内核参数、管理其他用户等

典型用户分组示意图如下:

[超级用户]└── root (UID=0)[普通用户组]├── family_group│     ├── poska│     ├── userforandroid│     └── scott│ └── friend_group├── peter└── john
  • UID(User ID)为 0 的用户即为 root,无论用户名为何,均拥有最高权限

用户生命周期管理:创建、修改、删除


以下命令均需 root 权限或通过 sudo 执行

1 ) 创建新用户:useradd

useradd 命令用于添加新的系统账户。

基本语法:

useradd [options] username

命令必须以 root 身份运行,否则将报错 Permission denied

最简示例:

sudo useradd thomas

该命令创建用户 thomas,并在 /home 下生成同名目录(若启用 -m 参数),但不会自动设置密码。

推荐完整创建流程(含家目录与Shell):

sudo useradd -m -s /bin/bash thomas

参数解释:

  • -m:强制创建用户家目录 /home/thomas
  • -s /bin/bash:指定默认 Shell 为 Bash

执行后,系统会在 /etc/passwd 中添加条目
此时用户仍无密码,无法登录

2 ) 设置用户密码:passwd

使用 passwd 命令为用户设定或更改密码

语法:

sudo passwd username 

示例:

sudo passwd thomas

交互式输入两次新密码:

New password: 
Retype new password: 
passwd: all authentication tokens updated successfully.

成功后用户可通过图形界面或终端登录

批量创建用户脚本示例

#!/bin/bash
for user in alice bob charlie david
do useradd "$user"echo "password" | passwd "$user" --stdin  # CentOS/RHEL 支持 --stdinchage -d 0 "$user"  # 强制首次登录修改密码 
done

3 ) 删除用户:userdel

userdel 命令用于删除用户账户

语法格式:

userdel [options] username

基本用法:

sudo userdel username

示例:

sudo userdel thomas

此操作仅删除用户条目,保留 /home/thomas 目录及其数据

彻底删除(包含家目录):

sudo userdel -r thomas

或等价写法:

sudo userdel --remove thomas

-r 参数会一并删除用户的家目录、邮件 spool 等附属文件,实现“连根拔起”

技术细节:-r 参数会自动移除以下内容:

  • 家目录 /home/thomas
  • 邮箱文件 /var/spool/mail/thomas
  • 任何属于该用户且无其他引用的文件(依赖具体实现)

若用户正在登录或其进程仍在运行(如 SSH 会话、后台任务),则 userdel 将失败,提示类似:

user thomas is currently used by process 16153

解决方法:

  • 强制终止相关进程;
  • 或重启系统后在无人登录状态下执行删除

补充代码:检查用户是否活跃

查看用户 thomas 是否有活动进程
$ ps -u thomas强制踢出用户(适用于已登录情况)
pkill -u thomas

技术细节注意点总结


场景问题描述解决方案
删除失败用户正在运行进程(如已登录)必须先注销或重启系统
家目录残留未使用 -r 参数手动清理:rm -rf /home/username
无法登录创建用户时未加 -m补建目录并赋权:
mkdir /home/thomas && chown thomas:thomas /home/thomas

权限管理的最佳实践与安全建议

  1. 始终使用普通用户日常操作
    日常使用应避免以 root 登录,降低因误操作或病毒感染导致系统损坏的风险。

  2. 最小权限原则(Principle of Least Privilege)
    每个用户仅授予完成任务所需的最低权限,杜绝“万能账号”。

  3. 合理使用 sudo 替代 su
    sudo 提供日志审计能力(记录在 /var/log/secure/var/log/auth.log),便于追踪操作行为。

  4. 定期清理无效账户
    使用 userdel -r 彻底清除废弃用户,防止留下安全隐患。

  5. 启用密码策略强化安全性
    配置 /etc/login.defs 和 PAM 模块,强制使用复杂密码、设定过期时间等。

示例:查看所有用户及 UID

cut -d: -f1,3 /etc/passwd | sort -n -t: -k2

输出示例:

root:0 
bin:1 
daemon:2 
...
wang:1000
thomas:1001 

用户与组的组织结构分析

Linux 中用户按功能划分为若干组,便于批量授权。例如:

  • root 组:包含超级用户
  • users 组:普通用户集合
  • wheel 组(CentOS/RHEL):有资格使用 sudo 的管理组
  • 自定义组:如 family, friends 等(用于资源访问控制)

查看当前用户所属组:

groups

查看特定用户所属组:

groups thomas

添加用户到组:

sudo usermod -aG wheel thomas

使 thomas 加入 wheel 组,从而具备 sudo 权限(需 /etc/sudoers 中启用 %wheel ALL=(ALL) ALL)。

综合实践:完整用户管理脚本示例

以下是一个完整的 Bash 脚本,实现自动化用户管理任务,可用于运维场景

1 ) 方案1

#!/bin/bash
用户管理自动化脚本
功能:创建 → 设密码 → 加入 sudo 组 → 验证 → 删除(含家目录)USERNAME="demo_user"echo " 开始创建用户 $USERNAME "
sudo useradd -m -s /bin/bash $USERNAMEecho " 为用户 $USERNAME 设置密码 "
echo "$USERNAME:SecurePass123" | sudo chpasswd
# 注:生产环境应避免明文密码,此处仅为演示echo " 将用户加入 wheel 组以启用 sudo "
sudo usermod -aG wheel $USERNAMEecho " 验证用户信息 "
id $USERNAME
grep $USERNAME /etc/passwd echo " 测试 sudo 权限(切换用户执行)"
su - $USERNAME -c "sudo whoami" << EOF
SecurePass123
EOFecho " 清理:删除用户及家目录 "
sudo userdel -r $USERNAMEif id $USERNAME &>/dev/null; thenecho "❌ 用户 $USERNAME 删除失败"
elseecho "✅ 用户 $USERNAME 已成功创建并彻底删除"
fi 

脚本保存为 manage_user.sh,赋予执行权限并运行:

chmod +x manage_user.sh
./manage_user.sh

2 ) 方案2

# 1. 创建用户并创建家目录
sudo useradd -m thomas# 2. 为其设置密码 
sudo passwd thomas
输入两次密码确认# 3. 验证用户是否存在
id thomas
# 输出应包含 UID、GID 和组信息# 4.(可选)查看其家目录结构 
ls -la /home/thomas/# 5. 尝试切换至该用户(测试权限)
su - thomas
pwd  # 应显示 /home/thomas 
exit# 6. 删除用户及其全部数据
sudo userdel -r thomas# 7. 验证是否删除成功
ls /home/ | grep thomas  # 不应有任何输出
id thomas                 # 应提示 "no such user"

这是一个完整的用户管理闭环示例,涵盖创建、设密、登录验证、删除全过程

核心要点

核心概念关键结论
权限最小化原则日常操作使用普通用户,仅关键任务提权
sudo vs susudo 更安全(审计日志、无需共享 root 密码);su 更灵活但风险高
用户完整性管理创建务必加 -m,删除务必加 -r,否则遗留安全隐患
root 的双刃剑属性拥有绝对权力,但也承担最大责任,滥用将危及系统稳定
组机制的重要性实现权限复用与集中管理,避免逐个赋权

总结

类别内容
核心思想Linux 采用多用户模型,通过权限隔离保障系统安全;root 拥有最高权限,普通用户应限制使用。
权限控制机制sudo 实现最小权限原则,允许普通用户临时提权;su 提供持久切换能力,适用于运维场景。
用户管理命令useradd 添加用户,passwd 设置密码,userdel 删除用户,注意使用 -r 参数清理残留目录。
家目录路径规范普通用户位于 /home/usernameroot 用户位于 /root
安全建议
  • 禁止长期以 root 登录;
  • 定期审计 /etc/passwd/etc/shadow
  • 关闭不必要的用户账户;
  • 启用 sudo 日志监控(位于 /var/log/auth.log)。

Linux 的用户与权限体系构建于严谨的多用户模型之上,其核心思想是:通过身份隔离实现系统安全。关键要点包括:

  • root 用户拥有绝对控制权(UID=0),可执行任何操作
  • 普通用户默认权限受限,需借助 sudosu 提权
  • sudo 适合临时提权并支持审计,su 用于长期切换
  • 用户管理命令 useraddpasswduserdel 必须以 root 身份运行
  • 删除用户时应使用 userdel -r 一并清除家目录,避免残留
  • 实际运维中应遵循最小权限原则,杜绝直接使用 root 进行日常操作

Linux 的用户与权限体系不仅是系统管理的基础模块,更是构建安全可信计算环境的关键支柱。通过对 sudosuuseraddpasswduserdel 等命令的深入掌握,结合对用户组、家目录、Shell 环境等要素的精细控制,管理员能够实现高效、可控、可审计的系统运维。

务必牢记:真正的自由不是“为所欲为”,而是在规则之内实现最大效能——这正是 Linux 权限哲学的本质所在

http://www.dtcms.com/a/496039.html

相关文章:

  • 四川网站seowordpress标题分隔符
  • 前端角度实现网站首页加载慢优化衡阳网站推广优化公司
  • 网站增加关键词正规网站开发需要哪些技术
  • 即墨做砍价小程序最好的网站系统开发
  • 数据库-联表查询
  • 德化网站建设新开的网页游戏大全
  • 仿网站建设平凉哪家做企业网站
  • 长沙岳麓区做网站湘潭做网站选择磐石网络
  • 简述网站设计规划的步骤响应式网站开发
  • CF2124B Minimise Sum 题解
  • 招标网站有哪些成长厉程网站
  • 购物网站哪个最便宜网站建设 统一质量标准
  • 多模态大模型OCR幻觉缓解思路:DianJin-OCR-R1通过“再看一眼”图像减轻幻觉
  • JJJ:SD 卡中的 OCR(Operating Conditions Register)寄存器
  • 手机网站图片切换网站设计师需要什么知识与技能
  • 20251017流程控制Demo
  • 浔川 AI 翻译 v7.0 公测版介绍(即将上线)
  • CPU性能对GPU服务器有影响吗?
  • 安徽省港航建设投资集团网站牛商网网站后台
  • 永磁体的磁导率
  • 亚马逊网站建设进度计划网站怎么做落款
  • h5模板网站西安到北京的高铁
  • wordpress建站两秒打开论坛模板建站
  • AI服务器工作之服务器的种类分类
  • 校园网站建设的目的中国建设机械教育协会网站
  • nextjs 接入 谷歌分析
  • asp.net core CVE-2025-55315漏洞验证修复
  • 建网站要多少费用加强信息管理 维护网站建设
  • 读书笔记:《2049未来10000天的可能》
  • 多GPU服务器在大型量子比特状态向量模拟中的实现方式