sudo升级指南

Teacat99 Lv2

sudo升级指南

前言

sudo 是 Linux 系统中至关重要的权限管理工具,它允许普通用户以超级用户权限执行特定命令。然而,随着安全研究的深入,sudo 程序不断发现新的安全漏洞,因此及时升级到最新版本对系统安全至关重要。

升级原因

最新发布的 sudo 1.9.17p1 版本修复了两个严重的安全漏洞:

CVE-2025-32462:修复了 sudo 的 -h/--host 选项可能导致的本地权限提升攻击。当 sudoers 文件允许用户在不同主机上运行命令时,攻击者可以利用该选项进行权限提升。

CVE-2025-32463:修复了攻击者可以利用 sudo 的 -R/--chroot 选项以 root 权限运行任意命令的漏洞,即使这些命令未在 sudoers 文件中列出。该功能已被弃用,将在未来版本中完全移除。

这些漏洞的存在使得系统面临严重的安全风险,因此强烈建议所有 Linux 用户尽快升级到 sudo 1.9.17p1 版本。

sudo 官网及下载页面

最新版本 sudo 1.9.17p1 提供了多种操作系统和架构的预编译包,包括:

  • 源码包:sudo-1.9.17p1.tar.gz
  • CentOS/RHEL RPM 包:支持 el7、el8、el9
  • Ubuntu DEB 包:支持 20.04、22.04、24.04
  • Debian DEB 包:支持 deb11、deb12

系统版本检查

在升级 sudo 之前,需要确认当前系统的版本和架构,以选择合适的安装包。

检查系统版本

通用方法:

1
2
3
4
5
6
7
8
# 查看系统信息
cat /etc/os-release

# 查看发行版详情
lsb_release -a

# 查看内核版本
uname -a

CentOS/RHEL 系统:

1
cat /etc/redhat-release

Ubuntu/Debian 系统:

1
cat /etc/issue

检查系统架构

1
2
3
4
5
6
# 查看系统位数
getconf LONG_BIT

# 查看架构信息
arch
uname -m

检查当前 sudo 版本

1
sudo --version

升级前的重要准备:备份配置文件

在开始升级 sudo 之前,强烈建议先备份现有的配置文件,以防升级过程中出现问题时能够快速恢复。

备份 sudoers 配置文件

sudoers 文件是 sudo 的核心配置文件,包含了用户权限设置。升级前务必进行备份:

1
2
3
4
5
6
7
8
# 备份主配置文件
sudo cp /etc/sudoers /etc/sudoers.bak

# 备份 sudoers.d 目录(如果存在)
sudo cp -r /etc/sudoers.d /etc/sudoers.d.bak

# 验证备份文件
ls -la /etc/sudoers* /etc/sudoers.d*

验证备份文件完整性

1
2
3
4
5
6
7
8
# 检查备份文件是否创建成功
file /etc/sudoers.bak

# 比较原文件和备份文件
diff /etc/sudoers /etc/sudoers.bak

# 验证备份文件语法(确保备份文件可用)
sudo visudo -c -f /etc/sudoers.bak

恢复备份文件(如需要)

如果升级后出现问题,可以使用以下命令恢复:

1
2
3
4
5
6
7
8
9
# 恢复主配置文件
sudo cp /etc/sudoers.bak /etc/sudoers

# 恢复 sudoers.d 目录
sudo rm -rf /etc/sudoers.d
sudo cp -r /etc/sudoers.d.bak /etc/sudoers.d

# 验证恢复后的配置
sudo visudo -c

其他重要文件备份(可选)

1
2
3
4
5
# 备份 sudo 相关的日志配置
sudo cp /etc/rsyslog.conf /etc/rsyslog.conf.bak

# 备份 PAM 配置(某些系统需要)
sudo cp /etc/pam.d/sudo /etc/pam.d/sudo.bak

⚠️ 安全提醒

  • 升级前务必保持一个root终端会话开启,防止sudo升级失败后无法获得管理员权限
  • 备份文件建议保存在安全的位置,避免误删
  • 升级完成并确认正常工作后,可以删除备份文件
  • 如果是生产环境,建议将备份文件复制到其他服务器保存

保持root会话的方法

在开始升级之前,请先打开一个root终端会话并保持运行:

1
2
3
4
5
6
7
8
# 方法一:使用 su 切换到 root 用户
su -

# 方法二:使用 sudo 获取 root shell
sudo -i

# 方法三:直接以 root 用户登录(如果允许)
ssh root@localhost

重要说明

  • 保持这个root会话直到sudo升级完成并验证正常工作
  • 如果sudo升级过程中出现问题,可以通过这个root会话进行修复
  • 切勿关闭此root终端,直到确认新版本sudo工作正常

在线安装方式

方法一:包管理器升级(推荐)

Ubuntu/Debian 系统:

1
2
3
4
5
6
7
8
# 更新软件包列表
sudo apt update

# 升级 sudo
sudo apt upgrade sudo

# 验证版本
sudo --version

CentOS/RHEL 系统:

1
2
3
4
5
6
7
8
# CentOS 7
sudo yum update sudo

# CentOS 8/9 或 RHEL 8/9
sudo dnf update sudo

# 验证版本
sudo --version

方法二:下载预编译包手动安装

根据系统版本选择对应的安装包:

源码包:

💡 使用提示:点击上方链接可直接下载对应系统的安装包,下载后按照下面的安装命令进行安装。

📋 详细安装步骤

CentOS 7 x86_64:

1
2
3
4
5
# 下载 RPM 包
wget https://github.com/sudo-project/sudo/releases/download/v1.9.17p1/sudo-python-1.9.17-2.el7.x86_64.rpm

# 安装
sudo rpm -Uvh sudo-python-1.9.17-2.el7.x86_64.rpm

CentOS 8/9 x86_64:

1
2
3
4
5
6
7
# CentOS 8
wget https://github.com/sudo-project/sudo/releases/download/v1.9.17p1/sudo-python-1.9.17-2.el8.x86_64.rpm
sudo rpm -Uvh sudo-python-1.9.17-2.el8.x86_64.rpm

# CentOS 9
wget https://github.com/sudo-project/sudo/releases/download/v1.9.17p1/sudo-python-1.9.17-2.el9.x86_64.rpm
sudo rpm -Uvh sudo-python-1.9.17-2.el9.x86_64.rpm

Ubuntu 20.04:

1
2
3
4
5
# 下载 DEB 包
wget https://github.com/sudo-project/sudo/releases/download/v1.9.17p1/sudo-python_1.9.17-2_ubu2004_amd64.deb

# 安装
sudo dpkg -i sudo-python_1.9.17-2_ubu2004_amd64.deb

Ubuntu 22.04:

1
2
wget https://github.com/sudo-project/sudo/releases/download/v1.9.17p1/sudo-python_1.9.17-2_ubu2204_amd64.deb
sudo dpkg -i sudo-python_1.9.17-2_ubu2204_amd64.deb

Ubuntu 24.04:

1
2
wget https://github.com/sudo-project/sudo/releases/download/v1.9.17p1/sudo-python_1.9.17-2_ubu2404_amd64.deb
sudo dpkg -i sudo-python_1.9.17-2_ubu2404_amd64.deb

Debian 11/12:

1
2
3
4
5
6
7
# Debian 11
wget https://github.com/sudo-project/sudo/releases/download/v1.9.17p1/sudo-python_1.9.17-2_deb11_amd64.deb
sudo dpkg -i sudo-python_1.9.17-2_deb11_amd64.deb

# Debian 12
wget https://github.com/sudo-project/sudo/releases/download/v1.9.17p1/sudo-python_1.9.17-2_deb12_amd64.deb
sudo dpkg -i sudo-python_1.9.17-2_deb12_amd64.deb

方法三:源码编译安装

对于不支持的系统版本,可以从源码编译:

1
2
3
4
5
6
7
8
9
10
11
# 下载源码
wget https://github.com/sudo-project/sudo/releases/download/v1.9.17p1/sudo-1.9.17p1.tar.gz

# 解压
tar -xzf sudo-1.9.17p1.tar.gz
cd sudo-1.9.17p1

# 编译安装
./configure
make
sudo make install

U盘挂载+本地安装方式

在无网络环境下,可以通过U盘传输安装包进行离线安装。

1. 准备U盘

在有网络的计算机上下载对应的安装包到U盘。

📥 根据目标系统选择相应的安装包

方式一:直接点击下载(推荐)

请根据目标系统点击下方链接直接下载到本地,然后复制到U盘:

CentOS/RHEL 系统:

Ubuntu 系统:

Debian 系统:

方式二:使用命令行下载

1
2
3
4
5
6
7
# 示例:下载 Ubuntu 24.04 版本到U盘
cd /path/to/usb
wget https://github.com/sudo-project/sudo/releases/download/v1.9.17p1/sudo-python_1.9.17-2_ubu2404_amd64.deb

# 示例:下载 CentOS 7 版本到U盘
cd /path/to/usb
wget https://github.com/sudo-project/sudo/releases/download/v1.9.17p1/sudo-python-1.9.17-2.el7.x86_64.rpm

2. 检测和挂载U盘

检测U盘设备:

1
2
3
4
5
# 插入U盘前后分别执行,找到新出现的设备
sudo fdisk -l

# 或使用 lsblk 查看块设备
lsblk

创建挂载点:

1
sudo mkdir /mnt/usb

挂载U盘:

1
2
3
4
5
6
7
# 假设U盘设备为 /dev/sdb1
sudo mount /dev/sdb1 /mnt/usb

# 针对不同文件系统
sudo mount -t vfat /dev/sdb1 /mnt/usb # FAT32
sudo mount -t ntfs /dev/sdb1 /mnt/usb # NTFS
sudo mount -t ext4 /dev/sdb1 /mnt/usb # ext4

3. 本地安装

RPM 包安装(CentOS/RHEL):

1
2
3
4
5
# 复制安装包到本地
cp /mnt/usb/sudo-python-1.9.17-2.el7.x86_64.rpm /tmp/

# 安装
sudo rpm -Uvh /tmp/sudo-python-1.9.17-2.el7.x86_64.rpm

DEB 包安装(Ubuntu/Debian):

1
2
3
4
5
# 复制安装包到本地
cp /mnt/usb/sudo-python_1.9.17-2_ubu2404_amd64.deb /tmp/

# 安装
sudo dpkg -i /tmp/sudo-python_1.9.17-2_ubu2404_amd64.deb

4. 卸载U盘

安装完成后,安全卸载U盘:

1
2
3
4
5
6
7
8
9
# 卸载U盘
sudo umount /mnt/usb

# 或者直接指定设备
sudo umount /dev/sdb1

# 如果设备繁忙,强制卸载
sudo fuser -km /mnt/usb
sudo umount /mnt/usb

5. 验证安装

1
2
3
4
5
# 验证新版本
sudo --version

# 测试基本功能
sudo ls /root

总结

重要提醒

  • 升级前建议备份 /etc/sudoers 配置文件
  • 升级后务必验证功能正常性
  • 及时升级对修复 CVE-2025-32462 和 CVE-2025-32463 安全漏洞至关重要
  • 选择安装包时要匹配系统版本和架构
  • 标题: sudo升级指南
  • 作者: Teacat99
  • 创建于 : 2025-07-02 16:53:00
  • 更新于 : 2025-07-03 10:59:27
  • 链接: https://www.teacat99.com/2025/07/02/sudo升级指南/
  • 版权声明: 版权所有 © Teacat99,禁止转载。
评论