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 bob
und 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/passwd
Linie:
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 ChrootDirectory
Zeile auskommentiere, kann ich SFTP einschalten, aber dann haben sie freien Lauf über den Server. Ich habe festgestellt, dass das ChrootDirectory /home
funktioniert, aber es gibt ihnen immer noch Zugriff auf jedes Basisverzeichnis. Ich habe es explizit versucht, ChrootDirectory /home/bob
aber das funktioniert auch nicht.
Was mache ich falsch? Wie kann ich mich beschränken bob
auf /home/bob/
?
----BEARBEITEN-----
Okay, also habe ich mir das mal angesehen /var/log/auth.log
und 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 /home
Ausgabe:
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
kann ersetzt werdenChrootDirectory %h
.