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.