插件窝 干货文章 linux su命令什么意思

linux su命令什么意思

用户 root 目标 切换 321    来源:    2025-04-28

suLinux/Unix 系统中一个重要的命令,全称为 "Switch User"(切换用户)。它允许当前用户在不注销的情况下切换到另一个用户身份(通常是超级用户 root),并继承目标用户的环境变量和权限。


基本语法

su [选项] [用户名]
  • 若不指定用户名,默认切换到 root 用户。
  • 需要输入目标用户的密码(若从普通用户切换)。

常用选项

选项 作用
--l--login 模拟登录目标用户,加载其环境变量(如 HOME, PATH 等)
-c 以目标用户身份执行单条命令后退出(例如:su -c "ls /root" root
-s 指定要运行的 Shell(如 su -s /bin/bash user

常见用法示例

  1. 切换到 root 用户(需输入 root 密码):

    su -
    

    注意:使用 - 会加载 root 的环境变量(推荐方式)。

  2. 切换到其他用户(如切换到用户 alice):

    su - alice
    
  3. 以 root 身份执行单条命令

    su -c "apt update" root
    
  4. 返回原用户

    exit
    

sudo 的区别

  • su:直接切换到目标用户(需知道目标用户的密码),默认不保留当前环境。
  • sudo:以目标用户(默认 root)权限执行单条命令(需输入当前用户密码,且需配置权限)。

安全提示

  1. 避免直接使用 su 登录 root
    推荐通过 sudo 分配权限,减少滥用 root 的风险。
  2. 密码保护
    su 需要目标用户密码,确保密码强度足够高(尤其是 root)。

故障排查

  • "Authentication failure":密码错误或目标用户被锁定。
  • "su: cannot set groups":权限配置问题,检查 /etc/pam.d/su 或用户组设置。

如果需要进一步限制 su 的使用,可以通过 /etc/pam.d/suwheel 用户组(某些系统)进行配置。