Multiuser GNU Screen - Long Distance Teaching Tool

Posted on in System Administration

When working in an office environment, it's very easy to gather multiple administrators into one office and show them how a task is done. If, on the other hand, your administrators are spread out, these impromptu meetings are nearly impossible. GNU Screen (in multiuser mode) can solve all your problems.

When in multiuser mode, Screen allows multiple users to connect to the same terminal and interact with it as if it were there own. Screen supports a simple permission system, so it's possible to allow a user to connect and view a session without being able to interact with it. To use GNU Screen in multiuser mode, follow these steps.

  1. screen must be setuid root. In order for multiple users to share the same screen, screen must be setuid root. You can do this with sudo chmod u+s /usr/bin/screen.
  2. Start screen. This is simple enough. You can start screen by just running screen, or use -S to provide a helpful session name. For example, screen -S "upgrade_session" can be helpful when determining which session to attach to.
  3. Enable multiuser mode. To enable multiuser mode, do the following inside the Screen session: Ctl-a :multiuser on. All Screen commands are preceded by Ctl-A ('Control' and 'a' at the same time).
  4. Allow other users to connect. Although the session is now running in multiuser mode, no one but the owner (you) has permission to connect to it. Each additional user must be added explicitly with Ctl-a :acladd username where username is the login name of the user you want to grant access to.
  5. (Optional) Restrict users to read-only access. It's possible that you want the additional users to be able to watch the session without being able to execute commands. In this case, you can change the user permissions with Ctl-a :aclchg username -w "#". If you replace username with a single * all users are affected.

Your remote users can now attach to your session by using screen -x username/ where username is your username. If you set a session name, they'll need to use screen -x username/session_name.

My Bookshelf

Reading Now

Other Stuff