以不同用户身份执行 Sudo 并运行屏幕

以不同用户身份执行 Sudo 并运行屏幕

今天发现,以我 sudo 进入的其他用户身份运行屏幕不起作用!

IE

ssh bob@server         # ssh into server as bob
sudo su "monitor" -
screen                 # fails: Cannot open your terminal '/dev/pts/0'

我有一个以“monitor”用户身份运行的脚本。我们在屏幕会话中运行它以便在屏幕上看到输出。问题是,我们有许多用户使用自己的帐户登录(例如 bob、james、susie 等...),然后他们使用 sudo 进入“monitor”用户。让他们访问“monitor”用户是不可能的。

答案1

尝试在启动屏幕之前script /dev/null以用户身份运行su- 这是一个小小的黑客,但它应该会让屏幕高兴。

答案2

screen我正在为用户使用包装函数sudo su。这是我为用户添加的包装函数~/.bashrc

功能屏幕(){
  /usr/bin/script -q -c "/usr/bin/screen ${*}" /dev/null
}

screen这样我就可以使用我可能想要使用的所有选项和参数。我正在考虑将此功能应用于整个系统。

答案3

假设他们无论如何都会通过 SSH 连接到主机,您可以在 ~monitor/.ssh/authorized_keys 文件中添加需要访问监控帐户的每个用户的公共 ssh 密钥。然后,他们可以在每个用户的远程计算机上运行

ssh-t命令[电子邮件保护]屏幕-RD

答案4

可能必须更改相关设备的权限,或将监视器添加到有权读取该设备的组,这是我的第一想法。但您必须权衡这样做的安全隐患。

相关内容