使用 Tmux 和 Screen 共享 Linux 终端会话
在此页
- 使用单个帐户共享基本终端会话
- 与屏幕的基本共享
- 使用 tmux 进行基本共享
- 使用 tmux 在两个不同的帐户之间共享
- 在两个不同的帐户之间共享屏幕
GNU Screen 是众所周知的实用程序,它允许虚拟控制台的多路复用。使用任何一个,都可以开始一个会话,分离,移动到不同的机器并在不间断的过程中恢复会话。也可以使用这些工具同时在多个用户之间共享单个会话。
使用单个帐户共享基本终端会话
如果两个或多个用户共同拥有一个帐户,则终端控制台的共享非常简单。对于多次登录的单个帐户之间的基本共享,tmux 和屏幕都不需要任何不同寻常的东西。如果你们都以同一用户身份登录,则基本共享非常容易。
与屏幕的基本共享
在一个终端中为屏幕创建一个新会话,其中 foobar 是屏幕会话的名称:
screen -S foobar
然后在另一个终端中,附加到该会话。
screen -x foobar
就是这样,只有两步。
与 tmux 的基本共享
同样,只有两个步骤。在第一个终端中,启动 tmux,其中 shared 是会话名称:
tmux new-session -s shared
然后在第二个终端附加到共享会话。
tmux attach-session -t shared
就是这样。
在两个不同的帐户之间共享终端会话
两个不同帐户之间的共享需要一些额外的步骤来授予一个帐户访问另一个会话所需的权限。在某些情况下,需要系统管理员的帮助来准备设置。
使用 tmux 在两个不同的帐户之间共享
对于不同的用户,你必须在 tmux 套接字上设置权限,以便两个用户都可以读写它。只有一个先决条件,即两个用户之间有一个共同的组。如果不存在这样的小组,则有必要创建一个。
在第一个终端中,启动 tmux,其中 shared 是会话名称,shareds 是套接字的名称:
tmux -S /tmp/shareds new -s shared
然后将套接字更改为两个用户共享的组。在此示例中,joint 是两个用户共享的组。如果组中有其他用户,则他们也可以访问。因此,可能建议该组只有两名成员。
chgrp joint /tmp/shareds
在第二个终端中使用该套接字和会话连接。
tmux -S /tmp/shareds attach -t shared
就是这样。会话可以为第二个用户设置为只读,但只能在自愿的基础上进行。当第二个用户附加到会话时,决定以只读方式工作。
tmux -S /tmp/shareds attach -t shared -r
使用屏幕在两个不同帐户之间共享
如果您以两个不同的用户身份登录,则使用 screen 需要满足三个先决条件。首先,必须设置屏幕 SUID 并且有必要从 /var/run/screen 中删除组写访问权限。在此上下文中使用 SUID 的安全性需要考虑。然后,您必须使用屏幕 ACL 向第二个用户授予权限。
sudo chmod u+s /usr/bin/screen
sudo chmod 755 /var/run/screen在第一个用户终端中,像上面的基本共享一样启动屏幕,其中 foobar 是屏幕会话的名称。然后开启多用户模式,将user2添加到ACL中,其中user2是要共享会话的第二个帐户。
screen -S foobar
^A:multiuser on
^A:acladd user2通过输入以下 ACL 更改,可以使第二个用户的会话为只读:^A:aclchg user2 -w \#?\
然后在另一个终端中,附加到第一个用户会话。
screen -x user1/foobar
也可以打开 multiuser 并将 user2 添加到 .screenrc 以使其在启动屏幕时自动生效。如果不需要在所有屏幕会话中进行更改,则可以在启动屏幕时使用 -c 选项指定单独的 .screenrc 配置文件。
后知后觉
退出时要小心。如果您只是退出 shell,它将结束所有参与方的终端会话。如果您改为分离会话,则其他用户可以继续不间断地工作。在 tmux 中是 ^B-d,在屏幕中是 ^A-d