Ubuntu中更换用户命令详解,从基础到安全实践

admin
Ubuntu中更换用户命令以susudo为核心:su用于切换至目标用户(需输入目标用户密码),su -可同时切换环境变量;sudo以管理员权限执行命令(需当前用户密码),sudo -i提供交互式root登录,安全实践方面,应避免直接root登录,通过/etc/sudoers精细控制权限(如限制命令范围),定期审计/var/log/auth.log日志,使用强密码并禁用闲置账户,确保权限最小化原则,兼顾操作便捷与系统安全。

在Linux系统管理中,用户切换是一项基础且高频的操作,无论是系统维护、权限管理,还是日常开发,都经常需要在不同用户身份间切换,Ubuntu作为最受欢迎的Linux发行版之一,提供了多种用户切换命令,其中最核心的是susudo,本文将详细介绍这两个命令的使用方法、场景差异及安全注意事项,帮助您掌握Ubuntu中的用户切换技巧。

为什么需要更换用户?

在理解具体命令前,先明确用户切换的常见场景:

  • 权限管理:普通用户执行需要root权限的操作(如安装软件、修改系统配置),需临时提升权限。
  • 系统维护:管理员需要切换到其他普通用户账户,排查问题或执行特定任务。
  • 安全隔离:避免长期使用root用户,减少误操作风险(root拥有系统最高权限)。
    -多用户环境:在共享服务器上,不同用户需切换到自己的账户进行操作。

核心命令1:su——切换用户身份

su(Substitute User)是Linux中最基础的命令,用于切换到其他用户账户,包括root用户。

Ubuntu中更换用户命令详解,从基础到安全实践

基本语法

su [选项] [用户名]
  • 选项:控制切换行为(详见下文)。
  • 用户名:目标用户,若省略则默认切换到root(但需输入root密码)。

常用选项与示例

(1)切换到目标用户(不加载环境变量)

su username

执行后,会输入目标用户的密码,切换成功后保持当前终端环境(如不加载目标用户的.bashrc等配置文件)。

示例:切换到test用户:

su test
# 输入test用户的密码后,终端提示符可能不变,但身份已切换

(2)登录式切换(推荐):su -su -l

su - username  # 等同于 su -l username

这是最安全、最常用的切换方式:

  • 会加载目标用户的完整环境变量(如.bashrc.profile等),模拟“重新登录”的效果。
  • 终端提示符会显示目标用户名和主机名(如test@ubuntu:~$),明确当前身份。

示例:登录式切换到test用户:

su - test
# 输入test用户密码后,提示符变为 test@ubuntu:~$

(3)切换到root用户

su  # 默认切换到root,需输入root密码
su -  # 登录式切换到root,推荐使用

注意:Ubuntu默认不启用root账户(即root用户无密码或被锁定),若需使用root,可通过sudo passwd root设置root密码(不推荐长期启用)。

(4)仅执行命令后退出:su -c

su -c "command" username

以目标用户身份执行单条命令,执行后自动返回原用户,无需完整切换。

示例:以test用户身份创建文件test.txt

su -c "touch /home/test/test.txt" test
# 输入test用户密码后,文件创建完成,终端仍回到原用户

su的注意事项

  • 密码安全su需要输入目标用户的密码,若频繁切换root,需确保root密码强度足够(或避免长期使用root)。
  • 环境差异:非登录式切换(su username)可能导致环境变量缺失,引发命令异常,推荐优先使用su -

核心命令2:sudo——临时提升权限

sudo(Superuser do)是Ubuntu推荐的权限管理工具,允许授权用户以其他用户(通常是root)身份执行命令,而无需知道目标用户的密码(仅需输入当前用户的密码)。

基本语法

sudo [选项] [命令]
  • 选项:控制权限提升行为(如-u指定目标用户、-i模拟登录shell)。
  • 命令:需要以高权限执行的命令(如apt updatesystemctl restart)。

常用场景与示例

(1)普通用户执行root权限命令

sudo apt update  # 更新软件包列表,需输入当前用户密码
sudo systemctl restart nginx  # 重启nginx服务

执行时,系统会提示输入当前用户的密码(验证身份),密码输入后不会显示(无星号提示),验证通过后即可执行命令。

(2)指定目标用户执行命令

sudo -u username command

以其他普通用户身份执行命令(而非root),适用于需要模拟特定用户操作的场景。

示例:以test用户身份查看其家目录文件:

sudo -u test ls /home/test
# 输入当前用户密码后,显示test用户的家目录内容

(3)切换到root shell(临时)

sudo -i  # 模拟root用户的登录shell,加载root的环境变量
sudo su -  # 等同于 sudo -i,但底层调用su命令

su -的区别:sudo -i不需要root密码(只需当前用户密码),且更安全(通过sudoers文件控制权限)。

(4)查看当前用户的sudo权限

sudo -l

列出当前用户可以通过sudo执行的所有命令(由/etc/sudoers配置文件定义)。

sudo的权限配置(关键)

Ubuntu默认将新用户加入sudo组,使其拥有sudo权限,若需调整权限,可编辑/etc/sudoers文件(推荐使用visudo命令编辑,避免语法错误):

sudo visudo

常见配置示例:

  • 允许用户test执行所有命令(不
文章版权声明:除非注明,否则均为xmsdn原创文章,转载或复制请以超链接形式并注明出处。

取消
微信二维码
微信二维码
支付宝二维码