Это пока невозможно с tmux. Пока можно только заблокировать терминал. Разработчики что-то спорят о том, что если у кого-то есть доступ к другой оболочке в системе, то вам все равно тост.
Однако я нашел быстрое решение, используя права доступа к файлам и атрибуты для блокировки. Я собрал его в 3 файла bash, которые вам нужно будет добавить в свой $PATH.
старт.ш
#!/bin/bash
if [[ ! -d ~/.tmux-sessions ]]; then
mkdir ~/.tmux-sessions
fi
tmux -S ~/.tmux-sessions/secure
Как только вы захотите выйти из сеанса, сделайте это обычным образом, нажав ctrl+b,d --, после чего вам нужно будет запустить lock.sh , как показано ниже.
лок.ш
#!/bin/bash
chmod 000 ~/.tmux-sessions
sudo chattr +i ~/.tmux-sessions
sudo -k
Это заблокирует сокет, используемый для подключения к tmux. Никто не сможет получить к нему доступ, пока вы не удалите неизменяемый атрибут из каталога сокета и не вернете права доступа в нормальное состояние. К счастью, мы можем создать скрипт и для этого :
.прикрепить.ш
#!/bin/bash
sudo chattr -i.tmux-sessions
chmod 770.tmux-sessions
tmux -S ~/.tmux-sessions/secure attach
После этого вы сможете просто запустить attach.sh, который запросит у вас пароль пользователя для повторного -открытия.
Надеюсь, этот лайфхак поможет!
Для блокировки терминала.
Сначала необходимо установить vlock.
sudo apt install vlock
или любую другую команду менеджера пакетов, которую вы используете.
Затем вы настраиваете tmux на использование vlock
echo "set-option -g lock-command vlock" >> ~/.tmux.conf
Затем, когда вы находитесь в tmux, вы можете сделать:
ctrl+b,:lock-session[enter]
Это заблокирует клемму . Предупреждение: кто-то все еще может подключиться к сеансу с другого терминала. Я ищу, есть ли способ предотвратить это.