173 lines
5.9 KiB
Markdown
173 lines
5.9 KiB
Markdown
# TMUX
|
||
|
||
- [TMUX](#tmux)
|
||
- [Установка](#установка)
|
||
- [tmux](#tmux-1)
|
||
- [TPM (Tmux Plugin Manager)](#tpm-tmux-plugin-manager)
|
||
- [Dracula Theme](#dracula-theme)
|
||
- [Разделяемая сессия между 2-мя пользователями](#разделяемая-сессия-между-2-мя-пользователями)
|
||
- [Заблокировать пользователя после завершения совместной работы](#заблокировать-пользователя-после-завершения-совместной-работы)
|
||
|
||
## Установка
|
||
|
||
### tmux
|
||
|
||
```bash
|
||
apt-get install tmux
|
||
```
|
||
|
||
### TPM (Tmux Plugin Manager)
|
||
|
||
<https://github.com/tmux-plugins/tpm>
|
||
|
||
```bash
|
||
git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm
|
||
```
|
||
|
||
добавить в конфиг `~/.tmux.conf`
|
||
|
||
```bash
|
||
# List of plugins
|
||
set -g @plugin 'tmux-plugins/tpm'
|
||
set -g @plugin 'tmux-plugins/tmux-sensible'
|
||
|
||
# Other examples:
|
||
# set -g @plugin 'github_username/plugin_name'
|
||
# set -g @plugin 'github_username/plugin_name#branch'
|
||
# set -g @plugin 'git@github.com:user/plugin'
|
||
# set -g @plugin 'git@bitbucket.com:user/plugin'
|
||
|
||
# Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf)
|
||
run '~/.tmux/plugins/tpm/tpm'
|
||
```
|
||
|
||
### Dracula Theme
|
||
|
||
<https://draculatheme.com/tmux>
|
||
|
||
***
|
||
|
||
***Конфиг*** *(пользовательский / системный)*
|
||
|
||
```bash
|
||
~/.tmux.conf
|
||
/etc/tmux.conf
|
||
```
|
||
|
||
***Включить поддержку мыши*** *(в конфиг добавить)*
|
||
|
||
```bash
|
||
set -g mouse on
|
||
```
|
||
|
||
***Запуск*** *(без параметров будет создана сессия `0`)*
|
||
|
||
```bash
|
||
tmux
|
||
```
|
||
|
||
новая сессия `session1`. Название отображается снизу-слева в квадратных скобках в статус строке. Далее идет перечисление окон. Текущее окно помечается звездочкой.
|
||
|
||
```bash
|
||
tmux new -s session1
|
||
```
|
||
|
||
***Окна***
|
||
`Ctrl+b с` - новое окно
|
||
`Ctrl+b w` - список окон. переключиться курсором вверх-вниз
|
||
`Ctrl+b &` - закрыть окно, нужно подтвердить `y`
|
||
`Ctrl+b {` - переместить активное окно влево по кругу
|
||
|
||
***Переключение***
|
||
`Ctrl+b n` - следующее окно
|
||
`Ctrl+b p` - предыдущее окно
|
||
`Ctrl+b 0` - переключиться на номер окна
|
||
|
||
***Деление окна***
|
||
`Ctrl+b "` - деление окна горизонтально или `tmux split-window -h`
|
||
`Ctrl+b %` - деление окна вертикально или `tmux split-window -v`
|
||
`Ctrl+b стрелки` - переход между панелей, либо режим мыши
|
||
`Ctrl+b+стрелки` - изменение размеров панелей или `Ctrl+b Ctrl+стрелки`. Или мышью - потянуть за край панели.
|
||
`Ctrl+b z` - zoom, выделить окно, повторное нажатие вернёт обратно
|
||
`Ctrl+b space` - смена разделения на предопределённые расположения
|
||
`Ctrl+d` - закрыть текущее окно
|
||
`Ctrl+b x` - закрытие окон, нужно подтвердить `y` или `exit`
|
||
|
||
***Сессии***
|
||
`Ctrl+b d` - отключение от сессии или `tmux detach`
|
||
`tmux ls` - список сессий
|
||
|
||
*Подключиться к работающей сессии*
|
||
`tmux attach` - подключение к сессии, либо к единственной, либо последней созданной
|
||
`tmux attach -t session1` - подключение к сессии session1
|
||
`Ctrl+b s` - выбрать сессию
|
||
`tmux kill-session -t session1` - завершение сессии
|
||
`tmux kill-server` - завершить все сессии
|
||
|
||
***
|
||
|
||
`tmux list-commands` - cписок поддерживаемых команд
|
||
|
||
### Разделяемая сессия между 2-мя пользователями
|
||
|
||
Чтобы несколько пользователей могли подключиться к одной сессии tmux, можно выполнить следующие шаги:
|
||
|
||
- создать общую группу и добавить пользователей в эту группу
|
||
|
||
```bash
|
||
su -
|
||
TMUX_GROUP=tmuxgroup
|
||
groupadd $TMUX_GROUP
|
||
usermod -aG $TMUX_GROUP user1
|
||
usermod -aG $TMUX_GROUP user2
|
||
```
|
||
|
||
- создать директорию с битом `setgid`, в которой будет создаваться сокет разделяемой сессии tmux
|
||
|
||
```bash
|
||
mkdir /var/tmux
|
||
chgrp $TMUX_GROUP /var/tmux
|
||
chmod g+ws /var/tmux
|
||
```
|
||
|
||
- создать общую сессию
|
||
|
||
```bash
|
||
tmux -S /var/tmux/shared-session
|
||
```
|
||
|
||
- второй пользователь может подключиться к созданной сессии
|
||
|
||
```bash
|
||
tmux -S /var/tmux/shared-session attach
|
||
```
|
||
|
||
### Заблокировать пользователя после завершения совместной работы
|
||
|
||
После завершения совместной работы можно заблокировать учётную запись второго пользователя, чтобы не было возможности несанкционированного подключения к узлу.
|
||
|
||
```bash
|
||
usermod -L user2
|
||
```
|
||
|
||
Чтобы разблокировать пользователя, вводим:
|
||
|
||
```bash
|
||
usermod -U user2
|
||
```
|
||
|
||
Текущий статус блокировки учётной записи
|
||
|
||
```bash
|
||
da2001@bastion:~ $ sudo passwd -S tmuxuser
|
||
tmuxuser L 04/08/2024 0 99999 7 -1
|
||
da2001@bastion:~ $ sudo passwd -S da2001
|
||
da2001 P 04/04/2022 0 99999 7 -1
|
||
da2001@bastion:~ $
|
||
```
|
||
|
||
где
|
||
|
||
- `L` - учётная запись заблокирована
|
||
- `P` - учётная запись разблокирована
|