su -
命令切换root身份或sudo
命令临时获取管理员权限执行特定任务,sudo
可审计操作更安全。在Linux系统中,root
账户是拥有最高权限的超级用户,可执行所有操作(包括系统级修改)。但直接使用root存在极高风险,可能导致系统崩溃、数据丢失或安全漏洞,以下是详细指南:
为何不推荐直接使用root?
- 安全风险
- 一条错误命令(如
rm -rf /*
)可瞬间摧毁整个系统。 - 恶意软件若以root权限运行,将完全控制设备。
- 一条错误命令(如
- 操作不可逆
root权限的操作通常绕过安全提示,无二次确认。 - 违反最小权限原则
多数日常任务无需root权限,使用普通账户更安全。
直接使用root的方法(谨慎操作)
方法1:临时切换root(推荐替代方案)
# 输入当前用户密码临时获取root权限(默认15分钟有效) sudo -i # 或执行单条root命令 sudo <命令>
方法2:启用root登录(高风险!)
步骤1:设置root密码
sudo passwd root # 设置密码(首次需当前用户sudo权限)
步骤2:启用root登录
-
图形界面(如Ubuntu GNOME)
- 修改配置文件:
sudo nano /etc/gdm3/custom.conf
- 在
[security]
下添加:AllowRoot=true
- 重启系统,登录界面选择”Not Listed?” → 输入用户名
root
。
- 修改配置文件:
-
命令行(SSH/TTY)
- 允许root通过SSH登录:
sudo nano /etc/ssh/sshd_config
修改为:
PermitRootLogin yes
- 重启SSH服务:
sudo systemctl restart sshd
- 允许root通过SSH登录:
安全使用root的关键措施
- 仅限必要场景
如系统修复、内核级调试,日常操作禁用root。 - 强密码策略
使用16位以上混合密码(字母+数字+符号),定期更换。 - 限制访问来源
- 通过
/etc/hosts.allow
限制root仅允许特定IP登录。 - 禁用SSH密码登录,改用密钥认证:
sudo nano /etc/ssh/sshd_config
设置:
PasswordAuthentication no PermitRootLogin prohibit-password # 仅允许密钥登录
- 通过
- 启用操作审计
记录root所有命令,便于追踪问题:sudo nano /etc/profile
添加:
export HISTTIMEFORMAT="%F %T " export PROMPT_COMMAND='history -a'
更安全的替代方案
- sudo机制
- 将用户加入
sudo
组(Ubuntu默认):sudo usermod -aG sudo <用户名>
- 精细控制权限:编辑
/etc/sudoers
,限制用户仅运行特定命令。
- 将用户加入
- 权限隔离
- 使用
capabilities
赋予进程部分特权(如setcap
)。 - 用
systemd
服务限制守护进程权限。
- 使用
除非绝对必要,否则永远不要直接使用root账户。 Linux设计sudo
的初衷是为平衡权限与安全,若必须启用root:
- 启用后立即禁用:
sudo passwd -dl root
- 定期审查
/var/log/auth.log
监控异常登录。 - 遵循最小权限原则,优先使用普通账户+
sudo
。
引用说明基于Linux官方文档(kernel.org)、Ubuntu安全指南(ubuntu.com)及Red Hat最佳实践(redhat.com),技术细节参考
man sudoers
、man sshd_config
等权威手册。
原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/37675.html