9 votes

Remplacer le chemin vers le binaire pour un utilisateur particulier

Ma question semble être triviale mais je n'ai pas réussi à trouver quelque chose d'utile sur internet. J'ai un binaire dans

/urs/bin/binary

mais elle est dépassée et une version plus récente est disponible sur certains supports, par exemple

/mount/new_version/binary

Et il y a un bash script qui invoque ce binaire sous une forme telle que

binary -doSomething

J'ai besoin de ce script pour invoquer la nouvelle version du binaire au lieu de l'ancienne mais je ne suis pas autorisé à modifier ce script. Existe-t-il un moyen de remplacer le chemin d'accès à celui-ci, mais uniquement pour mon utilisateur ? Toute aide serait appréciée.

11voto

jason saldo Points 5036

Si le binaire est en /usr/bin/binary et le script invoque le binaire sans spécifier le chemin complet, mais se fie plutôt à /usr/bin être en PATH alors vous pouvez simplement ajouter l'emplacement du nouveau binaire au début de la page d'accueil de l'utilisateur. PATH . Mettez quelque chose comme ceci dans leur ~/.bashrc :

PATH=/mount/new_version:$PATH

Pour des raisons de sécurité, les scripts spécifient souvent le chemin complet des binaires pour éviter ce genre de choses.

3voto

Jason Points 29

Si vous avez accès au binaire, vous pouvez le sauvegarder et créer un lien symbolique.

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

[EDIT]

Désolé, je n'ai pas vu que le changement doit être fait pour un seul utilisateur.

Vous pouvez créer une fonction qui sera appelée à la place du binaire.

En fonction de la façon dont vous exécutez le binaire (chemin complet ou juste nom), vous devez créer un fichier fonction appropriée comme :

# 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 les binaires n'acceptent pas/ne nécessitent pas d'arguments, supprimez la balise "$@" .

Pour automatiser la création de la fonction, placez les lignes de fonction dans le fichier .profile du répertoire personnel de l'utilisateur.

3voto

art3mis Points 898

alias commandname=/mount/new_version/binary

dans le .bashrc au-dessus du chemin statement/export ou dans le profil sera assez facile à réaliser.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X