Pular para o conteúdo

SFTP - Limitando acesso por usuário

Dica publicada em Linux / Introdução
Marco Túlio marcotulio_ls
Hits: 25.884 Categoria: Linux Subcategoria: Introdução
  • Indicar
  • Impressora
  • Denunciar
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

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
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

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.

O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.
Nenhuma dica encontrada.

ADSL da Brasil Telecom sem provedor

Como instalar Cinnamon no Fedora

Terminal transparente no Ubuntu

Montando uma distribuição Linux do zero

Criptografando senha do GRUB

#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

Entre na sua conta para comentar.