Какие файлы конфигурации оболочки читаются для оболочки, запущенной с помощью "sudo -i"?

Согласно man sudo sudo -i запускает оболочку входа в систему и должен в моем понимании читать/создавать ~/.profile, т.е. /root/profile или [не корневой пользователь home/.profile и /etc/profile. Добавление псевдонимов, например, alias ll='ls -la' к обоим файлам не делает псевдоним доступным в оболочке, запускаемой sudo -i. Если я запускаю bash в оболочке, запущенной sudo -i, псевдонимы доступны.

Я уже разобрался, что нужно поместить алиасы в /etc/profile.d/00-aliases.sh в https://askubuntu.com/questions/810730/how-to-share-bash-aliases-between-non-root-user-bash-and-shell-opened-by-sudo. Здесь я просто хочу знать, почему ожидаемое поведение не происходит.

Я сообщил об этом как об ошибке sudo на launchpad.net, но теперь я не уверен, может ли это быть хитрым аспектом ожидаемого поведения. То, как man sudo описывает -i, в любом случае слишком тривиально.

0
13.04.2017, 15:22
1 ответ

Считываемые файлы зависят от оболочки целевого пользователя. Так, например, если вы sudo -u user1 -i и user1 использует csh , тогда он будет читать ~ user1 / .login . Для пользователей ksh это будет ~ user1 / .profile .

Для пользователей bash (например, root ) файл читается как ~ / .bash_profile , если он существует, с откатом на ~ /.profile

eg

% sudo head -1 /root/.bash_profile /root/.profile 
==> /root/.bash_profile <==
echo RUNNING BASH_PROFILE

==> /root/.profile <==
echo RUNNING PROFILE

% sudo -i
RUNNING BASH_PROFILE
root@server:~# rm /root/.bash_profile
root@server:~# exit
logout

% sudo -i
RUNNING PROFILE
root@server:~# 

Итак, мы видим, что наличие .bash_profile препятствует запуску .profile . Это нормальное поведение для оболочек входа в bash , независимо от того, осуществляется ли доступ через ssh или через sudo -i .

0
28.01.2020, 04:50

Теги

Похожие вопросы