Назад | Перейти на главную страницу

Псевдонимы, определенные при входе в систему, похоже, не работают с sudo

Я хотел бы определить некоторые глобальные псевдонимы, которые были бы доступны для всех в многопользовательской системе Linux (ярлыки git и т. Д.). Кажется, у меня есть два варианта; либо поместите эти псевдонимы в (что-то вроде) /etc/profile.d/aliases_for_all или редактируя их в /etc/bash.bashrc.

Мне нравится подход aliases_for_all, поскольку я могу поддерживать один файл, который не порождает .dpkg- * файлы как кролик после применения обновлений.

Применение изменений к /etc/bash.bashrc становится сложно редактировать / обновлять в масштабе - особенно в среде с несколькими дистрибутивами / версиями.

Проблема здесь в том, что пользователь не может выполнить одноразовую команду sudo с использованием псевдонима. Учитывая псевдоним ds="find . -maxdepth 1 -type d -exec du -sh '\''{}'\'' \;", он доступен для первоначального входа пользователя:

$ alias | grep ds
alias ds='find . -maxdepth 1 -type d -exec du -sh '\''{}'\'' \;'

Я перехожу в / var и запускаю через sudo, но его там нет:

$ cd /var
$ sudo ds
sudo: ds: command not found

Ах да, sudo сбрасывает среду, поэтому, возможно, оболочка входа в систему:

$ sudo --login ds
-bash: ds: command not found

Гм .. все еще не работает, но псевдоним говорит, что он есть:

$ sudo --login alias | grep ds
alias ds='find . -maxdepth 1 -type d -exec du -sh '\''{}'\'' \;'

Это мое /etc/sudoers файл:

Defaults    env_reset,timestamp_timeout=10
Defaults    mail_badpass
Defaults    secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
root    ALL=(ALL:ALL) ALL

%admin ALL=(ALL) ALL
%sudo   ALL=(ALL:ALL) ALL

..и /etc/sudoers.d/sysadmin_group файл (группа LDAP, в которой находится пользователь выше):

%sysadmin ALL=(ALL) ALL

Может, у меня тут еще что-то не так. Должен ли быть способ заставить эти псевдонимы работать с sudo?