Quero criar um usuário SFTP específico que terá permissões para ler apenas todas as pastas e subpastas no arquivo /var/www/vhosts
. Alguma ajuda sobre isso?
Responder1
Os sistemas Unix fornecem o chroot
comando que permite redefinir o /
usuário para algum diretório na hierarquia do sistema de arquivos, onde ele não pode acessar arquivos e diretórios "superiores".
No entanto, no seu caso, seria apropriado fornecer um chroot virtual implementado pelo serviço 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
usuário no /var/www/vhosts/
diretório.
Você pode definir um diretório chroot para seu usuário confiná-lo ao subdiretório /var/www/vhosts/
como em /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 grupo SFTP
$ sudo usermod -G sftp_users foo
Alterar proprietário, porque 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: Match
os blocos precisam estar noFIMdo sshd_config
arquivo.)
Reiniciar ssh
serviço
sudo service ssh restart
Com esta configuração você pode fazer ssh na pasta ubuntu
e obter arquivos. Não pode put
oudelete
Para fazer sftp na pasta certa, edite o arquivo /etc/passwd
. Altere a linha do usuário foo
para ficar assim
$ sudo vi /etc/passwd
..
foo:x:1001:1001::/var/www/vhosts/:
..
Isso mudará foo
a pasta inicial do usuário para a pasta do servidor SFTP.