Substituir caminho para o binário para um usuário específico

8

Minha pergunta parece trivial, mas não consegui encontrar nada útil na internet. Eu tenho um binário em

/urs/bin/binary

mas está desatualizado e a versão mais recente está disponível em algumas montagens, por exemplo

/mount/new_version/binary

Existe um script bash que chama esse binário de uma forma como

binary -doSomething

Eu preciso desse script para invocar uma nova versão do binário em vez da antiga, mas não tenho permissão para alterar esse script. É uma maneira de substituir o caminho de alguma forma, mas apenas para o meu usuário? Qualquer ajuda seria apreciada.

Viktor Stolbin
fonte
Se você não tiver permissão para fazê-lo, converse com seu administrador.
Sven

Respostas:

11

Se o binário estiver dentro /usr/bin/binarye o script chama o binário sem especificar o caminho completo, mas depende de /usr/binestar dentro PATH, você pode simplesmente adicionar o local do novo binário ao início do usuário PATH. Coloque algo assim em seus ~/.bashrc:

PATH=/mount/new_version:$PATH

Por motivos de segurança, os scripts geralmente especificam o caminho completo dos binários para evitar esse tipo de coisa.

Pausado até novo aviso.
fonte
3

Se você tiver acesso ao binário, poderá fazer backup e criar um link simbólico.

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

[EDITAR]

Desculpe, não vi que a alteração deve ser feita apenas para um usuário.

Você pode criar uma função a ser chamada em vez do binário.

Dependendo de como você executa o binário (caminho completo ou apenas o nome), você deve criar uma função adequada , 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

Se o binário não aceitar / precisar de argumentos, remova o "$ @" .

Para automatizar a criação da função, coloque as linhas de função no arquivo .profile no diretório inicial do usuário.

Douglas P.
fonte
Isso afetará todos os usuários. Não é aceitável.
Viktor Stolbin
Desculpe, corrigi a resposta, pois a alteração deve afetar apenas um usuário.
Douglas P.
3

alias commandname=/mount/new_version/binary

no .bashrc acima da declaração do caminho / exportação ou no perfil será fácil o suficiente.

art3mis
fonte