Root 用户是 Linux 系统中的超级管理员(UID=0),拥有对系统的完全控制权。但不同 Linux 发行版对 root 账户的"态度"差异很大——有的锁定 root、强制你用 sudo,有的让你自己设密码,有的甚至默认就能直接 root 登录
Root 本身永远存在,但能否直接登录、密码是否设置、SSH 是否放行、管理员组叫什么名——每个发行版各有各的规矩。 运维人员在不同发行版之间切换,常常被这些差异绊一跤。本文覆盖 12 个主流 Linux 发行版(含国产系统),一次性讲透
在深入各发行版之前,先理清三个关键概念:
! 或 *,无法通过密码登录,但可通过 sudo 或 su(从已有会话)切换查看命令:passwd -S rootsudo 临时提权,不需要知道 root 密码查看命令:sudo -l小贴士: passwd -S root输出中,L表示锁定(Locked),P表示有密码可用(Password set),NP表示无密码。
策略:完全锁定 root,一切靠 sudo。
这是对新手最友好的策略,也是 Ubuntu 的一大设计哲学:
passwd -S root 显示 L)sudo 组,通过 sudo 提权PermitRootLogin prohibit-password)# 查看 root 状态$ sudo passwd -S rootroot L 01/01/2025 0 99999 7 -1# 查看当前用户是否在 sudo 组$ groupswarrior adm cdrom sudo dip plugdev ...# 如果需要启用 root 账户(不推荐)$ sudo passwd root# 切换到 root shell(推荐方式)$ sudo -i常见坑:刚装完 Ubuntu 忘记普通用户密码?进 recovery mode(grub 选 Advanced → recovery → root),直接用 passwd改——recovery shell 就是 root,不需要密码。
策略:安装时让你自己选。
Debian 的安装程序给了用户选择权:
PermitRootLogin 默认为 prohibit-password(只能用密钥)# Debian 中手动给用户添加 sudo 权限$ su - # 切到 root(需要 root 密码)# usermod -aG sudo warrior# exit$ newgrp sudo # 刷新组权限,或直接重新登录su -策略:传统的 root + 普通用户双轨制。
红帽系发行版沿用了最传统的 Unix 做法:
wheel 组才能使用 sudo/etc/ssh/sshd_config 文件中含注释行 #PermitRootLogin prohibit-password,OpenSSH 二进制编译时默认值也为 prohibit-password。但云厂商镜像和 Anaconda 安装器常显式取消注释并设为 yes,导致实际放行 root 登录。务必以 sshd -T | grep permitrootlogin 输出为准,不可假设——生产环境建议显式设为 no# 给普通用户添加 sudo 权限(RHEL 系用 wheel 组)$ su -# usermod -aG wheel warrior# exit$ newgrp wheel # 或重新登录# 验证$ groups warriorwarrior : warrior wheel# 生产环境建议:关闭 root SSH 登录(#\? 同时覆盖被注释的默认值)$ sudo sed -i 's/^#\?PermitRootLogin.*/PermitRootLogin no/' /etc/ssh/sshd_config$ sudo systemctl restart sshd重要差异:RHEL 系用 wheel组,Debian 系用sudo组。千万别搞混。CentOS 7 已停更,建议迁移到 Rocky Linux 9 或 AlmaLinux 9。
策略:和 Ubuntu 一样锁定 root,但用 wheel 组。
Fedora 虽然是红帽系,但策略上更像 Ubuntu:
wheel 组PermitRootLogin prohibit-password)# Fedora 的 sudoers 配置$ sudo grep -vE '^#|^$' /etc/sudoersroot ALL=(ALL) ALL%wheel ALL=(ALL) ALL# 和 Ubuntu 的对应关系# Ubuntu: %sudo ALL=(ALL:ALL) ALL# Fedora: %wheel ALL=(ALL) ALL策略:你自己决定一切。
Arch 没有任何预设策略——安装过程是你手动敲命令完成的:
passwd 设置 root 密码是基础安装步骤之一(arch-chroot 后的最后几步)pacstrap 后需手动安装 sudo 包并编辑 /etc/sudoersopenssh,默认 PermitRootLogin prohibit-password# Arch 安装时典型流程(chroot 之后)arch-chroot /mntpasswd # 步骤1:设置 root 密码(必做!)useradd -m -G wheel warrior # 步骤2:创建用户并加入 wheel 组passwd warrior # 步骤3:设置用户密码pacman -S sudo # 步骤4:安装 sudoEDITOR=nano visudo # 步骤5:取消 %wheel ALL=(ALL:ALL) ALL 的注释exitArch 警示:安装时忘设 root 密码?root 账户密码字段为空,任何能接触到系统的人都能直接 su进去。装完第一时间用passwd -S root确认状态。
策略:传统 root + 自定义 sudo 配置。
openSUSE 的 root 策略走传统路线(安装时强制设置 root 密码),但 sudo 配置方式与其他主流发行版不同:
visudo 添加用户。现代 openSUSE 默认 /etc/sudoers 中不启用 %wheel 行prohibit-password。以 sshd -T | grep permitrootlogin 输出为准# openSUSE 中配置 sudo(推荐用 visudo 直接添加用户,不依赖组)$ su -# visudo# 在文件中添加一行:# warrior ALL=(ALL) ALL# 保存退出# exit# 也可以通过 YaST 图形界面配置$ sudo yast2 sudo关键差异:openSUSE 的 /etc/sudoers中虽 ships 着被注释的%wheel行,但默认不启用。实践中 sudo 权限通过visudo直接添加用户或 YaST 模块管理,不可将其归入 wheel 组阵营。
策略:极简到只给 root。
Alpine 以精简著称,常用于 Docker 容器:
apk add sudoopenssh,PermitRootLogin 默认为 prohibit-password(与上游 OpenSSH 一致)。容器场景中常因未装 sshd 而误判为无 SSH 策略# Alpine 中创建普通用户并配置 sudo$ adduser -D warrior$ passwd warrior$ apk add sudo$ addgroup wheel # Alpine 默认无 wheel 组,需先创建$ adduser warrior wheel# 或直接用 doas 替代 sudo(更轻量,推荐 Alpine 场景)$ apk add doas$ addgroup wheel && adduser warrior wheel$ echo 'permit persist :wheel' > /etc/doas.d/doas.conf生产建议:容器中使用 Alpine 时,务必在 Dockerfile 中创建非 root 用户并 USER切换。
FROM alpine:latestRUN adduser -D -g '' appuserUSER appuserWORKDIR /home/appuserCOPY --chown=appuser:appuser . .CMD ["./app"]国产 Linux 发行版大多基于国际主流发行版深度定制,root 策略既继承了上游发行版的基因,又有自己的"本地化"特点
策略:Ubuntu/Debian 基因 + 更严格的安全控制。
UOS 基于 Deepin 深度开发,而 Deepin 又基于 Debian,所以它的 root 机制和 Debian/Ubuntu 一脉相承,但更严格:
sudo 组# UOS 查看 root 状态(和 Ubuntu 完全一致)$ passwd -S rootroot L ...# 需要临时提权(推荐)$ sudo -i# 如果需要永久启用 root(需先开启开发者模式)$ sudo passwd root# UOS 独有的开发者模式检查$ cat /var/lib/deepin/developer-mode/enabled # 1=已开启UOS 特别注意:即使你在 sudo组里,没有开启开发者模式时,部分系统级操作(如安装未签名驱动、修改系统底层配置)依然会被拦截。这是 UOS 在 Debian 基础上额外加的一层安全锁。
⚠️ 关键前置知识:麒麟旗下存在多个产品,名称相似但技术路线截然不同。
在讨论 root 策略之前,必须先区分以下三个产品:
常见误解:银河麒麟桌面版 V10 仍使用 .deb包和apt管理器,这让人误以为它等同于某个 Ubuntu 版本。实际上 V10 已不再直接对应任何一个 Ubuntu LTS。运维时应以/etc/os-release和官方文档为准,不可预设其为任何特定发行版的衍生品。历史上 V4 及之前版本确实基于 Ubuntu(如 Kylin 4.0 → Ubuntu 16.04),但 V10 已切换技术栈。
如何准确判断你的系统?
# 查看发行版信息(确认你面对的是哪个产品)cat /etc/os-release# 优麒麟:ID=ubuntu, ID_LIKE=ubuntu# 银河麒麟桌面版:ID=kylin, VERSION_ID=V10# 银河麒麟服务器版:ID=kylin,且 which dnf 有结果(用 dnf 包管理)# 查看内核版本uname -r# 优麒麟:5.4.x / 5.15.x(Ubuntu 标准内核)# 银河麒麟桌面版:4.19.x / 5.4.x(自研内核,版本取决于 SP 子版本)# 银河麒麟服务器版:4.19.x / 5.10.x(openEuler 内核)# 查看详细构建来源lsb_release -a策略:就是 Ubuntu,一切和对应的 Ubuntu LTS 一致。
优麒麟是 Ubuntu 官方承认的衍生版(Canonical 官方 flavor),root 策略和 Ubuntu 完全相同:
lsb_release -a 确认sudo 组# 优麒麟 V10 —— 就是 Ubuntu$ cat /etc/os-release | grep IDID=ubuntuUBUNTU_CODENAME=focal # 20.04 = focal$ groupswarrior adm cdrom sudo ...$ sudo -i # 一切照旧策略:社区分析认为融合 Debian/Ubuntu 混合定制 + openEuler 安全组件(官方未明确定义上游来源),root 锁定。
这是信创场景最常见的麒麟桌面系统。虽然用 apt 和 .deb,但不是 Ubuntu:
/etc/os-release 和官方文档为准sudo 组(继承 Debian 血统)# 银河麒麟桌面版 V10$ cat /etc/os-release | grep -E '^(ID|VERSION)'ID=kylinVERSION_ID="V10"$ groupswarrior adm cdrom sudo ...$ sudo -i # 提权到 root# 启用以 root 登录图形界面(不推荐日常使用)$ sudo passwd root$ sudo sed -i 's/#greeter-show-manual-login=false/greeter-show-manual-login=true/' /etc/lightdm/lightdm.conf策略:openEuler 换皮,传统 root + wheel 组。
服务器版 SP1/SP2/SP3 全线基于 openEuler:
wheel 组(openEuler 血统)dnf(而非 apt)# 银河麒麟高级服务器版 V10 —— 和 openEuler/CentOS 操作一致$ su -# usermod -aG wheel warrior# exit$ newgrp wheel# 安全加固$ sudo sed -i 's/^#\?PermitRootLogin.*/PermitRootLogin no/' /etc/ssh/sshd_config$ sudo systemctl restart sshd运维提示:面对一台麒麟 V10 机器,先跑 cat /etc/os-release+which dnf apt。桌面板用apt+sudo组,服务器版用dnf+wheel组——同一个"麒麟 V10"品牌下,操作方式完全分裂,这是最容易踩的坑。
策略:传统 RHEL 风格,完全自主可控。
openEuler 最初 fork 自 CentOS,但现在已经是完全独立的发行版(内核、编译器、包管理都有自研成分):
wheel 组(和 RHEL 一致)PermitRootLogin yes。以 sshd -T | grep permitrootlogin 输出为准,生产环境建议显式设为 nodnf(和 Fedora/RHEL 8+ 一致)# openEuler 基本操作 —— 和 CentOS/Rocky Linux 完全一致$ cat /etc/openEuler-releaseopenEuler release 24.03 LTS# 查看 root 状态$ sudo passwd -S root # 或 su - 后 passwd -S rootroot P 01/01/2024 0 99999 7 -1# 给普通用户添加 sudo 权限$ su -# usermod -aG wheel warrior# exit$ newgrp wheel# 安全加固:关闭 root SSH(生产必做,#\? 覆盖注释态默认值)$ sudo sed -i 's/^#\?PermitRootLogin.*/PermitRootLogin no/' /etc/ssh/sshd_config$ sudo systemctl restart sshdopenEuler 定位:主要用于服务器和数据中心场景,桌面版市场份额不大。如果你从 CentOS 迁移过来,操作习惯几乎零成本——同样的 dnf、wheel组、systemd,无缝切换。
国产操作系统在标准 Linux 权限模型之外,额外加入了一些"中国特色"的安全机制:
secPaver 框架openEuler 和一些高安全版本的麒麟支持"三权分立"安全模型:

传统的 root 被拆成三个角色,互相制衡,防止单一管理员权限过大。这是等保三级以上系统的硬性要求
# openEuler 中启用三权分立(需安装 secPaver)$ sudo dnf install secpaver$ sudo secpaver init# 之后 root 的部分权限会被 sysadm/secadm/auditadm 分走sudo安装时设 Root 密码:❌ 否Root SSH 默认:禁止密码sudo 预装:✅备注:最流行桌面sudo安装时设 Root 密码:🔧 可选Root SSH 默认:禁止密码sudo 预装:✅备注:服务器首选wheel安装时设 Root 密码:✅ 是Root SSH 默认:允许⚠️sudo 预装:✅备注:企业标准wheel安装时设 Root 密码:❌ 否Root SSH 默认:禁止密码sudo 预装:✅备注:技术前沿wheel安装时设 Root 密码:🔧 手动Root SSH 默认:禁止密码sudo 预装:❌备注:极客专属wheel安装时设 Root 密码:✅ 是Root SSH 默认:禁止密码(若安装 sshd)sudo 预装:❌备注:容器之王sudo安装时设 Root 密码:❌ 否Root SSH 默认:禁止sudo 预装:✅备注:Deepin → Debiansudo安装时设 Root 密码:❌ 否Root SSH 默认:禁止sudo 预装:✅备注:=Ubuntu(官方flavor)sudo安装时设 Root 密码:❌ 否Root SSH 默认:禁止sudo 预装:✅备注:自研+Debian混合,非Ubuntuwheel安装时设 Root 密码:✅ 是Root SSH 默认:允许⚠️sudo 预装:✅备注:openEuler 20.03/22.03 LTSwheel安装时设 Root 密码:✅ 是Root SSH 默认:允许⚠️sudo 预装:✅备注:华为自研 + dnf 生态⚠️ 标注"允许"的发行版,生产环境请务必关闭 root SSH 登录。
理解各发行版之间的"血缘关系",能帮你更快预判 root 策略:

简单记忆法:
sudo 组 → Debian/Ubuntu 血统(含 UOS、优麒麟、银河麒麟桌面版)wheel 组 → RHEL 血统(含 Rocky、Fedora、openEuler、银河麒麟高服版)wheel 组,sudo 权限通过 visudo 直接添加用户或 YaST 管理apt + sudo 组,但官方未定义上游来源,不可盲目套用 Ubuntu 配置⚠️ 风险提示:以下操作涉及系统核心安全配置(sshd_config、sudoers 等)。执行前请确保: 1. 已在测试环境验证 2. 有控制台/TTY 访问权限作为兜底(防止 SSH 被锁后无法恢复) 3. 操作 sudoers时务必使用visudo而非直接编辑文件
# 适用于所有发行版的探查脚本echo "=== 系统信息 ==="cat /etc/os-release 2>/dev/null | head -3echo ""echo "=== Root 账户状态 ==="passwd -S root 2>/dev/null || sudo passwd -S root 2>/dev/nullecho ""echo "=== 当前用户组 ==="groupsecho ""echo "=== Sudo 管理员组配置 ==="sudo grep -E '^[%#]*(sudo|wheel)' /etc/sudoers 2>/dev/nullecho ""echo "=== Root SSH 策略 ==="sudo grep '^PermitRootLogin' /etc/ssh/sshd_config 2>/dev/null || echo "SSH 未安装或无权限"echo ""echo "=== 开发者模式(UOS 专用)==="cat /var/lib/deepin/developer-mode/enabled 2>/dev/null || echo "非 UOS 系统,跳过"无论哪个发行版,生产环境都建议执行以下加固:
# 1. 禁止 root SSH 登录sudo sed -i 's/^#\?PermitRootLogin.*/PermitRootLogin no/' /etc/ssh/sshd_config# 2. 禁止空密码登录sudo sed -i 's/^#\?PermitEmptyPasswords.*/PermitEmptyPasswords no/' /etc/ssh/sshd_config# 3. 重启 SSH 服务(注意不同发行版服务名不同)sudo systemctl restart sshd 2>/dev/null || sudo systemctl restart ssh 2>/dev/null# 4. 验证sudo sshd -T | grep -E '(permitrootlogin|permitemptypasswords)'# UOS 容器(基于 Deepin)FROM linuxdeepin/beige:latestRUN useradd -m -G sudo appuserUSER appuser# openEuler 容器FROM openeuler/openeuler:24.03RUN useradd -m -G wheel appuserUSER appuser# ⚠️ 以下 NOPASSWD 配置仅限本地开发调试环境!# 生产容器请使用更安全的模式:# 方案A:多阶段构建——builder 阶段用 root,最终镜像用非 root# 方案B:不安装 sudo,运行时用 docker run --user 指定 UIDFROM alpine:latestRUN addgroup -S wheel && \ adduser -D -G wheel appuser && \ apk add --no-cache sudo# ❌ 高危:生产禁止以下行# RUN echo 'appuser ALL=(ALL) NOPASSWD:ALL' > /etc/sudoers.d/appuserUSER appusersu 失败su: Authentication failure解决:root 被锁定,用 sudo su - 或 sudo -isudo 不可用user is not in the sudoers file解决:用户不在 wheel 组,su - 后 usermod -aG wheel 用户名cat /etc/os-release:ID=ubuntu=优麒麟,ID=kylin=银河麒麟sudo 和 wheel 混淆sudo 组,高服版用 wheel 组USER 切换/etc/sudoers 改坏了pkexec visudo 修复,或进 recovery/rescue 模式sed -i 's/^#\?PermitRootLogin.*/PermitRootLogin no/' /etc/ssh/sshd_config/etc/secpaver/核心记住三句话:
sudo 组,RHEL 系用 wheel 组sudo,openEuler/银河麒麟高服版=RHEL 族=wheel)passwd -S root 看一眼apt + sudo 组是表象,底层是混合架构,做安全加固/软件适配时必须查官方文档快速排查四板斧:
passwd -S root # root 账户状态groups # 你当前的组sudo -l # 你的 sudo 权限范围grep PermitRoot /etc/ssh/sshd_config # SSH root 登录策略sudo 组ID=ubuntu,操作零差异sudo 组但不可套用 Ubuntu 配置wheel 组 + dnf,操作和 CentOS 一样wheel 组 + 三权分立如果这篇文章对你有帮助,欢迎关注公众号「运维技术小记」,每周更新实用运维技术教程,做你身边的运维知识库。有想了解的国产系统相关话题,也欢迎留言告诉我们。