Desejo dar a um cliente acesso ao meu servidor, mas quero limitar esses usuários aos seus diretórios pessoais. Vou montar montagem em todos os arquivos que eu quero que eles possam ver.
Criei um usuário chamado bob
e o adicionei a um novo grupo chamado sftponly
. Eles têm um diretório inicial em /home/bob
. Mudei o shell deles /bin/false
para parar os logins do SSH. Aqui está a /etc/passwd
linha deles :
bob:x:1001:1002::/home/bob:/bin/false
Também alterei o /etc/ssh/sshd_config
para incluir o seguinte:
Match Group sftponly
ChrootDirectory /home/%u
ForceCommand internal-sftp
AllowTcpForwarding no
Quando tento fazer login como eles, eis o que vejo
$ sftp bob@server
bob@server's password:
Write failed: Broken pipe
Couldn't read packet: Connection reset by peer
Se eu comentar a ChrootDirectory
linha, posso entrar no SFTP, mas eles terão rédea livre no servidor. Eu descobri que ChrootDirectory /home
funciona, mas ainda dá acesso a qualquer diretório pessoal. Eu tentei explicitamente, ChrootDirectory /home/bob
mas isso também não funciona.
O que estou fazendo errado? Como posso limitar bob
a /home/bob/
?
----EDITAR-----
Ok, então eu só dei uma olhada /var/log/auth.log
e vi o seguinte:
May 9 14:45:48 nj sshd[5074]: pam_unix(sshd:session): session opened for user bob by (uid=0)
May 9 14:45:48 nj sshd[5091]: fatal: bad ownership or modes for chroot directory component "/home/bob/"
May 9 14:45:48 nj sshd[5074]: pam_unix(sshd:session): session closed for user bob
Não tenho certeza do que está acontecendo lá, mas sugere que algo está errado com o diretório do usuário. Aqui está a ls -h /home
saída:
drwxr-xr-x 26 oli oli 4096 2012-01-19 17:19 oli
drwxr-xr-x 3 bob bob 4096 2012-05-09 14:11 bob
ChrootDirectory /home/%u
pode ser substituídoChrootDirectory %h
.