如何在 shell 脚本中切换到不同的用户并使用新用户执行某些命令?

2023-12-21

我当前使用用户“USER1”登录“SERVER1”,并且我已将 bash 脚本放在这里。该脚本必须切换到同一服务器“SERVER1”上的不同用户“USER2”,并使用新切换的用户执行一些命令。

注意:USER1 不是 root 用户,因此我需要在脚本中指定 USER2 密码,但采用加密格式。

请帮助我实现这一目标..!

#!/bin/bash

command1
command2
.
.
...

echo "PASSWORD" | su USER2 << EOF
command1
command2
.
.
...

请注意,我不想在此处更改任何配置文件来实现此目的。


将密码存储在脚本中或尝试将其流式传输到脚本中并不是一个好主意su。更好的方法是使用sudo.

由于您允许 USER1 在没有密码的情况下充当 USER2,因此您可以设置/etc/sudoers像这样:

USER1 localhost=(USER2) NOPASSWD: ALL

然后你可以调用sudo作为 USER1 如下:

sudo -u USER2 bash

如果您想进一步锁定它,您可以指定一个允许用户执行的脚本。该行在/etc/sudoers可能看起来像:

USER1 localhost=(USER2) NOPASSWD: /home/USER1/setup.sh

你会打电话给:

sudo -u USER2 /home/USER1/setup.sh

请注意,在最后一个示例中,我认为 USER2 需要在以下位置配置一个实际的 shell/etc/passwd(即不/bin/false).

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 shell 脚本中切换到不同的用户并使用新用户执行某些命令? 的相关文章

  • 如何在数组中存储包含双引号的命令参数?

    我有一个 Bash 脚本 它生成 存储和修改数组中的值 这些值稍后用作命令的参数 对于 MCVE 我想到了任意命令bash c echo 0 0 echo 1 1 这解释了我的问题 我将用两个参数调用我的命令 option1 without
  • 如何有效截断文件头?

    大家都知道truncate file size 函数 通过截断文件尾部将文件大小更改为给定大小 但是如何做同样的事情 只截断文件的尾部和头部呢 通常 您必须重写整个文件 最简单的方法是跳过前几个字节 将其他所有内容复制到临时文件中 并在完成
  • 有没有办法让我简化这些回声? [复制]

    这个问题在这里已经有答案了 我仍在学习如何编写 shell 脚本 并且我面临着一个挑战 让我更容易回显 Name1 Name2 Name15 我不太确定从哪里开始 我已经想法 但如果我搞砸了 我不想看起来很傻 有什么帮助吗 我实际上还没有尝
  • jq:将对象数组转换为对象

    我收到了来自curl的回复 格式如下 list value 1 id 12 value 15 id 13 value 4 id 14 给定 id 之间的映射 如下所示 12 newId1 13 newId2 14 newId3 我想做这个
  • 添加要在给定命令中运行的 .env 变量

    我有一个 env 文件 其中包含如下变量 HELLO world SOMETHING nothing 前几天我发现了这个很棒的脚本 它将这些变量放入当前会话中 所以当我运行这样的东西时 cat env grep v xargs node t
  • 对目录中的所有文件执行命令

    有人可以提供执行以下操作的代码 假设有一个文件目录 所有这些文件都需要通过程序运行 该程序将结果输出到标准输出 我需要一个脚本 该脚本将进入一个目录 对每个文件执行命令 并将输出连接到一个大输出文件中 例如 要在 1 个文件上运行命令 cm
  • OSX bash 最小化窗口

    在 Mac 中并使用 bash shell 我想执行一个包含单个命令 启动 Jupyter Lab 的文件并立即最小化终端窗口 有没有办法在不安装第三方软件的情况下做到这一点 是的 只需使用osascript https ss64 com
  • awk/Unix 分组依据

    有这个文本文件 name age joe 42 jim 20 bob 15 mike 24 mike 15 mike 54 bob 21 试图得到这个 计数 joe 1 jim 1 bob 2 mike 3 Thanks awk F NR
  • 如何在 Linux shell 中将十六进制转换为 ASCII 字符?

    假设我有一个字符串5a 这是 ASCII 字母的十六进制表示Z 我需要找到一个 Linux shell 命令 它将接受一个十六进制字符串并输出该十六进制字符串代表的 ASCII 字符 所以如果我这样做 echo 5a command im
  • 如何从 Artifactory 存储库下载最新的工件?

    我需要来自存储库的最新工件 例如快照 人工工厂 http en wikipedia org wiki Software repository Repository managers 该工件需要通过脚本复制到服务器 Linux 我有什么选择
  • 从 php 执行 bash 脚本并立即输出回网页

    我有一组 bash 和 Perl 脚本 开发在 Linux Box 上部署所需的目录结构 可选 从svn导出代码 从这个源构建一个包 这在终端上运行良好 现在 我的客户请求此流程的 Web 界面 例如 某些页面上的 创建新包 按钮将一一调用
  • 使用正则表达式模式查找 -name 并使用 cp 替换文件名

    目前我正在使用该命令cron复制 data从源到目标路径 find source path name data exec cp target path 源码结构为 source path category1 001 data source
  • 是否可以创建一个脚本来保存和恢复权限?

    我正在使用 Linux 系统 需要对一组嵌套文件和目录进行一些权限实验 我想知道是否没有某种方法可以保存文件和目录的权限 而不保存文件本身 换句话说 我想保存权限 编辑一些文件 调整一些权限 然后将权限恢复到目录结构中 将更改的文件保留在适
  • 按进程名称过滤并记录 CPU 使用情况

    Linux 下有选项吗顶部命令 https www man7 org linux man pages man1 top 1 html我可以在哪里按名称过滤进程并将每秒该进程的 CPU 使用情况写入日志文件 top pgrep 过滤输出top
  • 如何在 PHP 中运行 shell 脚本?

    我正在尝试使用 PHP 触发 shell 脚本的运行 本质上 当用户在我们用 PHP 编写的网站上完成一个操作时 我们希望触发一个 shell 脚本 该脚本本身调用一个 Java 文件 提前致谢 See shell exec http ph
  • waitpid() 的作用是什么?

    有什么用waitpid 它通常用于等待特定进程完成 或者如果您使用特殊标志则更改状态 基于其进程 ID 也称为pid 它还可用于等待一组子进程中的任何一个 无论是来自特定进程组的子进程还是当前进程的任何子进程 See here http l
  • 我如何知道 C 程序的可执行文件是在前台还是后台运行?

    在我的 C 程序中 我想知道我的可执行文件是否像这样在前台运行 a out 或者像这样 a out 如果你是前台工作 getpgrp tcgetpgrp STDOUT FILENO or STDIN FILENO or STDERR FIL
  • 如果在等待“read -s”时中断,在子进程中运行 bash 会破坏 tty 的标准输出吗?

    正如 Bakuriu 在评论中指出的那样 这基本上与BASH 输入期间按 Ctrl C 会中断当前终端 https stackoverflow com questions 31808863 bash ctrlc during input b
  • sh / Bash shell 脚本中 !# (bang-pound) 的含义是什么?

    我想了解这个 Scala 脚本是如何工作的 usr bin env bash exec scala 0 object HelloWorld def main args Array String println Hello world arg
  • Spyder 无法启动:spyder:找不到命令

    我已经安装了spyderpip3 install spyder在苹果电脑上 但是 当我无法从 bash 启动它时 它会显示spyder command not found 我已按照其说明进行操作Github页面 https github c

随机推荐

  • 通过引用传递智能指针

    智能指针通常很小 因此按值传递不是问题 但传递对它们的引用是否有问题 或者更确切地说 是否存在不能这样做的特定情况 我正在编写一个包装器库 并且我的几个类将智能指针对象包装在底层库中 我的类不是智能指针 但 API 目前按值传递智能指针对象
  • 使用 jQuery 设置要在第一个位置显示的选项

    我有一个带有一些选项的选择元素
  • Opera 中的 JavaScript 范围问题?

    我有一个类似于小部件的 HTML JavaScript 块 人们可以将其复制 粘贴到他们的 HTML 页面中一次或多次 该块检查 DOM 中是否已存在外部 JavaScript 文件 如果没有则加载它 如下所示 function d doc
  • 挑战 - 将 XML 处理成 T-SQL 表结构?

    如果您有此 XML
  • 触摸屏上的“滚轮”事件

    我有这个小提琴https jsfiddle net 316n1xmL 1 https jsfiddle net 316n1xmL 1 这在桌面上完美地满足了我的需要 根据滚轮滚动方向向上或向下计数并添加和删除类 我遇到的问题是如何在触摸屏上
  • XmlTextWriter序列化问题

    我正在尝试创建一段 xml 我已经使用 xsd exe 创建了数据类 根类是MESSAGE 所以创建之后MESSAGE并填充其所有属性 我将其序列化如下 serializer new XmlSerializer typeof Xsd MES
  • 未解决的___stdio_common_vsprintf_s,什么库有这个?

    我正在使用 VS2015 社区 我已经获得了一些我正在尝试构建的 C 代码 这一切都是用 C 编写的 我已经制作了一个项目作为控制台应用程序 当我构建时 我收到以下错误 问题是链接过程中找不到 stdio common vsprintf s
  • 首次使用函数的 gcc 属性

    我一直在使用gccconst and pure返回指向首次使用时分配和初始化的 常量 数据的指针的函数的属性 即函数每次调用时将返回相同的值 作为一个示例 不是我的用例 而是一个众所周知的示例 请考虑一个函数 该函数在第一次调用时分配和计算
  • 在没有虚拟内存支持的系统中进行链接和分页

    首先 虚拟内存是系统的硬件特性 还是仅由操作系统实现 在链接时重定位期间 链接器将运行时地址分配给生成的可执行文件中的每个节和每个符号 这些运行时地址是否对应于虚拟地址 如果生成可执行文件的系统不使用虚拟内存怎么办 接下来 如果不使用虚拟内
  • 我可以将 emmeans 与 LME 模型一起使用吗?

    我使用的 LME 模型定义如下 mod4 lme lt lme pRNFL Init Age Status I Time 2 random 1 Patient EyeID data long1 na action na omit 输出是 g
  • Scala - 隐式转换与 unapply

    我想要一个提取器隐式转换其参数 但它似乎不起作用 考虑这个非常简单的情况 case class MyString s String implicit def string2mystring x String MyString new MyS
  • Three.js - 缩小时物体消失

    在我的 Three js 项目中 我为相机使用高 z 位置 当 z 位置太高时 我的场景会变黑 所以 当我缩小时 它会变成黑色 但我不希望这种情况发生 This is how it is with camera position z 300
  • 深层链接在 Android 版 Chrome 中不起作用

    我为我的应用程序定义了一个意图过滤器 如下所示 Accepts URIs that begin with urban success gt
  • 检查数据库记录映射上的空值

    如何检查附加代码中的数据库空值 请理解我是一个新的 C 皈依者 此代码的作用是获取 IDataReader 对象并将其转换并映射到强类型对象列表 但我发现 当阅读器中返回空列时 它会完全出错 转换器 internal class Conve
  • Prawn 有多少种字体可用?

    我一直在随机尝试 Prawn 中的 Ruby 字体 例如 Times New Roman 是 Palatino Linotype 否 是否有可用字体和不可用字体的列表 代码中有默认字体列表 位于 lib prawn font afm rb
  • Django ORM 继承与 ManyToMany 字段

    假设我有以下 ORM 类 为了简化而删除了字段 class Animal models Model say def say something self return self say class Cat Animal self say I
  • 后台活动识别

    我正在制作一个使用 ActivityRecognition API 在后台跟踪用户活动的应用程序 如果用户在指定的时间段 例如 1 小时 内保持在同一位置 则系统会推送通知 告诉用户去散步 我已经实现了活动识别 但仅限于应用程序打开时的情况
  • 从.NET 4.5.2项目访问appsettings.json

    我有两个项目 一个 1 1 0 ASP NET Core 项目和一个对 4 5 2 项目的引用 我想从 appsettings json 文件获取值到我的 4 5 2 项目 appsettings json 文件位于核心项目中 在我的 4
  • 如何在两个html页面之间做过渡效果

    我需要在html页面之间提供过渡效果 当单击菜单或子菜单时 页面将以过渡效果打开 请指导我 如何做到这一点 提前致谢 下面的链接只有 div 转换 没有页面转换 html页面之间可以进行相同的转换吗 如何在两个 HTML 页面之间添加过渡
  • 如何在 shell 脚本中切换到不同的用户并使用新用户执行某些命令?

    我当前使用用户 USER1 登录 SERVER1 并且我已将 bash 脚本放在这里 该脚本必须切换到同一服务器 SERVER1 上的不同用户 USER2 并使用新切换的用户执行一些命令 注意 USER1 不是 root 用户 因此我需要在