Некоторое время назад, играясь с непривилегированным LXC, я обнаружил, что команда создания контейнера не выполнялась, если я переключался su
на пользователя, но работала, если я ssh user@localhost
входил в систему.
Это вопрос, не связанный с LXC, но он заставил меня задуматься, как лучше всего сменить пользователя, не оставляя ссылок и не перенося переменные из старого?
Спасибо!
решение1
Разница между su
и ssh
заключается в том, что последний фактически включает оболочку входа в систему, тогда как первый по умолчанию этого не делает, хотя и создает новую интерактивную оболочку (см. ВЫЗОВ в верхней части man bash
для получения информации о значенииинтерактивныйиавторизоватьсяракушки). Из man su
:
Для обратной совместимости su по умолчанию не меняет текущий каталог и устанавливает только переменные окружения HOME и SHELL (плюс USER и LOGNAME, если целевой пользователь не является root). Рекомендуется всегдаиспользуйте опцию --login(вместо сокращения -), чтобы избежать побочных эффектов, вызванных смешиванием сред.
Итак, вы можете попробовать su --login
и посмотреть, соответствует ли это вашим ожиданиям.
Я предполагаю, что вы используете GUI, поэтому вы просто не выходите и не входите снова. Однако, этоможетбыть возможным в любом случае (в зависимости, как я полагаю, от вашей системы инициализации), просто запустив login
из любого терминала, который вы используете. Если это сработает, вы должны увидеть нормальное login:
приглашение, и когда вы закончите, вы можете exit
из него, как указано в su
.