Sistemas Unix fornecem o comando chroot , que permite redefinir o / do usuário para algum diretório na hierarquia do sistema de arquivos, onde eles não podem acessar arquivos e diretórios "superiores".
No entanto, no seu caso, seria apropriado fornecer um chroot virtual implementado pelo serviço de shell remoto. O sftp pode ser facilmente configurado para restringir um usuário local a um subconjunto específico do sistema de arquivos.
portanto, no seu caso, você deseja chroot , digamos, usuário foo user no diretório /var/www/vhosts/ .
Você pode definir um diretório chroot para o usuário confiná-los ao subdiretório /var/www/vhosts/ , assim como em /etc/ssh/sshd_config ;
Crie o usuário foo com senha
sudo useradd foo
sudo passwd foo
Criar para somente o grupo SFTP
$ sudo groupadd sftp_users
Adicionar a um usuário foo para o grupo somente SFTP
$ sudo usermod -G sftp_users foo
Alterar proprietário, porque permissão de leitura / gravação
sudo chown root.root /var/www/vhosts/
Adicione permissão
sudo chmod 755 /var/www/vhosts/
Edite o /etc/ssh/sshd_config
sudo vi /etc/ssh/sshd_config
Comente e adicione uma linha como abaixo
#Subsystem sftp /usr/lib/openssh/sftp-server
Subsystem sftp internal-sftp
Adicione no último
Match Group sftp_users
X11Forwarding no
AllowTcpForwarding no
ChrootDirectory /var/www/vhosts/
ForceCommand internal-sftp
(NOTA: Match blocos precisam estar no END do arquivo sshd_config .)
Reinicie o ssh service
sudo service ssh restart
Com essa cenfiguração, você pode usar ssh na pasta ubuntu e obter arquivos. Não é possível put ou delete
Para inserir na pasta correta, edite /etc/passwd . Alterar linha para o usuário foo para ficar assim
$ sudo vi /etc/passwd
..
foo:x:1001:1001::/var/www/vhosts/:
..
Isso mudará a pasta de usuário foo para a pasta do servidor sftp.