SFTP - Limitando acesso por usuário

Publicado por Marco Túlio em 17/09/2015

[ Hits: 24.919 ]

 


SFTP - Limitando acesso por usuário



A finalidade do procedimento é limitar o acesso sftp a diretórios específicos, por padrão as conexões sftp via cliente sftp/ftp possibilitam a visualização de toda estrutura de diretórios do S.O.

A configuração limitará o acesso sftp a um diretório localizado dentro do home do usuário.

Edite o arquivo sshd_config:

# vim /etc/ssh/sshd_config

Comente esta linha:

# Subsystem sftp /usr/libexec/openssh/sftp-server

E adicione o conteúdo abaixo ao final do arquivo:

Subsystem sftp internal-sftp
    Match group sftpusers
    ChrootDirectory %h
    X11Forwarding no
    AllowTcpForwarding no
    ForceCommand internal-sftp

Reinicie o serviço openSSH:

# service sshd restart

Configuração das permissões

Crie o grupo no S.O. conforme configuração do sshd_config:

# groupadd sftpusers

Para restringir o acesso sftp para cada conta de usuário que for criada digite os comandos abaixo:

# usermod -G sftpusers usuario
# chown root:root /home/usuario
# chmod 755 /home/usuário


Crie o diretório home de cada usuário, será o local onde o usuário poderá utilizar os seus arquivos:

# cd /home/usuario
# mkdir diretório
# chown usuario:sftpusers *


Lembrando que os usuários inseridos no grupo sftpuser não conseguirão adicionar e visualizar arquivos em outros diretórios, também não conseguirão acessar o servidor via ssh.

Outras dicas deste autor
Nenhuma dica encontrada.
Leitura recomendada

Sistema para provedores de VoIP - Projeto Billing Livre

PostgreSQL 8.x (RHEL e Fedora)

Configuração do Openfire 3.7 no Ubuntu 11.04

Programa de Educação em Software Livre (PESL)

Problemas gráficos no Gnome Shell com placa gráfica Mobile Intel GM45 Express Chipset (Dell Inspiron 1545)

  

Comentários
[1] Comentário enviado por cmfs em 06/07/2017 - 14:57h

Ola!
Executei exatamente como manda o teu tutorial...
Mas, se eu tento criar um diretório ou enviar um arquivo ele me da os seguintes erros:

### Criando um diretório
Erro: mkdir /docs: permission denied
Comando: mkdir "/docs"


### Enviando um arquivo para o FTP
Erro: /avancado-6.42.pdf: open for write: permission denied
Erro: Transferência do arquivo falhou
Estado: Recuperando listagem do diretório de "/"...
Estado: Listing directory /
Estado: Listagem do diretório "/" bem sucedida

Se tiver alguma dica, eu ficaria muito grato...
Obrigado.

[2] Comentário enviado por cmfs em 06/07/2017 - 15:07h

Descobri o problema,
No /etc/passwd, estava configurado com /home/ftp-new/ftp...e então eu não tenho como alterar as permissões do diretoiro /ftp.
Deixei como /home/ftp-new/ ai funciona, só que o usuário pode clicar em ".." e sair do diretório /ftp.
Agora estou tentando descobrir para ele cair direto no /home/ftp-new/ftp/ e não ver nada da arvore de diretórios.

[3] Comentário enviado por marcotulio_ls em 06/07/2017 - 15:17h


[1] Comentário enviado por cmfs em 06/07/2017 - 14:57h

Ola!
Executei exatamente como manda o teu tutorial...
Mas, se eu tento criar um diretório ou enviar um arquivo ele me da os seguintes erros:

### Criando um diretório
Erro: mkdir /docs: permission denied
Comando: mkdir "/docs"


### Enviando um arquivo para o FTP
Erro: /avancado-6.42.pdf: open for write: permission denied
Erro: Transferência do arquivo falhou
Estado: Recuperando listagem do diretório de "/"...
Estado: Listing directory /
Estado: Listagem do diretório "/" bem sucedida

Se tiver alguma dica, eu ficaria muito grato...
Obrigado.


Olá!

Inseriu o usuário no grupo sftpusers dentro do arquivo /etc/group ?

[4] Comentário enviado por cmfs em 06/07/2017 - 15:42h

sim,
uid=1011(ftp-new) gid=100(users) groups=1000(sftpusers),100(users)

Com pure-ftp eu uso a home do usuário blz.
Mas, agora usando SFTP, não consigo usar a home do usuario.
exemplo:
/etc/passwd = ftp-new:x:1011:100::/home/ftp-new/ftp/:/bin/false

Pelo pure-ftp ele cai certo dentro do /home/ftp-new/ftp/ e não consegue sair do diretório /ftp

Pelo openssh, ele cai certo dentro do /home/ftp-new/ftp/ só que consigo sair do diretório /ftp (é o que eu não quero).
E se eu alterar as permissões do /ftp ele nem conecta.



[5] Comentário enviado por marcotulio_ls em 06/07/2017 - 16:05h


[3] Comentário enviado por tulhera em 06/07/2017 - 15:17h


[1] Comentário enviado por cmfs em 06/07/2017 - 14:57h

Ola!
Executei exatamente como manda o teu tutorial...
Mas, se eu tento criar um diretório ou enviar um arquivo ele me da os seguintes erros:

### Criando um diretório
Erro: mkdir /docs: permission denied
Comando: mkdir "/docs"


### Enviando um arquivo para o FTP
Erro: /avancado-6.42.pdf: open for write: permission denied
Erro: Transferência do arquivo falhou
Estado: Recuperando listagem do diretório de "/"...
Estado: Listing directory /
Estado: Listagem do diretório "/" bem sucedida

Se tiver alguma dica, eu ficaria muito grato...
Obrigado.


Olá!

Inseriu o usuário no grupo sftpusers dentro do arquivo /etc/group ?


Outra forma de permitir acesso ao diretório para o usuário
setfacl -m u:(usuário):rwx (/caminho do diretório)

Verificar no arquivo /etc/ssh/sshd_config se as opções estão dassa mesma forma

Subsystem sftp internal-sftp
X11Forwarding yes
ChrootDirectory %h
ForceCommand internal-sftp
AllowTcpForwarding no

[6] Comentário enviado por cmfs em 07/07/2017 - 16:32h

Ele me dá o seguinte erro:
fatal: bad ownership or modes for chroot directory component "/home/ftp-new/ftp/"

## CONF
Subsystem sftp internal-sftp
Match Group sftpusers
X11Forwarding yes
ChrootDirectory %h
PermitTTY no
ForceCommand internal-sftp
AllowTcpForwarding no

Se ficar em 755 e com owner root:root eu conecto, só não consigo cria um diretório ou arquivo.

[7] Comentário enviado por marcotulio_ls em 26/02/2018 - 12:08h

Deixe o home do usuário conforme abaixo no arquivo /etc/passwd

ftp-new:x:1011:100::/home/ftp-new:/bin/false

Retire todas as permissões e de a permissão 755 no diretório home do usuário

setfacl - b /home/ftp-new
chmod 000 /home/ftp-new
chmod 755 /home/ftp-new

Retire todas as permissões do subdiretório e de a permissão para o usuário no subdiretório

setfacl - b /home/ftp-new/ftp/
chmod 000 /home/ftp-new/ftp/
chmod u+rwx /home/ftp-new/ftp/
setfacl -R -m u:usuário:rwx /home/ftp-new/ftp/






Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts