Respostas:
Os sistemas Unix fornecem o chroot
comando que permite redefinir o /
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ê quer chroot
dizer, usuário foo
usuário no /var/www/vhosts/
diretório
Você pode definir um diretório chroot para o seu usuário confiná-lo ao subdiretório da seguinte /var/www/vhosts/
maneira /etc/ssh/sshd_config
;
Criar usuário foo
com senha
sudo useradd foo
sudo passwd foo
Criar apenas para grupo SFTP
$ sudo groupadd sftp_users
Adicionar a um usuário foo
apenas para o grupo SFTP
$ sudo usermod -G sftp_users foo
Alterar proprietário, porque a permissão de leitura / gravação
sudo chown root.root /var/www/vhosts/
Adicionar permissão
sudo chmod 755 /var/www/vhosts/
Editar /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: os Match
blocos precisam estar no final do sshd_config
arquivo.)
Reiniciar ssh
serviço
sudo service ssh restart
Com esta configuração, você pode ssh na pasta ubuntu
e obter arquivos. Não pode put
oudelete
Para sftp na pasta direita, edite /etc/passwd
. Alterar linha para que o usuário foo
fique assim
$ sudo vi /etc/passwd
..
foo:x:1001:1001::/var/www/vhosts/:
..
Isso mudará a foo
pasta inicial do usuário para a pasta do servidor sftp.
Subsystem sftp internal-sftp Match Group sftp ChrootDirectory /var/www/vhosts AllowTcpForwarding no ForceCommand internal-sftp
mas não há erro quando eu quiser reiniciar ssh/etc/ssh/sshd_config line 92: Directive 'UsePAM' is not allowed within a Match block
Match.....
seção no final do arquivo. Coloque esse código no final do arquivo e reinicie-o.
Match Group sftp ChrootDirectory /var/www/vhosts AllowTcpForwarding no
In sshd_config e criei usuário e grupo como você fez, mas o usuáriofoo
tem direitos para todas as pastas :(