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