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.