Você provavelmente desejará configurar o shell padrão desses usuários como /bin/rbash - restricted bash ( bash -r ). Veja man rbash . Isso pode ser feito com o comando chsh -s /bin/rbash {USER} .
Para evitar que eles executem outros comandos além daquele que você deseja, defina o ambiente variável PATH como apenas a pasta que contém o executável que você deseja que eles executem em ~/.bash_profile :
export PATH="$HOME/bin"
Editar:
Neste ponto, ainda é possível que um invasor escape do rbash. Na verdade, ssh permite executar comandos remotos. Eles ainda podem fazer algo como ssh ... cp /bin/bash bin , para adicionar o bash ao conjunto de comandos que podem ser executados. O problema é que quando executado diretamente do ssh, parece que o bash (ou rbash) não lê .bash_profile , nem .profile , nem /etc/profile .
O link (2) propõe soluções para este problema. man sshd_config descreve todas as opções que podem ser definidas em /etc/ssh/sshd_config . Aparentemente, o script ~/.ssh/rc (assim como /etc/sshrc ver link (4)) é executado quando precisamos que ele seja - sempre que um usuário ssh algum comando. Mas eu não testei.
Neste ponto, pode ou não ainda ser possível quebrar o rbash usando scp .
Além disso, você precisará desativar o SFTP em /etc/ssh/sshd_config . Isso é feito comentando a linha:
Subsystem sftp /usr/lib/openssh/sftp-server
Links: