Конфигурация среды не отражается при переключении пользователей в Ubuntu 22.04

Конфигурация среды не отражается при переключении пользователей в Ubuntu 22.04

У меня есть два пользователя с именами Alice и Sally в моей системе Ubuntu 22.04. Alice настроила свои переменные окружения в файле .profile, и они работают для нее правильно. Однако, когда Alice переключается на пользователя Sally с помощью команды sudo -s -u sally, настройки окружения из .profile Alice не отражаются для Sally.

alice@dev7 192 0 % echo $appuser     
alice
alice@dev7 193 0 % env  | grep appuser
appuser=alice
alice@dev7 194 0 % sudo -s -u sally
sally@dev7 196 0 % echo $appuser

sally@dev7 197 0 %

Я проверил, что файл .profile присутствует в домашнем каталоге Салли и имеет необходимую конфигурацию. Я хотел бы понять, почему переменные среды не применяются для Салли, когда Алиса переключается на своего пользователя с помощью sudo -s -u sally. Требуются ли какие-либо дополнительные шаги или конфигурации, чтобы гарантировать, что настройки среды переносятся при переключении пользователей таким образом?

решение1

~/.profileвызывается при входе пользователя в систему... Поэтому sudo -u userвам нужно использовать -i, --loginдля того, чтобы «запустить оболочку, указанную в записи базы данных паролей целевого пользователя, как оболочку входа в систему», например так:

sudo -i -u sally

Уведомление: Вы не можете указать оба параметра -iи -s.

Однако, если вы хотите сохранить текущий выбор оболочки пользователем, то вы можете использовать sudo su ...следующий код:

sudo su - sally --shell "$SHELL"

или укажите выбранную вами оболочку, например, /bin/bashтак:

sudo su - sally --shell /bin/bash

независимо от оболочки, указанной в записи базы данных паролей целевого пользователя.

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