Proibir o uso de comandos específicos

1

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.

    
por kaligne 12.09.2016 / 16:47

2 respostas

1

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.

    
por 12.09.2016 / 17:19
1

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.

    
por 12.09.2016 / 23:34