Как совместно использовать псевдонимы удара между некорневым пользовательским ударом и оболочкой, открытой “sudo-i”?

Я используюсь для использования sudo -i и не имейте a root набор пароля, т.е. su - не работает. Я ищу способ совместно использовать bash псевдонимы между пользовательской оболочкой (например, та, открытая, когда я запускаю gnome-terminal запущенный как пользователь, который вошел в менеджера по оформлению), и оболочка, открытая sudo -i.

Согласно man sudo это - оболочка входа в систему и afaik, который это должно получить ~/.profile, т.е. /root/.profile, но вставление псевдонимов /root/.profile не работает. Только если я работаю bash в оболочке, открытой sudo -i псевдоним доступен. Согласно /etc/passwd rootоболочка bash и SHELL переменная подтверждает что (в оболочке, запущенной sudo -i).

Я предпочел бы не вставлять псевдонимы /etc/profile потому что это выставило бы их любому пользователю, и я только хочу иметь их для пользователя менеджера по оформлению и root.

3
задан 11 August 2016 в 00:52

2 ответа

Связанное сообщение Serverfault предлагает использовать /etc/bashrc, но я лично рекомендовал бы создать /etc/shell_aliases файл (по-видимому /etc/aliases sendmail пакетом , уже резервируется), и получите его от и пользователей root своего пользователя .bashrc файл. Тем путем можно переопределить псевдонимы глобально.

Альтернативный подход как показано в этом сообщение AskUbuntu должно использовать /etc/profile.d/00-aliases.sh.

$ sudo bash -c 'echo alias print_hello=\"echo 'HELLO\ ASKUBUNTU'\" > /etc/profile.d/00-aliases.sh  ' 
$ sudo -i
$ print_hello
HELLO ASKUBUNTU

примечание Стороны: для оболочек графического пользовательского интерфейса, необходимо будет выйти из системы и войти в систему, потому что .profile получен каждый раз, когда Вы входите в систему, и после того как Вы поете в систему через графический экран входа в систему, она будет получена, но только однажды. Все открытые эмуляторы терминала считают интерактивными оболочками после этого.

3
ответ дан 1 December 2019 в 16:21

Мне помогло. Откройте корневой файл .bashrc и отредактируйте функцию bash_aliases.

Изменить:

if [ -f ~/.bash_aliases ]; then
    . ~/.bash_aliases
fi

на

if [ -f /home/[username]/.bash_aliases ]; then
    . /home/[username]/.bash_aliases 
fi
0
ответ дан 19 January 2021 в 19:58

Другие вопросы по тегам:

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