登录时定义的别名似乎不适用于 sudo

登录时定义的别名似乎不适用于 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 会重置环境,因此可能是登录 shell:

$ 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 一起使用?

相关内容