在 Linux 中,sudosu 和 su - 都与权限切换相关,但用途和效果不同


1. sudo

普通用户执行特权命令

sudo command
以 root 权限执行单条命令

需要输入 当前用户的密码

权限由 /etc/sudoers 文件控制

执行后环境变量保持当前用户不变

    示例:

    sudo apt update  # 以 root 权限更新软件包列表

    2. su (Switch User)

    切换到其他用户(默认 root)

    su [用户名]
    切换到指定用户(不指定则切换到 root)
    
    需要输入 目标用户的密码
    
    保持 当前的工作目录和环境变量
    
    主要用于用户身份切换

      示例:

      su          # 切换到 root(需 root 密码)
      su alice    # 切换到用户 alice(需 alice 的密码)

      3. su - (su + 登录 shell)

      切换到其他用户的登录环境

      su - [用户名]
      连字符 - 或 -l 表示登录 shell
      
      需要输入 目标用户的密码
      
      切换到目标用户的 家目录
      
      加载目标用户的 完整环境变量(~/.bashrc, ~/.profile 等)
      
      类似于重新登录

        示例:

        su -        # 切换到 root 的登录环境
        su - alice  # 切换到 alice 的登录环境

        对比表格

        命令 需要密码 环境变量 工作目录 典型用途
        sudo cmd 当前用户密码 当前用户环境 当前目录 临时执行特权命令
        su 目标用户密码 当前用户环境 当前目录 切换用户身份但保持环境
        su - 目标用户密码 目标用户环境 目标用户家目录 完全切换到目标用户环境

        使用建议

        • 日常管理:使用 sudo 执行单条特权命令(更安全,有操作日志)

        • 需要 root shell:使用 sudo -i 或 sudo su -(比直接 su - 更安全)

        • 完全切换用户环境:使用 su - username

        • 临时切换身份:使用 su username


        安全提示

        # 推荐的安全做法:
        sudo -i          # 切换到 root 的登录环境(使用当前用户密码)
        sudo -u alice bash  # 以 alice 身份启动 shell
        
        # 不推荐(除非必要):
        直接使用 root 密码通过 su/su - 切换

        最佳实践:配置 sudo 权限给普通用户,避免共享 root 密码,使用 sudo 代替直接 su 到 root。

        Logo

        魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

        更多推荐