Provavelmente, você deseja endurecer o servidor um pouco (procure em fail2ban e altere a porta de 22 como um bom começo), mas, supondo que eu tenha lido a sua pergunta corretamente, você está olhando para chroot um usuário SFTP e limitá-los a apenas ser capaz de usar SFTP (ao contrário de executar quaisquer outros comandos)
Eu implementei isso em um dos meus servidores com o seguinte script:
echo 'CREATING USER' $1
echo 'adding user ..'
sudo useradd -d /home/$1 -s /usr/lib/sftp-server -M -N -g sftponly $1
echo '..done'
echo '--------------'
echo 'set a password'
sudo passwd $1
echo 'creating dir structure ..'
sudo mkdir -p /home/$1/uploads /home/$1/.ssh
sudo chown $1:sftponly /home/$1/uploads /home/$1/.ssh
#
cd /home/$1
echo 'adding shares ..'
sudo mkdir -p {ebooks,misc,movies,music,tv}
echo 'ebooks' && sudo mount --rbind /home/media/ebooks /home/$1/ebooks -o ro
echo 'misc' && sudo mount --rbind /home/media/misc /home/$1/misc -o ro
echo 'movies' && sudo mount --rbind /home/media/movies /home/$1/movies -o ro
echo 'music' && sudo mount --rbind /home/media/music /home/$1/music -o ro
echo 'tv' && sudo mount --rbind /home/media/tv /home/$1/tv -o ro
#
echo '..done'
O que faz:
- Cria o usuário, adiciona-o ao grupo 'sftponly' e altera seu shell
- Cria uma estrutura de diretório para esse usuário fazer chroot em
- Usa o mount + rbind para montar uma árvore de arquivos existente na nova pasta equivalente de usuários (somente leitura)
Antes de usar, você precisará preparar o sistema executando o seguinte:
Adicionar um grupo
sudo addgroup sftponly
Modifique o sshd_config
/etc/ssh/sshd_config
file e adicione o seguinte:
Match group sftponly
ChrootDirectory %h
X11Forwarding no
ForceCommand internal-sftp
AllowTcpForwarding no
No mesmo arquivo, encontre a linha que lê algo como Subsystem sftp /usr/lib/openssh/sftp-server
e mude para Subsystem sftp internal-sftp
Edite os shells disponíveis
sudo nano /etc/shells
adicione o seguinte na parte inferior:
/usr/lib/sftp-server