
Nachdem ich ein bisschen mit
scponly und
scponly-full wie auch
rssh herumgespielt habe, habe ich mich entschieden, den Dateizugriff mit Bordmitteln unter Linux zu bewerkstelligen. Mir haben die anderen Lösungen nicht gefallen.
In Anlehnung an scponly habe ich eine Gruppe
sftponly angelegt. In diese habe ich alle User gesteckt, die nur per
sftp auf den Server zugreifen sollen.
In der
/etc/ssh/sshd_config habe ich die betehende Subsystem-Zeile auskommentiert und eine neue Zeile mit Hinweis auf
internal-sftp hinzugefügt.
# Subsystem sftp /usr/lib/openssh/sftp-server
Subsystem sftp internal-sftp
Ene chroot-Umgebung für die Gruppenmitglieder der Gruppe sftponly wird wie folgt eingerichtet:
Match group sftponly
ChrootDirectory /home/%u
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
Die
ChrootDirectory-Option sagt, dass
/home/USERNAME für den Benutzer zum root-Directory wird. Das Homeverzeichnis in der
/etc/passwd gilt ab diesem Verzeichnis.
Das kann nervig sein, da im Standard, OpenSSH nach der
authorized_keys-Datei im Verzeichnis .ssh des Homeverzeichnisses sucht. Das ist natürlich konfigurierbar, aber ich wollte daran nichts ändern.
AuthorizedKeysFile %h/.ssh/authorized_keys
Daher sieht bei mir das Konstrukt ein wenig "eigenwillig" aus.
Unter
/home/USERNAME/.ssh/authorized_keys sind die erlaubten öffentlichen Schlüssel des Benutzers zu finden. Das Verzeichnis
/home/USERNAME gehört jetzt dem User
root. Das Verzeichnis, in das der User schreiben darf liegt unter
/home/USERNAME/home/USERNAME. Sieht komisch aus, macht aber nichts kaputt.