我可以使用以下命令创建一个独立的屏幕会话:
[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 user2
aclgrp
我不相信有办法直接使用 unix 组来实现屏幕多用户 ACL。
参见man screen
或http://aperiodic.net/screen/multiuser
答案3
2020 年你好!答案似乎仍然是“不,你不能(没有脚本或源代码修改)。”
我怀疑(但只是怀疑),这可能是以下情况之一:预计-A令人惊讶的是,它被低估了 Unix 自动化工具—可能会有用。
Screen,至少是最近的版本,有许多内置检查,以防止篡改其设施外部套接字的/var/run/screen
权限。acladd
aclgrp
如果你尝试使权限/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 对文件系统权限的期望,但尚未使用+将尝试访问套接字的用户明确添加到访问列表中,则会收到错误消息setfacl
CtrlA :acladd
Access to session denied.
就我所知,目前还没有找到任何简单的方法来解决你的问题tmux要么,但是维姆克斯似乎是一个流行的包装器,可以使多用户共享会话更易于使用,并且可能帮助您实现您的目标。
编辑:来自 aperiodic.net/screen/multiuser 的这条信息(回溯捕获) 使您看起来可以通过首先传输以下转义序列来编写:acladd
操作脚本,同时迭代特定组的成员资格:/etc/group
screen 可以允许程序通过转义序列向其发送命令,
ESC ] 83 ; cmd ^G;
为了使其工作,伪用户:window:
必须存在并且具有执行所提供命令的适当权限。