Eu segui uma meia dúzia de diferentes tutoriais sobre como configurar o chroot para usuários do sftp, mas meus usuários encarcerados ainda podem navegar pelos diretórios pai. Eu suspeito que minhas permissões não estão configuradas corretamente, porque essa é a parte que mais varia entre os tutoriais. Aqui está o que eu fiz até agora:
1) Estou usando o CentOS 5.6, onde o padrão do OpenSSH é a versão 4.3, então eu instalei manualmente a última versão 5.x. Executando sshd -v agora retorna OpenSSH_5.9p1, OpenSSL 0.9.8e-fips-rhel5.
2) Eu editei o arquivo / etc / ssh / sshd_config para alterar o subsistema sftp para o interno-sftp e adicionei:
Match user guest
ChrootDirectory %h
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
3) sshd reiniciado.
4) Criamos um usuário "guest" com o diretório home / var / www / uploads / guest.
5) / var / www / uploads é de propriedade root: root com o modo 755.
6) / var / www / uploads / guest é de propriedade de guest: root com o modo 755.
Usando o cliente Transmitir sftp no meu Mac, eu entrei com o usuário convidado. Ele abre o diretório home do usuário por padrão, mas eu posso navegar pelos níveis de diretório e procurar outros diretórios no servidor.
Alguns tutoriais dizem que o / var / www / uploads deve ter o modo 700 ou 750; se eu fizer isso, ainda posso fazer login como o usuário convidado, mas vejo o diretório raiz do servidor por padrão e posso procurar 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 o usuário convidado. Transmit 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 digitei a senha.
Acho que tentei de tudo - alguém pode ver o que está faltando?