Команда su не устанавливает значение BASH_VERSION и не загружает профиль

Команда su не устанавливает значение BASH_VERSION и не загружает профиль

У меня есть версия сервера Ubuntu 20.04 LTS и возникла странная проблема с созданием нового пользователя и использованием его в оболочке из ssh-подключения. Действия по ее воспроизведению:

  1. Используйте учетную запись root для создания нового пользователя с помощью useradd --create-home test.
  2. Войдите в систему как пользователь root, чтобы протестировать использование su test.

Результат:

root@server:~# useradd --create-home test;
root@server:~# echo $BASH_VERSION
5.0.17(1)-release
root@server:~# su test;
$ echo $BASH_VERSION
$

Приглашение не задано, переменные среды не загружены, автозаполнение не работает, псевдонимы не работают, как будто файлы .profile и .bashrc не существуют, хотя они существуют и их разрешения установлены правильно:

root@server:/home/test# md5sum /etc/skel/.profile ./.profile 
f4e81ade7d6f9fb342541152d08e7a97  /etc/skel/.profile
f4e81ade7d6f9fb342541152d08e7a97  ./.profile
root@server:/home/test# md5sum /etc/skel/.bashrc ./.bashrc
1f98b8f3f3c8f8927eca945d59dcc1c6  /etc/skel/.bashrc
1f98b8f3f3c8f8927eca945d59dcc1c6  ./.bashrc
root@server:/home/test# ls -lah
total 24K
drwxr-xr-x  3 test test 4.0K Sep 18 13:18 .
drwxr-xr-x  9 root root 4.0K Sep 18 13:17 ..
-rw-r--r--  1 test test  220 Feb 25  2020 .bash_logout
-rw-r--r--  1 test test 3.7K Feb 25  2020 .bashrc
-rw-r--r--  1 test test  807 Feb 25  2020 .profile

Почему профиль не загружается, когда я вхожу в систему как тестовый пользователь?

решение1

Как говорится в документации su:

Для обратной совместимости suпо умолчанию текущий каталог не изменяется, а задаются только переменные окружения HOME и SHELL (плюс USER и LOGNAME, если целевой пользователь не является root). Рекомендуется всегда использовать опцию --login(вместо ее сокращения -), чтобы избежать побочных эффектов, вызванных смешиванием сред.

Когда под --loginили -l, suтакже запускаетсяавторизоватьсяshell, которая в свою очередь является источником .profile( .bashrcдолжна быть всегда источником).

Чтобы увидеть, какие файлы загружены, вставьте простую строку в их начало:

echo "$BASH_SOURCE" >&2

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