Sostituisci il percorso binario per un determinato utente


8

La mia domanda sembra essere banale ma non sono riuscito a trovare nulla di utile in Internet. Ho un binario in

/urs/bin/binary

ma è obsoleto e la versione più recente è disponibile su alcuni mount per esempio

/mount/new_version/binary

C'è uno script bash che invoca questo binario in una forma simile

binary -doSomething

Ho bisogno di questo script per invocare una nuova versione di binario anziché quella precedente, ma non sono autorizzato a modificare questo script. È un modo per ignorare in qualche modo il percorso ma solo per il mio utente? Qualsiasi aiuto sarebbe apprezzato.


Se non ti è permesso farlo, parla con il tuo amministratore.
Sven

Risposte:


11

Se il binario è attivo /usr/bin/binarye lo script richiama il binario senza specificare il percorso completo, ma invece si basa /usr/binsull'essere in, PATHè possibile semplicemente aggiungere la posizione del nuovo binario all'inizio dell'utente PATH. Metti qualcosa di simile nel loro ~/.bashrc:

PATH=/mount/new_version:$PATH

Per motivi di sicurezza, gli script spesso specificano il percorso completo dei file binari per impedire questo tipo di cose.


3

Se si ha accesso al file binario, è possibile eseguirne il backup e creare un collegamento simbolico.

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

[MODIFICARE]

Siamo spiacenti, non ho visto la modifica deve essere eseguita per un solo utente.

È possibile creare una funzione da chiamare al posto del binario.

A seconda di come si esegue il binario (percorso completo o solo nome) è necessario creare una funzione adatta , come:

# 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

Se il binario non accetta / necessita di argomenti, rimuovere "$ @" .

Per automatizzare la creazione della funzione, inserire le linee funzione nel file .profile nella home directory dell'utente.


Questo interesserà tutti gli utenti. Non è accettabile
Viktor Stolbin,

Spiacenti, ho corretto la risposta poiché la modifica deve riguardare un solo utente.
Douglas P.,

3

alias commandname=/mount/new_version/binary

nel .bashrc sopra l'istruzione path / export o nel profilo sarà abbastanza facile.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.