Я ищу простой и понятный способ поделиться сеансом tmux с другим пользователем на той же машине. Я попробовал эту -S socket-path
опцию, но она требует открытия всех разрешений пути сокета, прежде чем кто-то еще сможет подключиться к сеансу. Это работает, но это немного громоздко. Например:
# Me
$ tmux -S /tmp/pair
$ chmod 777 /tmp/pair
# Another user
$ tmux -S /tmp/pair attach
Это работает, но оба пользователя теперь используют одну и ту же конфигурацию tmux (конфигурацию пользователя, инициировавшего сеанс). Есть ли способ позволить двум пользователям использовать их собственную конфигурацию tmux и их собственные индивидуальные привязки ключей tmux?
Что касается бонусных баллов, в идеале было бы неплохо предоставить другим пользователям доступ только для чтения сеанса tmux.
Ответы:
С https://github.com/zolrath/wemux :
Это оболочка для оболочки через tmux - компиляция не требуется.
источник
Я пробовал это на Ubuntu, но не понимаю, почему это не будет работать на других вариантах Unix.
Если оба пользователя являются членами общей группы, и путь к сокету использует эту группу, оба пользователя смогут присоединиться нормально.
Вместо того, чтобы менять разрешения пути к сокету при каждом его создании, вы можете создать специальный каталог для сокетов (я использовал / var / tmux).
Сначала добавьте группу для пользователей tmux
Создайте каталог с группой, установленной в $ TMUX_GROUP, и используйте бит setgid, чтобы для файлов, созданных в каталоге, автоматически была установлена группа в $ TMUX_GROUP.
Затем убедитесь, что пользователи, которые хотят поделиться сессией, являются членами $ TMUX_GROUP
источник
tmux -S $TMUX_GROUP/shared-session
. Чтобы прикрепить к нему из другого аккаунта:tmux -S $TMUX_GROUP/shared-session attach
Насколько я знаю, невозможно делиться сессиями с другими пользователями "чистым" способом.
Также доступ только для чтения невозможен, если клиент не использует
-r
коммутатор.Так как другой экран мультиплексора терминала поддерживает функции, которые вы ищете, к сожалению, также громоздко ... Я не уверен, если это вариант для вас, но, возможно, кто-то другой найдет это полезным.
Решение для экрана :
Провести сеанс:
screen -S sessionname
:multiuser on
:acladd otherUsername
Присоединиться к сеансу:
screen -x username/sessionname
Вы можете установить биты прав доступа для пользователя (* для всех) с помощью
:aclchg
или:chacl
. # добавлено будет влиять на окна,? добавлено будет влиять на команды.Примеры:
:aclchg * -wx "#,?"
установит разрешения сеанса только для чтения для всех пользователей:aclchg foo +w 2
предоставит доступ на запись для пользователя foo в окне 2:aclchg bar +x detach
даст разрешение на отключение сеанса от панели пользователяисточник
Это не только для tmux, но сейчас я использую:
Вы можете использовать
script -f /path/to/some/file
для записи сеанса терминала в файл.-f
Опция обновляет файл при вводе.Кто-то другой (с разрешениями только на чтение файла, если хотите) может сделать
tail -f
для просмотра файла ваш сеанс терминала.-f
Опция делаетtail
вывод любых добавляемый.Комбинация двух «синхронизирует» вид терминала. При использовании с tmux он также имеет преимущество в том, что позволяет избежать изменения размера, которое происходит, когда оба пользователя имеют разные разрешения. Другая особенность заключается в том, что каждый пользователь может работать с другим частным окном или сеансом.
Одно потенциальное неудобство состоит в том, что некоторые команды (например, основанные на ncurses) могут делать странные вещи с выводом, а также escape-последовательности (цвета). Тем не менее, я использую это внутри tmux, и кажется, что tmux решает эти проблемы. Я вижу, как другой пользователь читает справочные страницы и использует другие команды для создания буферов, цвета отображаются правильно и т. Д.
Это не позволяет записывать в терминалы друг друга, хотя (возможно, для этого может быть добавлено другое решение).
Мне нравится, когда у меня есть окно с двумя панелями: одна панель работает,
script -f
чтобы мой коллега мог видеть, другая - рядом с ней, где яtail -f
- терминал.Он также работает в ttys (и сокеты или именованные каналы могут быть использованы для файла)
источник