1

У меня есть следующая запись в /etc/passwd :

daemon:x:2:2:daemon:/sbin:/sbin/nologin

Тем не менее, когда я sudo -su daemon $HOME выглядит как /root:

[root@sbecby07 ~]# sudo -su daemon 'echo $USER $HOME'
daemon /root

Я уже сделал sudo usermod -d /sbin daemon чтобы изменить его обратно на /sbin но он все еще указывает на /root .

Я также не нахожу никакой строки, модифицирующей $ HOME, в /etc/profile .

Где мне искать дальше?

2 ответа2

2

Есть разница между sudo -s и sudo -i .

Вы используете sudo -s , который не устанавливает ресурсы целевого пользователя, включая переменную $HOME . Он просто загружает оболочку пользователя.

sudo -i запускает оболочку как оболочку входа в систему, которая похожа на новый сеанс, включая установку правильного дома, а также загрузку .profile и .login .

Смотрите man sudo для деталей.


демонстрация

Вы можете увидеть различия между sudo -s и sudo -i здесь:

root@node51 [~]# sudo -s -u deltik echo '$USER' '$HOME'
deltik /root
root@node51 [~]# sudo -i -u deltik echo '$USER' '$HOME'
deltik /home/deltik
1

Как уже было сказано, sudo -i - это правильная команда для фактического открытия оболочки входа для этого пользователя, которая затем имеет правильную среду, включая набор $ HOME.

Однако, если вы действительно хотите это сделать, вам нужно иметь действительную оболочку входа в систему, определенную в вашем /etc /passwd, поэтому вы должны сначала изменить /sbin /nologin на - например - /bin /bash.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .