У меня есть два пользователя с именами 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
независимо от оболочки, указанной в записи базы данных паролей целевого пользователя.