Ich möchte einem Client Zugriff auf meinen Server gewähren, möchte diese Benutzer jedoch auf ihre Home-Verzeichnisse beschränken. Ich werde alle Dateien binden, die sie sehen sollen.
Ich habe einen Benutzer mit dem Namen erstellt bobund ihn zu einer neuen Gruppe mit dem Namen hinzugefügt sftponly. Sie haben ein Home-Verzeichnis bei /home/bob. Ich habe ihre Shell geändert /bin/false, um SSH-Anmeldungen zu stoppen. Hier ist ihre /etc/passwdLinie:
bob:x:1001:1002::/home/bob:/bin/false
Ich habe auch das geändert /etc/ssh/sshd_config, um das folgende mit einzuschließen:
Match Group sftponly
ChrootDirectory /home/%u
ForceCommand internal-sftp
AllowTcpForwarding no
Wenn ich versuche, mich als sie einzuloggen, sehe ich Folgendes
$ sftp bob@server
bob@server's password:
Write failed: Broken pipe
Couldn't read packet: Connection reset by peer
Wenn ich die ChrootDirectoryZeile auskommentiere, kann ich SFTP einschalten, aber dann haben sie freien Lauf über den Server. Ich habe festgestellt, dass das ChrootDirectory /homefunktioniert, aber es gibt ihnen immer noch Zugriff auf jedes Basisverzeichnis. Ich habe es explizit versucht, ChrootDirectory /home/bobaber das funktioniert auch nicht.
Was mache ich falsch? Wie kann ich mich beschränken bobauf /home/bob/?
----BEARBEITEN-----
Okay, also habe ich mir das mal angesehen /var/log/auth.logund gesehen:
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
Ich bin nicht ganz sicher, was dort vor sich geht, aber es deutet darauf hin, dass etwas mit dem Benutzerverzeichnis nicht stimmt. Hier ist die ls -h /homeAusgabe:
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/%ukann ersetzt werdenChrootDirectory %h.