qidao123.com ToB IT社区-企服评测·应用市场

 找回密码
 立即注册

Linux中以别的用户身份实验脚本或下令总结

[复制链接]
发表于 2025-12-19 07:07:27 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
在Linux中以其他用户身份实验下令或脚本是一个常见的需求,迩来工作中遇到了这个需求,在这里简单总结一下.假如我们在root用户下想以别的用户(比方oracle,mysql)身份实验一些脚本或下令,那么有哪一些方法呢?
su下令(switch user)

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

  • 切换用户只实验一条下令的可以用:
  1. su - oracle -c shell_command
复制代码
-c "": -c 参数告诉 su实验完反面的下令后就退出,而不是启动一个新的交互式shell。

  • 切换用户实验一个shell脚本
  1. su - oracle -s /bin/bash oracle_start.sh
复制代码
必要留意的是, 这里利用su切换用户有两种方式,即带"-"与不带"-"的方式, 如下所示:
  1. su oracle -c <shell_command>
  2. 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 权限,且只想暂时以该用户身份运行脚本。
  1. sudo -u <用户名> <命令或脚本>
复制代码
与 su 雷同,sudo 也可以用来获取一个目的用户的交互式 shell。下令格式:
  1. 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更快,而且更得当在脚本中利用。
  1. runuser -u <用户名> -- <命令或脚本路径>
复制代码
优点:


  • root 用户利用时无需暗码,非常得当在自动化脚本(如 cron, systemd service)中利用。
  • 性能比 su 稍好。
缺点:


  • 功能不如 sudo 强盛和机动。
  • 通常只有 root 用户可以利用 runuser 切换到其他用户。
扫描上面二维码关注我假如你至心以为文章写得不错,而且对你有所资助,那就不妨帮助“保举"一下,您的“保举”和”打赏“将是我最大的写作动力!本文版权归作者全部,接待转载,但未经作者同意必须保存此段声明,且在文章页面显着位置给出原文毗连.
免责声明:如果侵犯了您的权益,请联系站长及时删除侵权内容,谢谢合作!qidao123.com:ToB企服之家,中国第一个企服评测及软件市场,开放入驻,技术点评得现金.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录

QQ|手机版|qidao123.com IT社区;IT企服评测▪应用市场 ( 浙ICP备20004199|浙ICP备20004199号 )|网站地图

GMT+8, 2026-1-21 14:45 , Processed in 0.220635 second(s), 27 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表