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

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

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

我已经弄清楚如何使用 向某些开发人员提供对必要的应用程序目录的共享访问权限,setgid bitdefault ACLs为组中的任何人提供访问权限。

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

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

我应该这样做screen还是有其他一些明智的方式来做我想做的事?

答案1

screen是的,您可以使用多用户支持来做到这一点。

首先,创建一个新会话:

screen -d -m -S multisession

附加到它:

screen -r multisession

打开多用户支持:

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

:multiuser on
:acladd USER ← use username of user you want to give access to your screen

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

$ screen -ls
There is a screen on:
    4791.multisession   (Multi, detached)

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

screen -x youruser/multisession

就是这样。

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

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

希望这可以帮助。

答案2

我已经确定,即使按照@Scyld de Fraud 的答案中的步骤进行操作,评论此问题的其他人也无法执行多用户操作的原因是因为必须启用 SELinux(请参阅https://phoenixnap.com/kb/enable-selinux-centos)。 Screen 需要此功能来实现某些功能,例如分配访问控制列表(通过屏幕acladdaclchg命令)权限来限制或授予对多用户显示器上的各个用户的访问权限,以及重新启动僵尸会话。

答案3

原帖-这个答案如何在屏幕会话中执行命令:

我花了一些时间,但我发现的是:版本屏幕4.06 有一个错误。如果您想通过共享屏幕会话发送这样的命令,则会失败:

screen -S shared_session_name -X stuff "command \n"

屏幕失败并出现错误:

Cannot opendir /run/screen/S-$USER: Permissions denied

更新到版本后屏幕4.09有用。

相关内容