Gostaria de criar um usuário que possa fazer apenas uma coisa: via ssh, especifique um script (e argumentos de linha de comando para o script) que reside em uma pasta específica (para os fins desta pergunta, vamos chamá-lo /local/remote_only_scripts/foo
) e fazer com que o script seja executado e retornar sua saída.
Para esclarecer alguns exemplos de coisas que não quero que o usuário possa fazer:
- Faça login localmente na conta. O aplicativo de login é
/bin/login
. Não é um script na/local/remote_only_scripts/foo
pasta, portanto, não deve ser chamado pelo usuário. - Faça login remotamente na conta. Novamente, o login (é o que é chamado pelo ssh?) Não é um script na pasta relevante.
- Listar o conteúdo do diretório. Está dentro
/bin/ls
. Não é um script no diretório apropriado. - Edite um arquivo nesse diretório. O emacs, vi, gedit, a maioria dos outros editores não são scripts nesse diretório.
- Veja o conteúdo de um arquivo nesse diretório.
- Execute um arquivo nesse diretório que ele não tem permissão para executar.
Observe que estes são exemplos. Existem muitas outras ações que eu não quero que o usuário possa executar. Ao considerar uma ação, pergunte "isso está sendo feito por um script /local/remote_only_scripts/foo
?" se a resposta for negativa, o usuário não poderá fazê-lo. Se a resposta for sim, o usuário deve ser capaz de fazê-lo.
PS: Deixe-me esclarecer o que quero dizer com "adicionando um usuário". Não quero adicionar um usuário a algum subsistema ssh. Em vez disso, quero dizer adicionar um usuário ao sistema do computador. Então, por exemplo, eu tenho um sistema executando o debian stable, chame-o pelo seu endereço, www.hg.bar.com. Eu quero adicionar um usuário (via kuser, users-admin ou useradd ou alguma maneira similar) chamá-lo de hg_guest. O hg_guest não pode fazer login localmente ou executar qualquer uma das ações da lista acima. Tudo o que o hg_guest pode fazer é executar scripts "remotamente". Eu disse que ele deveria ser capaz de fazê-lo via ssh, mas pensando nisso agora, talvez permitir que ele use o ssh pode permitir que ele efetue login localmente, portanto, pode ser necessário outro mecanismo.