Aliases definidos no login não parecem funcionar com o sudo

1

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?

    
por Server Fault 09.02.2018 / 18:18

0 respostas

Tags