Crie um novo grupo, dê ao executável esse novo grupo e remova o bit executável (e também a permissão de leitura) para esse executável.
Este é um método comum para programas de "jogos", mas eu acho que é muito parecido com o que você está procurando.
Eu desenvolvo ferramentas em um cluster. Cada usuário carrega arquivos de ambiente comuns em seus .bash_profile . Eu tenho um nó de login no qual certas ferramentas não devem ser executadas. Como posso impedir que os usuários usem essas ferramentas de nós específicos?
Até agora, pensei em redefinir o comando das ferramentas em uma função que substituiria a ferramenta original:
$ tool # Launches the tool normally.
$ vim common-env.sh # Is sourced in each user's .bash_profile
function tool() {
if [ $(is_in_forbiden_node) -eq 0 ]; then
echo "You have to leave node X before launching this command!"
return 1 # Forbids the use of the original tool.
else
command tool # Launches the original tool normally.
fi
}
export -f tool
Isso funciona, mas isso está longe de ser impecável. O usuário ainda pode contornar essa limitação digitando o seguinte:
$ command tool
ou:
$ /usr/bin/env tool
Quais são as alternativas? Por favor, note que eu não sou administrador do sistema, então quaisquer ações que requeiram privilégios de administrador não me beneficiarão.
Crie um novo grupo, dê ao executável esse novo grupo e remova o bit executável (e também a permissão de leitura) para esse executável.
Este é um método comum para programas de "jogos", mas eu acho que é muito parecido com o que você está procurando.
Sem poder administrativo, o único lugar restante é tool . Em particular, você precisa de tool para verificar se ele é executado em um nó permitido ou não.
Você precisa ter cuidado com a execução dessa verificação. Por exemplo, as variáveis de ambiente não são confiáveis. Além disso, invólucros como scripts de shell que fazem a verificação e iniciam a ferramenta se permitido não funcionarão como um usuário pode invocar a ferramenta real em primeiro lugar.