Sharing Terminal Sessions#

Introduction#

During some tasks it’s useful to have more than one person present to check commands before they are entered. This may be due to the severity of an event and the risk if the commands are incorrect, or may be as straightforward as running a tutorial.

While Zoom can share screens (in the display sense), it’s often not the clearest for sharing a terminal window.

Screen#

Setup#

To enable multi-user screen sessions, the screen binary must be setuid

chmod u+x /usr/bin/screen

To save time during the screen session, we can add the necessary options to ~/.screenrc of the user who will be setting up the session.

multiuser on
acladd user1,user2,user3
screen -L

multiuser allows a screen session to be connected to from several places at once. acladd adds specific usernames to the list of accounts allowed to connect to a screen session screen -L starts a screen window with logging enabled.

If you don’t want this configuration for every screen session, this can also be saved as a separate configuration file, and screen run with screen -c configfile

Usage#

In this example, the cltbld user will be running a screen session, and has ~/.screenrc set up as above.

Use the -S option to give the shared screen a more useful name

cltbld@host1:~> screen -S shared

As the other user:

user1@host1:~> screen -x cltbld/shared

With -L the output logs of the screen shell will be saved in the current working directory as screenlog.0 with incrementing integers if the file already exists. If you have colors turned on in your shell, remember that you can use less -R to view this log file and render the colors, instead of wading through pages of terminal coding.

Tmux#

Single user, multiple connections#

If two people are using a shared account, such as cltbld, then tmux doesn’t require any setup.

To create a session:

tmux new -s shared

To join an existing session:

tmux attach -t shared

Multiple users#

For multiple users, tmux requires a socket directory that both users can access, by being members of the same unix group.

mkdir /tmp/tmux-share
chgrp <shared-group> /tmp/tmux-share

To create a session:

tmux -S /tmp/tmux-share new -s shared

To join an existing session

tmux -S /tmp/tmux-share attach -t shared