O que está faltando na minha configuração do chroot sftp?

O que está faltando na minha configuração do chroot sftp?

Eu segui meia dúzia de tutoriais diferentes sobre como configurar o chroot para usuários SFTP, mas meus usuários presos ainda podem navegar nos diretórios pai. Suspeito que minhas permissões não estejam configuradas corretamente, pois essa é a parte que mais varia entre os tutoriais. Aqui está o que fiz até agora:

1) Estou usando o CentOS 5.6, onde o OpenSSH padrão é a versão 4.3, então instalei manualmente a versão 5.x mais recente. Executar sshd -v agora retorna OpenSSH_5.9p1, OpenSSL 0.9.8e-fips-rhel5.

2) Editei /etc/ssh/sshd_config para alterar o Subsistema sftp para internal-sftp e adicionei:

Match user guest
ChrootDirectory %h
X11Forwarding no    
AllowTcpForwarding no
ForceCommand internal-sftp

3) SSD reiniciado.

4) Criado um usuário "guest" com diretório inicial /var/www/uploads/guest.

5) /var/www/uploads pertence a root:root com modo 755.

6) /var/www/uploads/guest pertence a guest:root com modo 755.

Usando o cliente Transmit sftp no meu Mac, fiz login com o usuário convidado. Ele abre o diretório inicial do usuário por padrão, mas posso navegar pelos níveis de diretório e navegar por outros diretórios no servidor.

Alguns tutoriais dizem que /var/www/uploads deve ter o modo 700 ou 750; se eu fizer isso, ainda poderei fazer login como usuário convidado, mas vejo o diretório raiz do servidor por padrão e posso navegar em todos os outros diretórios.

Outros tutoriais dizem que devo alterar o shell do usuário convidado para /bin/false; se eu fizer isso, não consigo fazer login como usuário convidado. A transmissão diz "O nome de usuário ou senha não foi aceito pelo servidor" e o cliente sftp da linha de comando diz "Conexão fechada" depois que eu digito a senha.

Acho que tentei de tudo - alguém pode ver o que está faltando?

Responder1

Parece que ChrootDirectory deve apontar para um nível ACIMA do diretório inicial.

Então, como a casa dos hóspedes é/var/www/uploads/guest, então oDiretório Chrootdeveria apontar para/var/www/uploads

Isso é TALVEZ... outro pensamento me ocorreu:

Você instalou manualmente o openssh mais recente, removeu a versão antiga? Onde a nova versão foi instalada? às vezes, se você não tomar cuidado, coisas novas serão instaladas em/usr/local/em vez de/usr, o que significa que o servidor habilitado para sftp está lendo seus arquivos de configuração de/usr/local/etc/ssh/...em vez do esperado/etc/ssh/...

Algo para verificar pelo menos.

Responder2

Eu lutei exatamente com o mesmo problema, mas resolvi-o configurando o diretório chrootbem como todos os diretórios paiscom as seguintes permissões

1) Mudando o proprietário para root:

sudo chown root [directory]

2) Removendo todas as permissões de gravação do grupo:

sudo chmod 755 [directory]

Infelizmente, acho que isso significa que você não pode pular diretamente para uma pasta que não pertence ao root, mas ficarei feliz em saber se alguém puder me corrigir sobre isso!

informação relacionada