Assim, em geral, a resposta a esse tipo de pergunta é "não, não facilmente", mas, para o seu caso específico, acho que você pode realmente encontrar uma solução.
Suponha que seu cliente fará login em seu servidor como usuário alice
. Crie outro usuário bob
que possui o script e torne-o somente legível / executável pelo usuário bob
:
# chown bob /path/to/myscript
# chmod 700 /path/to/myscript
Agora, crie uma configuração sudo
que permita que alice
execute esse script como usuário bob
. Por exemplo, crie /etc/sudoers.d/alice
com a seguinte configuração:
alice ALL=(bob) NOPASSWD:/path/to/myscript
Agora:
- Seu cliente efetua login como
alice
.alice
não consegue ler ou executar o script fornecido. -
alice
pode executar o script executandosudo -u bob /path/to/myscript
. Isso executará o script como usuáriobob
.
Esta solução tem certas limitações: por exemplo, como o script será executado como usuário diferente do chamador, você pode ter problemas ao criar arquivos no diretório pessoal do chamador.