Como posso passar um alias para o sudo?

38

Eu tentei colocar meus aliases em ~/.bash_profile, ~/.bashrc, /etc/profile, e /etc/bashrc.

Ainda não consigo executar o seguinte:

alias zf2="php public/index.php"

e então execute:

sudo zf2 orm:info

O problema parece ser que não consigo especificar um alias como um comando usando visudo - o que causa um erro de sintaxe.

Portanto, não consigo ligar para:

sudo zf2 orm:info

No entanto, consegui criar um script em / usr / share / scripts / zf2 que contém:

#!/bin/bash

alias zf2="php public/index.php"
zf2 $1

e adicione este script como o comando no visudo. Quando esse script está no PATH do usuário final, sou capaz de executar

zf2 orm:info

Eu tenho aliases diferentes como zf2esse que preciso expor para o usuário final. Eu preferiria manter o alias em vez de uma coleção de scripts.

Michael Niño
fonte
1
Infelizmente, quero usar aliases no visudo e não consigo.
Michael Niño
2
Isso não é possível. Os aliases são manipulados pelo shell (no seu caso, bash) e expandidos antes de serem enviados para o aplicativo. sudoem si não sabe nada sobre aliases.
Steven
2
Como o @Steven é tecnicamente correto, você deve esclarecer se deseja simplesmente expandir os aliases antes de sudopassar a linha ou se deseja expandir os aliases no ambiente elevado. A pediatria não é apenas uma maneira de obter reviravoltas. (Uau, mas essa última frase não parece kosher em tudo.)
CAN-ned_food
3
Possível duplicata de Como posso alias um comando para sudo?
Gilles 'SO- stop be evil' -
1
Tente comsudo -E
Denis de Bernardy

Respostas:

66

Ironicamente, a solução é chamar sudode um alias.

alias sd="sudo "

Nota: Embora não seja recomendado, você pode nomear o alias sudo:alias sudo="sudo "

Manual de Referência do Bash (Aliases)

Se o último caractere do valor do alias estiver em branco, a próxima palavra de comando após o alias também será verificada quanto à expansão do alias.

Steven
fonte
7
Talvez eu possa ver razões pelas quais alguém gostaria e não gostaria que isso fosse feito como padrão para qualquer sistema. A conveniência e expectativa, conforme solicitado, versus ser mais cuidadoso com privilégios elevados.
Pysis
5
alias sd="sudo "pode acontecer?
The Nate
Depois de revisar meus aliases, notei que não tinha alias sudo="sudo "no ambiente de usuários finais. Esta é a resposta
Michael Niño