Как сменить пользователя без ссылок на старого?

Как сменить пользователя без ссылок на старого?

Некоторое время назад, играясь с непривилегированным 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.

Связанный контент