与多个用户共享一个终端(带屏幕或其他方式)

var*_*esa 19 gnu-screen multiuser

我正在设置一个服务器,其中有多个开发人员在处理多个应用程序。

我已经想出了如何使用setgid bitdefault ACLs为组中的任何人提供对必要应用程序目录的共享访问权限。

许多这些应用程序在开发过程中都在终端下运行,以便于访问。当我独自工作时,我为应用程序设置了一个用户并以该用户身份运行屏幕。这样做的缺点是每个开发人员都screen session需要知道密码,而且很难将用户和应用程序帐户分开。

一种可行的方法是使用屏幕多用户功能。然而,它们不能开箱即用, screen 抱怨需要suid root. 给予有什么缺点吗?我对使用suid root任何东西都非常小心。也许有一个原因为什么它不是默认的?

我应该用它来做screen还是有其他一些聪明的方式来做我想做的事?

Scy*_*aud 32

是的,您可以使用screen多用户支持来实现。

首先,创建一个新会话:

screen -d -m -S multisession
Run Code Online (Sandbox Code Playgroud)

附上它:

screen -r multisession
Run Code Online (Sandbox Code Playgroud)

开启多用户支持:

按下Ctrl-a并输入(注意:Ctrl+a在每个命令之前都需要,即这里需要两次)

:multiuser on
:acladd USER ? use username of user you want to give access to your screen
Run Code Online (Sandbox Code Playgroud)

现在,Ctrl-a d列出会话:

$ screen -ls
There is a screen on:
    4791.multisession   (Multi, detached)
Run Code Online (Sandbox Code Playgroud)

您现在有一个多用户屏幕会话。将名称提供multisession给 acl'd 用户,以便他可以附加到它:

screen -x youruser/multisession
Run Code Online (Sandbox Code Playgroud)

就是这样。

唯一的缺点是screen必须以suidroot身份运行。但据我所知是默认的,正常的情况。

另一种选择是做screen -S $screen_id -X multiuser onscreen -S $screen_id -X acladd authorized_user

希望这可以帮助。

  • `screen -S $screen_id -X multiuser on`,`screen -S $screen_id -X acladd authorized_user` 而不是 control-a 命令将是对答案的一个很好的补充 (6认同)