尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

Linux中以其它用户身份执行脚本或命令总结

Linux中以其它用户身份执行脚本或命令总结
📅 发布时间:2026/6/19 13:12:21

Linux中以其它用户身份执行脚本或命令总结

2025-12-19 08:30  潇湘隐者  阅读(0)  评论(0)    收藏  举报

在Linux中以其他用户身份执行命令或脚本是一个常见的需求,最近工作中碰到了这个需求,在这里简单总结一下.假如我们在root用户下想以其它用户(例如oracle,mysql)身份执行一些脚本或命令,那么有哪一些方法呢?

su命令(switch user)

su命令的使用方式有两种, 如下所示:

  1. 切换用户只执行一条命令的可以用:
su - oracle -c shell_command

-c "<命令>": -c 参数告诉 su执行完后面的命令后就退出,而不是启动一个新的交互式shell。

  1. 切换用户执行一个shell脚本
su - oracle -s /bin/bash oracle_start.sh

需要注意的是, 这里使用su切换用户有两种方式,即带"-"与不带"-"的方式, 如下所示:

su oracle -c <shell_command>
或
su - oracle -c <shell_command>

两者的区别

su <用户名> (不带横杠)

这是非登录式切换。

  • 行为:它会切换当前的用户身份(UID 和 GID),但不会改变当前的shell环境。
  • 环境变量:大部分环境变量(如 PATH, HOME, USER, PS1 等)仍然保持为切换之前的用户的环境变量。
  • 工作目录:当前的工作目录(PWD)也不会改变。
  • 本质:你只是 “穿上了另一个用户的马甲”,但所处的 “房间”(环境)还是原来的。

适用场景:当你需要临时以另一个用户身份执行一个或几个命令,并且希望利用当前的环境(比如当前目录、已经设置好的变量)时。
缺点: 如果是非root用户,需要知道目标用户的密码. 不适合自动化脚本.

su - <用户名> (带横杠)

这是登录式切换。

  • 行为:它会模拟一个完整的、全新的用户登录流程。
  • 环境变量:它会加载目标用户(例如oracle)的所有环境变量配置文件(如 /etc/profile, ~/.bash_profile, ~/.bashrc 等),并使用这些变量来构建一个全新的环境。
  • 工作目录:工作目录会自动切换到目标用户的主目录(/home/oracle)。
  • 本质:你完全"进入了另一个用户的房间",使用的是它的所有配置和环境。

适用场景:当你需要完全进入另一个用户的角色,执行一系列操作,或者运行依赖于该用户特定环境变量的脚本时。这是更常见和推荐的用法。

sudo 命令

sudo命令,它的作用是“excute a command as another user",默认为root用户,可以用 -u 指定用户名

你有目标用户的 sudo 权限,且只想临时以该用户身份运行脚本。

sudo -u <用户名> <命令或脚本>

与 su 类似,sudo 也可以用来获取一个目标用户的交互式 shell。命令格式:

sudo -u <用户名> -i
# 或者
sudo -u <用户名> -s

-i (模拟初始登录,--login):行为与 su - <用户名> 非常相似,会加载目标用户的环境变量并切换到其主目录。
-s (启动 shell, --shell):启动一个 shell,但不一定会完全加载登录环境,行为可能略有不同。通常推荐使用 -i。

不会加载目标用户的完整环境(如 .bashrc),但会加载其基本环境变量(如 $HOME)。

优点:

  • 安全性高:执行命令时验证的是执行者自己的密码,而不是目标用户的密码。
  • 权限控制精细:通过 /etc/sudoers 可以精确控制哪个用户能以哪个身份执行哪些命令。
  • 易于审计:所有 sudo 操作都会被记录在系统日志中(通常在 /var/log/auth.log 或 /var/log/secure)。

缺点:

  • 需要管理员预先配置 /etc/sudoers 文件,对于临时一次性操作可能略显繁琐。
  • 这些方式也不适合在脚本中使用.

runuser 命令

runuser 是一个相对小众但非常有用的命令,它与 su 类似,但设计初衷是让 root 用户在切换到其他用户身份时无需输入密码,并且不通过PAM(Pluggable Authentication Modules)进行认证。这使得它比su更快,并且更适合在脚本中使用。

runuser -u <用户名> -- <命令或脚本路径>

优点:

  • root 用户使用时无需密码,非常适合在自动化脚本(如 cron, systemd service)中使用。
  • 性能比 su 稍好。

缺点:

  • 功能不如 sudo 强大和灵活。
  • 通常只有 root 用户可以使用 runuser 切换到其他用户。
扫描上面二维码关注我
如果你真心觉得文章写得不错,而且对你有所帮助,那就不妨帮忙“推荐"一下,您的“推荐”和”打赏“将是我最大的写作动力!
本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接.

相关新闻

  • 深入解析:实验演示:Movelt2开发机械臂全流程
  • 【赵渝强老师】Redis Cluster分布式集群
  • 2025年年终四川泳池设备厂家推荐排行榜:五大厂家综合对比与选购指南 - 品牌推荐

最新新闻

  • 2026年6月宏宇陶瓷耐用吗,宏宇陶瓷,宏宇陶瓷怎么样 - 品牌推荐师
  • 2026年6月山东考察:不割韭菜的罐罐酸奶加盟项目,谷物全书为何获推荐? - 品牌鉴赏官2026
  • 2026邯郸2026正规漏水检测维修公司精选口碑榜TOP5权威推荐-精准定位检测漏水点-专业防水补漏堵漏维修、卫生间/厨房/屋顶/天沟/地下室/阳台防水漏水检测维修 - 安佳防水
  • MC9S12KG128电气特性深度解析:从数据手册到可靠硬件设计
  • 蓝桥杯参赛指南:从规则解析到高效备赛
  • 2026鄂州2026正规漏水检测维修公司精选口碑榜TOP5权威推荐-精准定位检测漏水点-专业防水补漏堵漏维修、卫生间/厨房/屋顶/天沟/地下室/阳台防水漏水检测维修 - 安佳防水

日新闻

  • 信任的进化:技术实现详解——如何用JavaScript构建博弈论模拟器
  • Terrakube自定义工作流:如何集成OPA、Infracost等工具扩展IaC能力
  • grunt-concurrent快速入门:5分钟学会并行运行Grunt任务

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号