Что другие пути состоят в том, чтобы совместно использовать tmux сессию между двумя пользователями?

Я не знаю ни о каком способе использовать bash. Но это - одна из самых популярных функций zsh.
Лично я предпочитаю zsh bash таким образом, я рекомендую пробовать его.

Вот часть моего .zshrc это имеет дело с историей:

SAVEHIST=10000 # Number of entries
HISTSIZE=10000
HISTFILE=~/.zsh/history # File
setopt APPEND_HISTORY # Don't erase history
setopt EXTENDED_HISTORY # Add additional data to history like timestamp
setopt INC_APPEND_HISTORY # Add immediately
setopt HIST_FIND_NO_DUPS # Don't show duplicates in search
setopt HIST_IGNORE_SPACE # Don't preserve spaces. You may want to turn it off
setopt NO_HIST_BEEP # Don't beep
setopt SHARE_HISTORY # Share history between session/terminals

109
29.09.2010, 22:37
4 ответа

От https://github.com/zolrath/wemux:

wemux улучшает tmux для создания многопользовательского терминала, мультиплексирующего и легче и более мощный. Это позволяет пользователям разместить wemux сервер и сделать, чтобы клиенты присоединились также:

Зеркальный Режим дает клиентам (другой пользователь SSH на Вашей машине) доступ только для чтения к сессии, позволяя им видеть, что Вы работаете, или

Парный Режим позволяет клиенту и Вам работать в том же терминале (совместно использованный курсор)

Режим жулика позволяет клиенту соединяться или работать независимо в другом окне (отдельные курсоры) на той же tmux сессии.

Это показывает поддержку мультисервера, а также пользователя, перечисляющего и уведомления, когда пользователи присоединяют/отсоединяют.

Это - обертка сценария оболочки по tmux - никакая необходимая компиляция.

47
27.01.2020, 19:29

Я попробовал это на Ubuntu, но не вижу, почему она не работала бы над другими вариантами Unix.

Если оба пользователя являются членами общей группы, и путь сокета использует ту группу, которую оба пользователя смогут присоединить прекрасный.

Вместо того, чтобы иметь необходимость изменить полномочия пути сокета каждый раз, когда Вы создаете тот, Вы могли создать определенный каталог для сокетов (я использовал/var/tmux).

Сначала добавьте группу для tmux пользователей

$ addgroup $TMUX_GROUP

Создайте каталог с набором группы к $TMUX_GROUP и используйте бит setgid так, чтобы файлам, созданным в рамках каталога автоматически, установили группу на $TMUX_GROUP.

$ mkdir /var/tmux
$ chgrp $TMUX_GROUP /var/tmux
$ chmod g+ws /var/tmux

Затем удостоверьтесь пользователи, которые хотят совместно использовать сессию, члены $TMUX_GROUP

$ usermod -aG $TMUX_GROUP user1
$ usermod -aG $TMUX_GROUP user2
17
27.01.2020, 19:29
  • 1
    Если у Вас есть файловая система, которая поддерживает ACLs, Вы не должны использовать группу (и в особенности Вам не нужно никакое корневое вмешательство). Но это не решает проблему совместного использования tmux конфигурации, не так ли? –  Gilles 'SO- stop being evil' 11.04.2011, 23:15
  • 2
    Для создания совместно использованной сессии: tmux -S $TMUX_GROUP/shared-session. Присоединить к нему из другой учетной записи: tmux -S $TMUX_GROUP/shared-session attach –  jfs 20.09.2016, 20:14
  • 3
    , комментарий выше (@J.F.Sebastian) должен быть частью ответа. Предложенная установка в порядке, но ответ терпит неудачу при объяснении как к реальному использованию она. И для всех ответов на этой странице, этот ответ является тем, которые лучше решают проблему. удар –  Dr Beco 16.07.2017, 03:07

Насколько я знаю, не возможно совместно использовать встречи с другими пользователями "чистым" способом.

Также доступ только для чтения не возможен, если клиент не использует -r переключатель.

Поскольку другой экран оконечного мультиплексора поддерживает функции, которые Вы ищете, печально также громоздким способом... Я не уверен, является ли это опцией для Вас, но возможно кто-то другой найдет это полезным.

Решение для экрана:

Разместите сессию:

  • Бит SUID экрана должен быть установлен :-/
  • Откройте сессию с screen -S sessionname
  • ctrla + :multiuser on
  • ctrla + :acladd otherUsername

Присоединитесь к сессии:

  • screen -x username/sessionname

Можно установить биты полномочий для пользователя (* для всех) с :aclchg или :chacl. Добавленный # будет влиять на окна? добавленный будет влиять на команды.

Примеры:

  • :aclchg * -wx "#,?" установит полномочия сессии на только для чтения для всех пользователей
  • :aclchg foo +w 2 даст доступ для записи для пользовательского нечто на окне 2
  • :aclchg bar +x detach даст разрешение для отсоединения сессии к пользовательской панели
12
27.01.2020, 19:29
  • 1
    Если это имеет значение я чувствую, что tmux решением (хотя немного более подробный) является на самом деле "инструмент для очистки", так как оно не включает отъезд setuid двоичные файлы, плавающие вокруг файловой системы. –  Glyph 22.12.2010, 23:01
  • 2
    К сожалению, tmux использовал, это таким образом имеет проблему безопасности: те, к кому Вы предоставляете доступ, могут легко создать новые сессии и сделать вещи в них, что Вы не видите. –  Curt J. Sampson 05.09.2011, 08:37
[1130132]Это не исключение для tmux, но сейчас я использую:

Вы можете использовать [1130507]скрипт -f /path/to/some/file[1130508] для записи терминальной сессии в файл. Опция [1130509]-f[1130510] обновляет файл во время ввода.

Кто-то другой (при желании, только с правами на чтение файла) может сделать [1130511]tail -f[1130512], чтобы увидеть файл, вашу терминальную сессию. Опция [1130513]-f[1130514] заставляет [1130515]tail[1130516] выводить то, что будет добавлено. Комбинация из двух "синхронизированных" представлений терминала. При использовании с tmux, это также имеет преимущество, что позволяет избежать изменения размера, которое происходит, когда оба пользователя имеют разное разрешение. Другая особенность заключается в том, что каждый пользователь может работать над другим личным окном или сеансом.

Одним из потенциальных неудобств является то, что некоторые команды (например, основанные на ncurses) могут делать странные вещи с выводом, экранированные последовательности тоже (цвета). Однако, я использую это внутри tmux, и кажется, что tmux исправляет эти проблемы. Я вижу, как другой пользователь читает man-страницы и использует другие команды, которые создают буферы, цвета отображаются правильно и т.д.

Это не позволяет писать друг другу в терминал (может быть, для этого можно было бы добавить какое-нибудь другое решение).

Мне нравится иметь окно с двумя панелями: одна панель работает со скриптом [1130517]-f[1130518], чтобы мой сверстник мог видеть, другая рядом с ним, где я [1130519]хвост -f[1130520] это терминал.

#include <Misc.au3>

$dll = DllOpen("user32.dll")

Opt("WinTitleMatchMode", 2)
Opt("TrayIconHide", 1)
$vm = WinWait("VMware Workstation")

While True
    If WinActive($vm) Then
        If _IsPressed("06", $dll) Then
            Send("{AltDown}{Right}")
            While _IsPressed("06", $dll)
                Sleep(1)
            WEnd
            Send("{AltUp}")
        ElseIf _IsPressed("05", $dll) Then
            Send("{AltDown}{Left}")
            While _IsPressed("05", $dll)
                Sleep(1)
            WEnd
            Send("{AltUp}")
        EndIf
    ElseIf _IsPressed("05", $dll) And _IsPressed("06", $dll) Then
        If MsgBox(1 + 262144, "Exit", "Do you really want to exit...?") == 1 Then ExitLoop
    EndIf
    Sleep(1)
WEnd

DllClose($dll)

Это также работает в ttys (и сокеты или именованные трубы могут быть использованы также и для файла)[1130147].

10
27.01.2020, 19:29

Теги

Похожие вопросы