Терминал · 3 min read · Dec 15, 2025
Совместное использование сеансов терминала Linux с помощью Tmux и Screen

tmux и GNU Screen — это известные утилиты, которые позволяют мультиплексировать виртуальные консоли. С их помощью можно начать сеанс, отсоединиться, перейти на другую машину и возобновить сеанс без прерываний. Также возможно использовать эти инструменты для совместного использования одного сеанса между несколькими пользователями одновременно.
Основное совместное использование сеансов терминала с одной учетной записью
Если учетная запись совместно используется двумя или более пользователями, то совместное использование терминальной консоли очень простое. Ни tmux, ни screen не требуют ничего необычного для основного совместного использования между одной учетной записью, вошедшей в систему несколько раз. Основное совместное использование очень легко, если вы оба вошли в систему как один и тот же пользователь.
Основное совместное использование с помощью screen
В одном терминале создайте новый сеанс для screen, где foobar — это имя вашего сеанса screen:
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
Если вы вошли в систему как два разных пользователя, есть три предварительных условия для использования screen. Во-первых, screen должен быть установлен с SUID, и необходимо удалить доступ на запись для группы из /var/run/screen. Безопасность использования SUID в этом контексте — это то, что следует учитывать. Затем вы должны использовать ACL screen, чтобы предоставить разрешение второму пользователю.
sudo chmod u+s /usr/bin/screen
sudo chmod 755 /var/run/screenВ терминале первого пользователя запустите screen, как в основном совместном использовании выше, где foobar — это имя сеанса screen. Затем включите режим многопользовательского доступа и добавьте user2 в ACL, где user2 — это вторая учетная запись, которая будет совместно использовать сеанс.
screen -S *foobar*
^A:multiuser on
^A:acladd *user2*Сеанс можно сделать доступным только для чтения для второго пользователя, введя следующее изменение ACL: ^A:aclchg user2 -w “#?”
Затем в другом терминале подключитесь к сеансу первого пользователя.
screen -x *user1*/foobarТакже возможно включить многопользовательский режим и acladd user2 в .screenrc, чтобы это действие происходило автоматически при запуске screen. Если изменения не желательны во всех сеансах screen, то можно указать отдельный конфигурационный файл .screenrc, используя опцию -c при запуске screen.
Заключение
Будьте осторожны при выходе. Если вы просто выйдете из оболочки, это завершит сеанс терминала для всех участников. Если же вы отсоедините сеанс, то другой пользователь сможет продолжать работать без прерываний. В tmux это ^B-d, а в screen это ^A-d
Get new posts in your inbox
No spam. Unsubscribe anytime.