news 2026/6/11 1:59:53

Linux命令:su

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Linux命令:su

su 命令

基本介绍

su(Switch User)是 Linux 系统中用于切换用户身份的命令。它允许用户在当前会话中切换到另一个用户账户,包括 root 用户。su是系统管理员进行特权操作的重要工具。

资料合集:https://pan.quark.cn/s/6fe3007c3e95https://pan.quark.cn/s/561de99256a5https://pan.quark.cn/s/985f55b13d94https://pan.quark.cn/s/d0fb20abd19a

语法

su [OPTIONS] [USERNAME]

常用选项

基本选项

  • -c, --command=COMMAND:执行指定命令后返回原用户
  • -f, --fast:不读取启动文件(如 .bashrc)
  • -h, --help:显示帮助信息
  • -l, --login:模拟完整登录(读取目标用户的环境变量)
  • -m, --preserve-environment:保留当前环境变量
  • -p:与-m相同
  • -s, --shell=SHELL:指定登录shell
  • -V, --version:显示版本信息
  • -(连字符):等同于-l选项

使用示例

1. 切换到 root 用户

su

输出示例:

Password:

2. 切换到指定用户

suusername

3. 切换用户并模拟完整登录

su- username

4. 执行单个命令后返回

su-c"command"su-c"ls -l /root"

5. 切换用户不读取启动文件

su-fusername

6. 切换用户并保留环境变量

su-musername

7. 指定登录shell

su-s/bin/zsh username

8. 切换到 root 并执行多个命令

su<<EOF echo "Current user:$(whoami)" ls -l /root EOF

9. 从脚本中切换用户执行命令

#!/bin/bash# 切换到 root 用户执行命令su-c"apt-get update && apt-get upgrade -y"

输出格式说明

成功执行

# 无输出,直接切换到目标用户

错误输出示例

su: Authentication failure su: user 'invalid_user' does not exist

切换后验证

whoami# 输出: rootid# 输出: uid=0(root) gid=0(root) groups=0(root)

工作原理

切换用户的流程

# 1. 查看当前用户whoami# 2. 切换到 root(需要密码)su# 3. 输入密码后验证whoami# 4. 执行特权操作apt-getupdate# 5. 退出回到原用户exit# 6. 验证已回到原用户whoami

su 与 su - 的区别

特性su usernamesu - username
环境变量保留当前环境加载目标用户环境
工作目录保持不变切换到目标用户主目录
启动文件不读取读取 .bashrc 等
登录shell

实用技巧

在脚本中安全切换用户

#!/bin/bash# 检查是否为 rootif["$(id-u)"-ne0];thenecho"This script must be run as root"exit1fi# 切换到普通用户执行命令su- username-c"cd /home/username && git pull"

使用 sudo 替代 su

# 使用 sudo 执行单条命令sudoapt-getupdate# 使用 sudo 切换到 root shellsudo-i# 使用 sudo 切换到其他用户sudosu- username

检查用户是否存在

#!/bin/bashUSERNAME="john"ifid"$USERNAME"&>/dev/null;thenecho"User$USERNAMEexists"su-"$USERNAME"elseecho"User$USERNAMEdoes not exist"exit1fi

批量执行命令

#!/bin/bash# 切换到 root 执行多个命令su<<EOF echo "=== Updating system ===" apt-get update apt-get upgrade -y echo "=== Cleaning up ===" apt-get autoremove -y apt-get clean echo "=== Done ===" EOF

相关命令

  • sudo:以其他用户身份执行命令
  • whoami:显示当前用户
  • id:显示用户和组ID信息
  • passwd:设置用户密码
  • useradd:添加用户
  • usermod:修改用户信息

注意事项

  1. 权限要求:切换到其他用户需要知道目标用户的密码(root 用户除外)
  2. root 用户:root 用户可以切换到任何用户而不需要密码
  3. 环境变量:使用-选项会加载目标用户的环境变量
  4. 安全风险:避免在脚本中硬编码密码
  5. sudo 推荐:建议使用sudo替代su进行特权操作
  6. PAM 认证su命令使用 PAM 进行认证

总结

su是 Linux 系统中用于切换用户身份的工具。它允许用户在当前会话中切换到另一个用户账户,包括 root 用户。su是系统管理员进行特权操作的重要工具,但建议使用sudo进行更安全的特权操作。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/11 1:57:10

如何高效部署实时人像动画系统:完整配置指南

如何高效部署实时人像动画系统&#xff1a;完整配置指南 【免费下载链接】PersonaLive [CVPR 2026] PersonaLive! : Expressive Portrait Image Animation for Live Streaming 项目地址: https://gitcode.com/GitHub_Trending/pe/PersonaLive PersonaLive是一款基于CVPR…

作者头像 李华
网站建设 2026/6/11 1:55:03

Windows Cleaner:从系统性能瓶颈到优雅解决方案的技术实践

Windows Cleaner&#xff1a;从系统性能瓶颈到优雅解决方案的技术实践 【免费下载链接】WindowsCleaner Windows Cleaner——专治C盘爆红及各种不服&#xff01; 项目地址: https://gitcode.com/gh_mirrors/wi/WindowsCleaner 当你的开发环境突然变得异常缓慢&#xff0…

作者头像 李华
网站建设 2026/6/11 1:55:01

小程序毕设项目:基于springboot+微信小程序的家校沟通管理系统的设计与实现 (源码+文档,讲解、调试运行,定制等)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/6/11 1:55:01

Qt TableWidget实战:手把手教你打造一个可配置的设备参数管理界面

Qt TableWidget实战&#xff1a;构建高可配置设备参数管理系统的完整指南在工业控制、物联网设备管理等场景中&#xff0c;参数配置界面是连接用户与设备的重要桥梁。一个优秀的参数管理系统不仅需要清晰展示各类参数&#xff0c;还要提供灵活的操作方式。本文将带你从零开始&a…

作者头像 李华