
Мы пытаемся переписать драконовский метод отключения сеанса для пользователей, которые оставляют сеансы включенными на экране на чрезмерное количество времени и тем или иным образом обходят наши тайм-ауты сеанса.
Текущий метод заключается в том, чтобы найти pid для screen и убить его, если похоже, что программа screen написана таким образом, что вы можете подключаться к сеансам других пользователей, но когда я пытаюсь сделать что-либо как root, каталог screen — это другой каталог. Предполагаю, что это сделано из соображений безопасности, но есть ли способ намеренно переопределить это, чтобы я мог просто сделать что-то вроде screen -r somedude/33333 -d -X quit
? как root?
решение1
Стандартные screen
экземпляры — это singleuser
, т.е. доступ к каждому экземпляру может получить только тот пользователь, который его создал.
Чтобы разрешить многопользовательский screen
экземпляр, вы можете добавить следующие команды:
multiuser on
addacl root,<user1>,<user2>,...
в вашу глобальную screen
конфигурацию, т. е. /etc/screenrc
.
Все screen
экземпляры после этого должны быть многопользовательскими screen
, т.е. могут быть присоединены другими пользователями, указанными в addacl
; за исключением случаев, когда это переопределено пользовательскими командами.
Вы можете вывести список экранов пользователя с помощью
$ find /var/run/screen -type s
/var/run/screen/S-<user>/<pid>.<tty>.<host>
и прикрепить к экрану другого пользователя с помощью
$ screen -d -r <user>/<pid>
Проверятьman screen
, Раздел настройки для получения дополнительной информации о screenrc
.
screenrc
Обратите внимание, что каждый пользователь может также добавлять в файл свои собственные пользовательские команды $HOME/.screenrc
, тем самым отключая многопользовательский экран для своего пользователя.