Получить домашний каталог пользователей, когда они запускают скрипт как root - PullRequest
26 голосов
/ 09 сентября 2011

У меня есть скрипт sh, который нужно запустить от имени пользователя root, однако он запускается конечным пользователем с помощью sudo.Как я могу получить домашний каталог пользователей, когда ~ / указывает на / root при запуске с sudo?

Ответы [ 5 ]

42 голосов
/ 09 сентября 2011

Старайтесь избегать оценки. Особенно с химической завивкой.

Вы можете сделать:

USER_HOME=$(getent passwd $SUDO_USER | cut -d: -f6)

Обновление:

здесь - вот почему следует избегать eval.

27 голосов
/ 09 сентября 2011

Домашний каталог пользователя будет ~$SUDO_USER.Вы можете использовать eval следующим образом:

USER_HOME=$(eval echo ~${SUDO_USER})
echo ${USER_HOME}
8 голосов
/ 09 сентября 2011
$ sudo env |grep USER
USER=root
USERNAME=root
SUDO_USER=glglgl

Таким образом, вы можете получить доступ к $SUDO_USER и запросить у системы его homedir с помощью getent passwd $SUDO_USER | cut -d: -f6.

4 голосов
/ 09 сентября 2011

Попробуйте получить доступ к переменной среды $ SUDO_USER

1 голос
/ 20 августа 2013

Если я не понял вопрос, когда пользователь запускает скрипт с помощью sudo, переменная окружения $HOME не изменяется. Чтобы проверить, я создал этот скрипт:

#!/bin/bash
#sudo_user.sh
env | grep -e USER -e HOME

... и запустите его:

sudo ./sudo_user.sh

Выход:

USER=root
HOME=/home/haiv
USERNAME=root
SUDO_USER=haiv

Вывод говорит мне, что $HOME по-прежнему указывает на дом пользователя (в данном случае, / home / haiv ).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...