notes/tmux/tmux.md

173 lines
5.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 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` - учётная запись разблокирована