网站首页 > 技术教程 正文
在 CentOS 系统中,sudo 是一个不可或缺的工具,它允许普通用户以超级用户权限执行特定任务,既提升了安全性,又增强了管理灵活性。本文将带你深入探索如何在 CentOS 中创建和管理 sudo 用户,覆盖用户创建、权限分配、高级配置、日志审计和安全加固,步骤详尽,命令丰富,助你在 CentOS 7、8 或 Stream 上构建安全高效的用户体系。
为什么要用 Sudo 用户?
- 安全性保障:避免直接使用 root 账户,降低误操作风险。
 - 精细权限:通过配置文件,精确控制用户可执行的命令。
 - 操作可追溯:Sudo 日志记录每条命令,便于审计和排查。
 - 协作便利:团队成员可分担管理任务,无需共享 root 密码。
 
前提准备
- 一台运行 CentOS 7、8 或 Stream 的服务器。
 - 以 root 用户或已有 sudo 权限的账户登录。
 - 熟悉基本 Linux 命令行操作。
 
步骤 1:环境检查
确保系统就绪是创建 sudo 用户的第一步。
确认当前身份
检查当前登录用户:
whoami
- 输出如 root,说明你是超级用户。
 
验证 Sudo 安装
检查 sudo 是否存在:
rpm -q sudo
- 输出示例:sudo-1.8.23-10.el7.x86_64 表示已安装。
 - 未安装则执行:
 
yum install sudo -y    # CentOS 7
dnf install sudo -y    # CentOS 8 或 Stream
系统更新
保持软件包最新:
yum update -y    # CentOS 7
dnf update -y    # CentOS 8 或 Stream
步骤 2:创建新用户
sudo 权限需绑定到普通用户,以下创建一个名为 myadmin 的用户。
添加用户
使用 adduser 创建:
adduser myadmin
- 创建用户 myadmin 及主目录 /home/myadmin。
 
设置密码
为用户设置安全密码:
passwd myadmin
- 提示输入新密码,如 Secure@2025,确认后生效。
 - 建议密码包含大小写、数字、特殊字符,长度至少 8 位。
 
确认用户
验证用户是否存在:
id myadmin
- 输出示例:uid=1001(myadmin) gid=1001(myadmin) groups=1001(myadmin)。
 
步骤 3:分配 Sudo 权限
新用户默认无 sudo 权限,需手动配置。
方法 1:加入 Wheel 组
CentOS 中,wheel 组成员自动获得 sudo 权限。
添加到 Wheel 组
执行:
usermod -aG wheel myadmin
- -a:追加组,保留现有组。
 - -G:指定 wheel 组。
 
检查组成员
确认用户在 wheel 组:
groups myadmin
- 输出示例:myadmin : myadmin wheel。
 
方法 2:自定义 Sudoers 文件
通过 /etc/sudoers 文件灵活配置权限。
编辑 Sudoers
安全编辑文件:
visudo
- 打开 /etc/sudoers,避免语法错误。
 
授予全部权限
在 # User privilege specification 下添加:
myadmin ALL=(ALL) ALL
- 含义:
 - myadmin:目标用户。
 - ALL:任何主机。
 - (ALL):以任何用户身份运行。
 - ALL:所有命令。
 - 保存退出:按 Esc,输入 :wq,回车。
 
限制特定命令
如仅允许重启和查看日志,添加:
myadmin ALL=(ALL) /usr/bin/systemctl start *, /usr/bin/systemctl stop *, /bin/cat /var/log/*
测试权限
切换用户:
su - myadmin
测试 sudo:
sudo whoami
- 输出 root 表示成功,需输入 myadmin 密码。
 
步骤 4:高级 Sudo 设置
免密码 Sudo
简化操作,免除密码输入。
配置免密码
运行:
visudo
添加:
myadmin ALL=(ALL) NOPASSWD: ALL
- NOPASSWD:无需密码。
 
验证
切换到 myadmin:
su - myadmin
测试:
sudo dnf update -y
- 应直接运行,无需密码。
 
限制主机
限定用户从特定主机使用 sudo:
visudo
添加:
myadmin server.example.com=(ALL) ALL
- 仅在 server.example.com 有效。
 
命令别名
简化权限管理。
定义别名
运行 visudo,添加:
Cmnd_Alias ADMIN_TASKS = /usr/bin/systemctl, /usr/sbin/shutdown, /bin/rpm
myadmin ALL=(ALL) ADMIN_TASKS
- 限制 myadmin 只能运行指定命令。
 
步骤 5:用户管理
列出 Sudo 用户
查看 wheel 组成员:
getent group wheel
- 输出示例:wheel:x:10:myadmin,otheruser。
 
撤销 Sudo 权限
移除 Wheel 组
执行:
gpasswd -d myadmin wheel
- 删除 myadmin 的 wheel 权限。
 
修改 Sudoers
运行 visudo,注释或删除:
# myadmin ALL=(ALL) ALL
删除用户
不再需要时删除:
userdel -r myadmin
- -r:移除主目录和相关文件。
 
步骤 6:日志与监控
检查 Sudo 日志
操作记录默认存于 /var/log/secure。
查看日志
运行:
sudo less /var/log/secure
- 示例记录:
 
Jun 02 21:41:00 server sudo: myadmin : TTY=pts/0 ; PWD=/home/myadmin ; USER=root ; COMMAND=/usr/bin/whoami
自定义日志
运行 visudo,添加:
Defaults logfile="/var/log/sudo_custom.log"
创建日志文件:
touch /var/log/sudo_custom.log
chmod 600 /var/log/sudo_custom.log
- 操作记录存于 /var/log/sudo_custom.log。
 
步骤 7:安全强化
- 强密码策略:密码复杂,定期更换。
 - 最小权限原则:避免过度授权,如 ALL=(ALL) ALL。
 - 备份 Sudoers:编辑前备份:
 
cp /etc/sudoers /etc/sudoers.backup
- 日志审计:定期检查:
 
sudo grep 'sudo' /var/log/secure
- 禁用 Root 登录:编辑 /etc/ssh/sshd_config:
 
PermitRootLogin no
重启 SSH:
sudo systemctl restart sshd
故障排除
- 错误:user is not in the sudoers file
 - 解决:检查 wheel 组或 /etc/sudoers:
 
groups myadmin
visudo
- 错误:密码无效
 - 解决:重置:
 
sudo passwd myadmin
- 错误:命令无权限
 - 解决:确认 /etc/sudoers 中的路径正确。
 
猜你喜欢
- 2025-07-03 Linux入门-普通用户赋予sudo权限(linux基础用户及权限管理的思维导图)
 - 2025-07-03 Linux系统更改系统用户与密码,RK3568工控主板演示
 - 2025-07-03 在Windows服务器上安装Linux系统5种主要方法!
 - 2025-07-03 Linux系统非root用户执行Docker命令
 - 2025-07-03 2、linux命令-用户管理(linux用户和用户组管理)
 - 2025-07-03 Linux下安装常用软件都有哪些?做了一个汇总列表,你看还缺啥?
 - 2025-07-03 Linux中wheel组的使用(centos wheel组和sudo)
 - 2025-07-03 信息安全实战案例:Linux系统用户权限管理
 - 2025-07-03 Linux 组的管理:groupmod命令 + 练习 + 思维导图
 - 2025-07-03 Linux中的用户管理(linux用户管理的命令)
 
欢迎 你 发表评论:
- 10-23Excel计算工龄和年份之差_excel算工龄的公式year
 - 10-23Excel YEARFRAC函数:时间的"年份比例尺"详解
 - 10-23最常用的10个Excel函数,中文解读,动图演示,易学易用
 - 10-23EXCEL中如何计算截止到今日(两个时间中)的时间
 - 10-2390%人不知道的Excel神技:DATEDIF 精准计算年龄,告别手动算错!
 - 10-23计算工龄及工龄工资(90%的人搞错了):DATE、DATEDIF组合应用
 - 10-23Excel中如何计算工作日天数?用这两个函数轻松计算,附新年日历
 - 10-23怎样快速提取单元格中的出生日期?用「Ctrl+E」批量搞定
 
- 最近发表
 - 
- Excel计算工龄和年份之差_excel算工龄的公式year
 - Excel YEARFRAC函数:时间的"年份比例尺"详解
 - 最常用的10个Excel函数,中文解读,动图演示,易学易用
 - EXCEL中如何计算截止到今日(两个时间中)的时间
 - 90%人不知道的Excel神技:DATEDIF 精准计算年龄,告别手动算错!
 - 计算工龄及工龄工资(90%的人搞错了):DATE、DATEDIF组合应用
 - Excel中如何计算工作日天数?用这两个函数轻松计算,附新年日历
 - 怎样快速提取单元格中的出生日期?用「Ctrl+E」批量搞定
 - Excel日期函数之DATEDIF函数_excel函数datedif在哪里
 - Excel函数-DATEDIF求司龄_exceldatedif函数计算年龄
 
 
- 标签列表
 - 
- 下划线是什么 (87)
 - 精美网站 (58)
 - qq登录界面 (90)
 - nginx 命令 (82)
 - nginx .http (73)
 - nginx lua (70)
 - nginx 重定向 (68)
 - Nginx超时 (65)
 - nginx 监控 (57)
 - odbc (59)
 - rar密码破解工具 (62)
 - annotation (71)
 - 红黑树 (57)
 - 智力题 (62)
 - php空间申请 (61)
 - 按键精灵 注册码 (69)
 - 软件测试报告 (59)
 - ntcreatefile (64)
 - 闪动文字 (56)
 - guid (66)
 - abap (63)
 - mpeg 2 (65)
 - column (63)
 - dreamweaver教程 (57)
 - excel行列转换 (56)
 
 

本文暂时没有评论,来添加一个吧(●'◡'●)