Eu gostaria de definir alguns aliases globais que estariam disponíveis para todos em um sistema Linux multitarefa (atalhos git, etc). Parece que tenho duas opções disponíveis; coloque esses aliases em (algo como) /etc/profile.d/aliases_for_all
ou editando-os em /etc/bash.bashrc
.
Eu gosto da abordagem aliases_for_all, pois posso manter um único arquivo que não cria arquivos .dpkg - * como um coelho depois de aplicar as atualizações.
A aplicação de alterações em /etc/bash.bashrc
é difícil de editar / atualizar em escala - especialmente em um ambiente com várias distribuições / versões.
A ruga aqui é que um usuário não pode fazer um comando one-shot sudo usando um alias. Dado o alias ds="find . -maxdepth 1 -type d -exec du -sh '\''{}'\'' \;"
, está disponível para o login do usuário inicial:
$ alias | grep ds
alias ds='find . -maxdepth 1 -type d -exec du -sh '\''{}'\'' \;'
Eu mudo para / var e executo via sudo, mas não está lá:
$ cd /var
$ sudo ds
sudo: ds: command not found
Ah, sim, o sudo reseta o ambiente, então talvez um shell de login:
$ sudo --login ds
-bash: ds: command not found
Um ... ainda não funciona, mas alias diz que está lá:
$ sudo --login alias | grep ds
alias ds='find . -maxdepth 1 -type d -exec du -sh '\''{}'\'' \;'
Este é o meu arquivo /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
.. e /etc/sudoers.d/sysadmin_group
file (grupo LDAP em que o usuário está acima):
%sysadmin ALL=(ALL) ALL
Talvez eu tenha algo mais fora de sintonia aqui. Deve haver uma maneira de obter esses aliases trabalhando com o sudo?