sdo*_*257 178 sudo gnu-screen
今天发现作为我 sudo 进入的不同用户运行屏幕将不起作用!
IE
ssh bob@server # ssh into server as bob
sudo su "monitor" -
screen # fails: Cannot open your terminal '/dev/pts/0'
Run Code Online (Sandbox Code Playgroud)
我有一个以“监视器”用户身份运行的脚本。我们在屏幕会话中运行它,以便在屏幕上看到输出。问题是,我们有许多用户使用自己的帐户(即 bob、james、susie 等)登录,然后他们 sudo 进入“监视器”用户。让他们访问“监视器”用户是不可能的。
vor*_*aq7 256
在启动屏幕之前尝试script /dev/null以您的用户身份运行su- 这是一个贫民窟的小黑客,但它应该让屏幕开心。
小智 36
我正在为我使用screen的用户使用包装函数sudo su。这是我添加到用户的包装函数~/.bashrc:
功能屏幕(){
/usr/bin/script -q -c "/usr/bin/screen ${*}" /dev/null
}
这允许我使用screen我可能想要使用的所有选项和参数。我正在考虑在系统范围内使用此功能。
假设他们无论如何都通过 SSH 连接到主机,您可以在 ~monitor/.ssh/authorized_keys 文件中为每个需要访问监控帐户的用户添加公共 ssh 密钥。然后在每个用户的远程机器上他们可以运行
ssh -t monitor@remote.machine screen -RD
假设我们正在谈论这个错误:
$ sudo su - bob
$ screen
Cannot open your terminal '/dev/pts/5' - please check.
Run Code Online (Sandbox Code Playgroud)
这是一个单线(例如,可以用作“别名 gobob”):
sudo su - bob -c "script -c bash /dev/null"'
Run Code Online (Sandbox Code Playgroud)
解释:
这将作为用户 bob 启动一个 shell(如登录 shell)。用户 bob starts script,它被告知调用 bash(可以是 dash 或 ksh ...),并且会话的副本被丢弃。