打开 tmux 会话,然后更改为不同的用户,无需输入密码提示

打开 tmux 会话,然后更改为不同的用户,无需输入密码提示

我正在尝试创建一个脚本来打开一个新的 tmux 会话,然后以不同的用户身份在该 tmux 会话中运行命令。

这样做的目的是为游戏服务器创建一个新的 tmux 会话,该会话分配有不同的 UNIX 用户。我听说为服务器提供自己的用户是一个很好的做法,但为了方便起见,我仍然希望在主用户的主目录中有一个脚本来启动服务器。我希望我的主用户可以使用 tmux 会话,但仍可以登录到游戏服务器用户。

主要问题是有一个我无法绕过的密码提示,要求我附加到 tmux 会话,输入密码,然后分离。这是我尝试过的:

#!/bin/sh

tmux new -d -s Minecraft sudo -u minecraft /home/minecraft/server/start.sh

我已经尝试了使用 sudo 运行脚本、添加su - Minecraft到脚本以及 的每一种组合su Minecraft -c "script",并且在每一种组合中,它要么要求我附加到 tmux 会话并登录,要么就是不起作用,没有打开 tmux 会话。

我正在尝试找到一个解决方案,允许我在运行调用 tmux 的脚本时输入我的 sudo 密码或其他用户的密码,而不必通过附加然后分离来登录。

答案1

两种方法:

  1. 编辑/etc/sudoers以允许您的用户执行操作sudo -u minecraft,或者明确地说sudo -u minecraft /home/minecraft/server/start.sh,无需密码。
  2. 在命令之前执行sudo -u minecraft sleep 0脚本tmux。这将询问您的密码。sudo接下来几分钟的后续命令将不需要密码。

答案2

假设 ssh 正在您的计算机上运行,​​并侦听本地主机接口,您可以设置一个 ssh 密钥,并将该密钥的公共部分放入目标用户的.ssh/authorized_keys文件中。

然后你可以:

ssh target_user@localhost 'whatever command you want to run'

相关内容