今天发现,以我 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
可能必须更改相关设备的权限,或将监视器添加到有权读取该设备的组,这是我的第一想法。但您必须权衡这样做的安全隐患。