马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
Linux 是多用户系统,日常用普通账户登录,遇到要改配置、装软件、动系统目录的操作才需要 root 权限。这里把普通用户切到 root 的几种方式一次讲清楚:su 命令怎么用、跟 sudo 有什么区别、切换之后提示符为什么会变,以及用完怎么退回来。
su 是什么
su 全名 Switch User,作用就是切换当前会话身份。不带参数直接敲 su,默认切到 root;带用户名则是切到那个用户。
su
回车之后系统会要求输入 root 的密码,输对了就完成切换。
推荐写法:su - 而不是裸 su
这是个容易忽略但影响很大的细节。su 和 su -(注意横杠)行为不一样:
| 命令 | 环境变化 | 适用场景 |
su | 只切身份,环境变量、工作目录沿用原来用户的 | 临时执行一条命令 |
su - | 完整加载 root 的环境,回到 root 家目录 | 要长时间以 root 身份操作 |
实际排障时差别很明显:su 之后你可能还在普通用户的家目录下,ls 看到的是自己的文件;而 su - 直接进 /root,配置文件路径也对得上。多数手册里说的"切到 root"默认指 su -。
切换成功的标志
密码输对之后,终端提示符会从普通用户的结尾符号变成 #:
# 切换前(普通用户)
[user@server ~]$
# 切换后(root)
[root@server ~]#
看到 # 就说明已经是 root 身份了。此时你对系统里几乎所有文件和设置都有完全访问权限,包括删除、改权限、重装系统组件。
用完记得退回来
完成需要 root 权限的操作后,及时退出 root 回到普通用户:
exit
如果你是从普通用户 su 到 root 的,在 root 下执行 exit 会退回到切换前那个普通账户;多层嵌套的话,多敲几次就一层层退回去了。这一点在做多节点操作时尤其要养成习惯——长时间挂着 root 会话,一个 rm -rf 敲错就是整台机器。
su 和 sudo 怎么选
很多新手会问:既然能 su,为什么还有 sudo?两者定位和风险完全不同:
- su 是全量切换。拿到 root 后可以做任何事,包括删库跑路;密码是 root 自己的,出了问题不好追到人。
- sudo 是按需提权。普通用户在自己会话里,只对单条命令临时提权,还能按命令粒度授权给不同人。
# 单条命令提权,输自己的密码即可
sudo systemctl restart nginx
# 以指定用户身份跑一条命令
sudo -u 用户名 命令
生产环境的一般做法:日常登录一律普通用户,需要装服务、改系统配置时前缀 sudo;确实要进入 root 环境再 su -,并且用完立刻 exit。多人共用一台跳板机的情况下,sudo 的审计能力比 su 更实用。
切不进去时的排查
- 提示"密码不正确"。先确认你输的是 root 的密码而不是自己账户的密码;另外 Linux 下输入密码默认不显示任何字符,看着像没反应其实已经在输。
- 提示用户不存在。说明目标用户被删了或者名字拼错,
/etc/passwd 里能查到全量账号列表。
- root 被禁用登录。部分安全加固的发行版默认禁 root 直登,只能走
sudo,这时 su 就会失败,属于预期行为。
- 切进去马上掉出来。检查
/etc/pam.d/ 下的相关限制,或者该账户是否被设了过期时间。
qidao123.com企服评测-应用市场 编辑提示
本文由齐道123 IT 运维社区整理,说明 Linux 下普通用户切换 root 的常用方式与 su / sudo 的取舍。请仅在自己拥有或已获授权的机器上操作系统账户,切换 root 后请勿执行未经确认的删除、格式化或批量变更操作;多人共用环境时建议优先使用 sudo 按需提权并保留操作记录。
|