Execute um comando após o sudo

2

O histórico

Estou trabalhando em um ambiente CentOS com várias máquinas CentOS. Atualmente, há vários desenvolvedores que têm seu próprio diretório de login / início e, para várias tarefas administrativas, todos compartilhamos uma única conta de superusuário.

O problema

Eu tenho vários aliases, variáveis, funções e configurações que existem no .bash_profile do meu login pessoal. Nenhum desses está disponível no .bash_profile do superusuário compartilhado. Meu trabalho atual é que toda vez que eu sudo em como o super usuário e re-execute meu .bash_profile do diretório pessoal do meu usuário pessoal. Eu não tenho permissão para editar o material do init para o superusuário

A questão

Existe alguma maneira de automatizar minha sequência sudo de forma que ela execute o meu perfil .bash_profile depois de eu ter executado o sudo sem precisar que eu edite o material do init do bash do super usuário?

    
por nsfyn55 04.05.2011 / 19:48

3 respostas

1

Você pode manter aliases usando esse truque:

alias sudo='sudo '

Que permite que o próximo argumento seja verificado para expansão de alias (a partir do seu perfil atual!)

De alias de homem:

A trailing space in value causes the next word to be checked for alias substitution when the alias is expanded.

YMMV para as funções, etc.

O env_reset em / etc / sudoers é a outra solução que encontrei.

link

    
por 05.05.2011 / 13:39
1

sudo tem a opção de manter o ambiente da pessoa invocando-a, embora com algumas ressalvas. Da página do manual

-E The -E (preserve environment) option will override the env_reset option in sudoers(5)). It is only available when either the matching command has the SETENV tag or the setenv option is set in sudoers(5).

    
por 04.05.2011 / 19:52
1

edite / etc / sudoers (visudo)

crie ou modifique a variável env_keep dos Padrões

Defaults    env_keep = "COLORS DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR \
                        LS_COLORS MAIL PS1 PS2 QTDIR"

Isso manterá as variáveis de ambiente especificadas em seu ambiente após a execução do sudo.

Ou comentar Padrões env_reset, mas observe que isso é perigoso!

#Defaults    env_reset

Isso mantém todo o ambiente do shell antes do sudo ser executado.

    
por 04.05.2011 / 23:25