Anular ruta a binario para un usuario en particular

8

Mi pregunta parece ser trivial, pero no pude encontrar nada útil en Internet. Tengo un binario en

/urs/bin/binary

pero está desactualizado y, por ejemplo, hay una versión más nueva disponible en algunos soportes

/mount/new_version/binary

Y hay un script bash que invoca este binario en una forma como

binary -doSomething

Necesito este script para invocar una nueva versión del binario en lugar del anterior, pero no tengo permiso para cambiar este script. ¿Es una forma de anular la ruta de alguna manera, pero solo para mi usuario? Cualquier ayuda sería apreciada.

Viktor Stolbin
fuente
Si no puede hacerlo, hable con su administrador.
Sven

Respuestas:

11

Si el binario está dentro /usr/bin/binaryy el script invoca el binario sin especificar la ruta completa, sino que depende de /usr/binestar dentro PATH, simplemente puede agregar la ubicación del nuevo binario al comienzo del usuario PATH. Ponga algo como esto en su ~/.bashrc:

PATH=/mount/new_version:$PATH

Por razones de seguridad, los scripts a menudo especifican la ruta completa a los binarios para evitar este tipo de cosas.

Pausado hasta nuevo aviso.
fuente
3

Si tiene acceso al binario, puede hacer una copia de seguridad y crear un enlace simbólico.

mv /urs/bin/binary /urs/bin/binary.bkp
ln -s /mount/new_version/binary /urs/bin/binary

[EDITAR]

Lo sentimos, no vi que el cambio debe hacerse solo para un usuario.

Puede crear una función para que se llame en lugar del binario.

Dependiendo de cómo ejecute el binario (ruta completa o solo nombre), debe crear una función adecuada , como:

# Full path
function /urs/bin/binary () { command /mount/new_version/binary "$@"; }
export -f /urs/bin/binary
# Name
function binary () { command /mount/new_version/binary "$@"; }
export -f binary

Si el binario no acepta / necesita argumentos, elimine el "$ @" .

Para automatizar la creación de funciones, coloque las líneas de función en el archivo .profile en el directorio de inicio del usuario.

Douglas P.
fuente
Esto afectará a todos los usuarios. No es aceptable
Viktor Stolbin
Lo sentimos, he corregido la respuesta ya que el cambio debe afectar solo a un usuario.
Douglas P.
3

alias commandname=/mount/new_version/binary

en el .bashrc arriba de la declaración de ruta / exportación o en el perfil se logrará bastante fácil.

art3mis
fuente