与同一组用户共享屏幕会话(Linux)

与同一组用户共享屏幕会话(Linux)

我可以使用以下命令创建一个独立的屏幕会话:

[user1@host-pc ~]$ screen -d -m -S sname program

...并使用此命令恢复:

[user1@host-pc ~]$ screen -r sname

有没有办法让同一组的用户user1访问会话?

编辑:我已阅读手册页,并且了解多用户模式。我特别想问的是是否允许按用户组 (/etc/group) 共享屏幕会话。

即组内所有用户users都允许共享会话sname。无需手动将每个用户添加到屏幕。

答案1

是的,这是可能的,但是您的屏幕应该启用 suid 位,这会带来一些安全隐患。基本上,您应该执行以下操作才能共享屏幕会话:

chmod u+s /usr/bin/screen

然后作为一个用户(假设它的用户名是用户1),你应该运行screen并在其中运行以下两个命令:

<ctrl+a>:multiuser on
<ctrl+a>:acladd user2

最后,用户2应该能够使用以下命令连接到会话:

screen -x user1/

您可以找到更多信息这里

答案2

您可以通过 .screenrc 启用多用户模式,或者在会话中使用 Ctrl+a : 。然后可以通过使用 添加单个用户或在 screen acls ( )中重新创建组列表来multiuser on控制访问。acladd user2aclgrp

我不相信有办法直接使用 unix 组来实现屏幕多用户 ACL。

参见man screenhttp://aperiodic.net/screen/multiuser

答案3

2020 年你好!答案似乎仍然是“不,你不能(没有脚本或源代码修改)。”

我怀疑(但只是怀疑),这可能是以下情况之一:预计-A令人惊讶的是,它被低估了 Unix 自动化工具—可能会有用。

Screen,至少是最近的版本,有许多内置检查,以防止篡改其设施外部套接字的/var/run/screen权限。acladdaclgrp

如果你尝试使权限/var/run/screen/S-username更宽松(给予另一个 Unix 组访问权限),你仍然会收到类似这样的错误消息

Must run suid root for multiuser support.

如果您尝试screen -r username/使用现有的套接字。

如果你sudo chmod u+s /usr/bin/screen,你会得到错误信息

Directory /var/run/screen/S-username must have mode 700

如果您手动更改了这些权限,这似乎会阻止在文件系统级别使用chmod或设置套接字的权限。如果您已满足 Screen 对文件系统权限的期望,但尚未使用+将尝试访问套接字的用户明确添加到访问列表中,则会收到错误消息setfaclCtrlA :acladd

Access to session denied.

就我所知,目前还没有找到任何简单的方法来解决你的问题tmux要么,但是维姆克斯似乎是一个流行的包装器,可以使多用户共享会话更易于使用,并且可能帮助您实现您的目标。

编辑:来自 aperiodic.net/screen/multiuser 的这条信息(回溯捕获) 使您看起来可以通过首先传输以下转义序列来编写:acladd操作脚本,同时迭代特定组的成员资格:/etc/group

screen 可以允许程序通过转义序列向其发送命令,ESC ] 83 ; cmd ^G;为了使其工作,伪用户:window:必须存在并且具有执行所提供命令的适当权限。

相关内容