![Изменение HOME пользователя во время графического сеанса](https://rvso.com/image/36388/%D0%98%D0%B7%D0%BC%D0%B5%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5%20HOME%20%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8F%20%D0%B2%D0%BE%20%D0%B2%D1%80%D0%B5%D0%BC%D1%8F%20%D0%B3%D1%80%D0%B0%D1%84%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B3%D0%BE%20%D1%81%D0%B5%D0%B0%D0%BD%D1%81%D0%B0.png)
На днях у меня возникла идея создать независимую гостевую сессию Display Manager.
Моя основная идея состояла в том, чтобы изменить оболочку входа в систему на пользовательскую программу, которая создает временный дом на лету (например, /tmp/guest-XXXXXX
) и назначает этот дом этой сессии. После выхода пользователя он снова удалял этот каталог. Проблема, с которой я столкнулся, заключается в следующем: мне нужно установить дом, /etc/passwd
и я могу без проблем перезаписать переменную окружения HOME, но приложения, похоже, все равно используют установленный дом passwd
вместо переменной окружения, по крайней мере в графической среде. Я не могу установить дом, passwd
потому что не знаю об этом, пока сеанс не начнется.
Основная логика, к которой я пришел, выглядит так:
- запущена оболочка входа
- временный дом создан
- HOME настроен на этот временный дом
- настоящая оболочка раздвоена
- после того, как настоящая оболочка заканчивается, временный дом удаляется
Кажется, это работает, когда я su
вхожу в систему пользователя, но запуск графического сеанса означает, что большинство/все запущенные программы используют домашний набор в passwd
.
Можно ли изменить домашний адрес пользователя на лету/во время активного графического сеанса? Я что-то упустил в архитектуре работы графических сеансов?