¿Cómo puedo pasar un alias a sudo?


38

He intentado poner mis alias en ~/.bash_profile, ~/.bashrc, /etc/profile, y /etc/bashrc.

Todavía no puedo ejecutar lo siguiente:

alias zf2="php public/index.php"

y luego ejecutar:

sudo zf2 orm:info

El problema parece ser que no puedo especificar un alias como comando usando visudo, lo que causa un error de sintaxis.

Entonces no puedo llamar:

sudo zf2 orm:info

Sin embargo, pude crear un script en / usr / share / scripts / zf2 que contiene:

#!/bin/bash

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

y agregue este script como el comando en visudo. Cuando este script está en la RUTA del usuario final, puedo ejecutar

zf2 orm:info

Tengo diferentes alias como zf2ese que necesito exponer al usuario final. Preferiría mantener un alias en lugar de una colección de scripts.


1
Lamentablemente quiero usar alias en visudo y no puedo.
Michael Niño

2
Eso no es posible. El shell maneja los alias (en su caso bash) y se expande antes de enviarlos a la aplicación. sudoen sí mismo no sabe nada sobre alias.
Steven

2
Debido a que @Steven es técnicamente correcto, debe aclarar si simplemente desea expandir los alias antes de sudopasar la línea o si desea expandir los alias en el entorno elevado. La pedantería no es simplemente una forma de provocar la vista. (Wow, pero esa última oración no parece kosher en absoluto.)
can-ned_food


1
Pruébalo consudo -E
Denis de Bernardy

Respuestas:


66

Irónicamente, la solución es llamar sudodesde un alias.

alias sd="sudo "

Nota: Si bien no se recomienda, puede nombrar el alias sudo:alias sudo="sudo "

Manual de referencia de bash (alias)

Si el último carácter del valor de alias está en blanco, entonces la siguiente palabra de comando que sigue al alias también se verifica para la expansión de alias.


77
Tal vez pueda ver las razones por las cuales alguien querría y no querría que esto se hiciera como predeterminado para cualquier sistema. La conveniencia y las expectativas según lo solicitado, en lugar de ser más cuidadoso con los privilegios elevados.
Pysis

55
alias sd="sudo "maychance?
El Nate

Después de revisar mis alias, noté que no tenía alias sudo="sudo "en el entorno de los usuarios finales. Esta es la respuesta
Michael Niño
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.