Eu esperava que alguém pudesse me ajudar com esse problema
"Tentando configurar um usuário SFTP com acesso limitado."
Estou executando o Ubuntu 16.04.2 x64 em um servidor DigitalOcean. Eu postei isso no fórum DigitalOcean também.
Configuração atual
- Configurei meu servidor usando o ServerPilot.
- O
system user é chamado serverpilot
-
serverpilot tem privilégios de root,
- A pasta
home está localizada em: /srv/users/serverpilot
- A pasta
public está localizada em: /srv/users/serverpilot/apps/test-app/public/
O que eu quero fazer
Eu quero adicionar um segundo usuário, mas restringir o que o usuário pode fazer:
- Acesse apenas uma única pasta chamada
newsletters , que estará na pasta public .
- O usuário precisa poder fazer upload, excluir e renomear arquivos via SFTP
- O usuário não deve conseguir sair da pasta
newsletters
Este é o caminho completo para a pasta newsletters :
/srv/users/serverpilot/apps/test-app/public/newsletters
O que eu fiz até agora
Eu segui este guia Como restringir um usuário a um diretório específico? por Maxamilian Demian (@Maxoplata), há uma ótima resposta de Jonathan Tittle (@jtittle).
No entanto, ainda estou com problemas para fazer login via SFTP
Eu listei todas as etapas que fiz - espero que alguém com mais experiência consiga detectar meu (s) erro (s)!
1. Criado um novo usuário
- Conectado como
root
- Criado um novo usuário chamado
user-sftp-only
-
adduser user-sftp-only
- Posso verificar se o usuário foi criado executando
-
compgen -u
-
user-sftp-only está na parte inferior da lista
- Também posso ver qual é o caminho do usuário e o acesso ao shell executando:
-
grep user-sftp-only /etc/passwd de saídas:
user-sftp-only:x:1004:1007:,,,:/home/user-sftp-only:/bin/bash
2. Dar novos privilégios de root ao usuário
- Conceder novos privilégios de usuário
user-sftp-only root
-
gpasswd -a user-sftp-only sudo
- Fazer logout como
root
3. Crie um novo diretório
- Conectado como
user-sftp-only
- Crie um novo diretório em
public chamado newsletters :
-
cd /srv/users/serverpilot/apps/test-app/public/
- Seguido por:
-
sudo mkdir newsletters
4. Verifique as permissões do diretório
Ainda dentro da pasta public da etapa anterior, corro
$ ls -al
drwxr-xr-x+ 3 serverpilot serverpilot 4096 Mar 7 15:26 .
drwxr-xr-x+ 3 serverpilot serverpilot 4096 Mar 3 16:22 ..
-rw-r--r--+ 1 serverpilot serverpilot 3393 Mar 3 16:22 index.php
drwxrwxr-x+ 2 root root 4096 Mar 7 15:26 newsletters
A partir da leitura de várias postagens do DigitalOcean, sei que preciso criar um grupo e atribuir meu novo usuário user-sftp-only a esse grupo. Em seguida, altere root root para o nome do meu usuário e grupo.
5. Crie um novo grupo
- Conectado como
user-sftp-only
-
sudo groupadd group-sftp-only
- Posso verificar se o grupo foi criado ao executar
-
compgen -g
-
group-sftp-only está na parte inferior da lista
Observação: Eu noto que meu novo usuário chamado user-sftp-only também está nessa lista?
6. Adicionar usuário ao grupo
- Conectado como
root
- Adicionado o usuário
user-sftp-only a um grupo chamado group-sftp-only
-
Isso significa que não é mais possível o SSH entrar como usuário user-sftp-only
usermod -g group-sftp-only -d /srv/users/serverpilot/apps/test-app/public/newsletters -s /sbin/nologin user-sftp-only
-
-g especifica o nome do grupo
-
-d especifica o diretório inicial dos usuários
-
-s especifica o acesso ao shell (/ sbin / nologin significa que o SSH está desativado para este usuário)
7. Verifique as alterações para o usuário
Conectado como root
$ grep user-sftp-only /etc/passwd
user-sftp-only:x:1001:1004:,,,:/srv/users/serverpilot/apps/test-app/public/newsletters:/sbin/nologin
8. Modifique a configuração do SSH para permitir o SFTP
- Conectado como
root
-
nano /etc/ssh/sshd_config
- Comentou esta linha:
-
#Subsystem sftp /usr/lib/openssh/sftp-server -l INFO
-
Na muito inferior de sshd_config , adicionamos isto:
Subsystem sftp internal-sftp
Match group group-sftp-only
ChrootDirectory %h
ForceCommand internal-sftp
9. Reinicie o SSH
- Ainda logado como
root
-
service ssh restart
10. Modificar permissões
- Ainda logado como
root
- Este é o diretório inicial do usuário
user-sftp-only
-
/srv/users/serverpilot/apps/test-app/public/newsletters
-
Usado para garantir que o diretório pessoal seja de propriedade do usuário e do grupo
chown -R user-sftp-only:group-sftp-only /srv/users/serverpilot/apps/test-app/public/newsletters
11. Verifique a alteração de propriedade
Ainda logado como root :
$ cd /srv/users/serverpilot/apps/test-app/public/'
$ ls -al
drwxr-xr-x+ 3 serverpilot serverpilot 4096 Mar 7 15:26 .
drwxr-xr-x+ 3 serverpilot serverpilot 4096 Mar 3 16:22 ..
-rw-r--r--+ 1 serverpilot serverpilot 3393 Mar 3 16:22 index.php
drwxrwxr-x+ 2 user-sftp-only group-sftp-only 4096 Mar 7 15:26 newsletters
$ cd /srv/users/serverpilot/apps/test-app/public/newsletters
$ ls -al
drwxrwxr-x+ 2 user-sftp-only group-sftp-only 4096 Mar 7 15:26 .
drwxr-xr-x+ 3 serverpilot serverpilot 4096 Mar 7 15:26 ..
É onde eu estou indo. No entanto, não consigo fazer login como meu novo usuário user-sftp-only via SFTP