На днях у меня возникла идея создать независимую гостевую сессию Display Manager.
Моя основная идея состояла в том, чтобы изменить оболочку входа в систему на пользовательскую программу, которая создает временный дом на лету (например, /tmp/guest-XXXXXX
) и назначает этот дом этой сессии. После выхода пользователя он снова удалял этот каталог. Проблема, с которой я столкнулся, заключается в следующем: мне нужно установить дом, /etc/passwd
и я могу без проблем перезаписать переменную окружения HOME, но приложения, похоже, все равно используют установленный дом passwd
вместо переменной окружения, по крайней мере в графической среде. Я не могу установить дом, passwd
потому что не знаю об этом, пока сеанс не начнется.
Основная логика, к которой я пришел, выглядит так:
- запущена оболочка входа
- временный дом создан
- HOME настроен на этот временный дом
- настоящая оболочка раздвоена
- после того, как настоящая оболочка заканчивается, временный дом удаляется
Кажется, это работает, когда я su
вхожу в систему пользователя, но запуск графического сеанса означает, что большинство/все запущенные программы используют домашний набор в passwd
.
Можно ли изменить домашний адрес пользователя на лету/во время активного графического сеанса? Я что-то упустил в архитектуре работы графических сеансов?