sudo -i 模拟完整 root 登录,切换至 /root 并加载其环境变量;sudo -s 仅获取 root 权限但保留当前用户环境,不切换 home 和 path,易导致命令找不到或 d-bus 连接失败。

sudo -i 是最常用且推荐的方式,前提是当前用户在 sudoers 列表中。它能完整加载 root 的环境变量(如 PATH、HOME),避免因路径缺失导致命令找不到(比如 apt、systemctl 报“command not found”)。
sudo -i 和 sudo -s 有什么区别?
-
sudo -i:模拟一次完整的 root 登录,切换到/root目录,加载/root/.bashrc、/root/.profile等配置 -
sudo -s:只获取 root 权限,但保留当前用户的HOME、PWD和 shell 配置,cd默认仍在你原来的家目录
常见错误现象:
- 运行
systemctl status ssh报错 “Failed to connect to bus”,大概率是用了sudo -s而没加载 root 的 D-Bus 环境 -
apt update提示 “command not found”,说明PATH没包含/usr/bin或/bin,通常因未用-i
建议:
- 批量执行多条管理命令 → 用
sudo -i - 就改一个文件或查一个日志 →
sudo cat /var/log/auth.log更安全,不必切 shell
su - 失败时为什么?怎么修?
Ubuntu/Debian 系统默认禁用 root 密码,所以直接运行 su - 会卡在密码输入后报 “Authentication failure”。
Linux系统管理专家,覆盖12大模块:用户权限、SSH、存储、网络、systemd、防火墙、日志监控、备份恢复、TLS证书、Ansible、容器、IaC。提供配置、验证、加固、监控、备份、自动化、故障排查、回滚闭环。关键词:useradd、sudo、sshd_config、chmod、SEL...
验证方式:
- 运行
sudo -l,如果返回权限列表,说明你有 sudo 权限,su -不是必须的 - 运行
sudo passwd root可手动启用 root 密码(不推荐长期启用)
注意:
- 启用 root 密码后,
su -才能用,但每次系统更新可能重置安全策略 - 某些云镜像(如 AWS Ubuntu AMI)甚至屏蔽了
su二进制,只允许sudo
切换后改完权限,怎么安全退出?
运行 exit 即可退回上一个用户,终端提示符会从 # 变回 $。
不要靠关终端或 Ctrl+C 退出,否则可能残留未结束的 root 进程(比如后台 tail -f 或 vim)。
容易被忽略的一点:
-
sudo -i启动的是登录 shell,exit会清空该 shell 的所有环境; - 但如果你用
sudo su -,本质是两层嵌套(sudo 启 su,su 再启 shell),exit一次只能退一层 —— 此时要连按两次exit才能彻底回到普通用户。










