Wir haben vor Kurzem eine Problemumgehung gefunden, die wie folgt aussieht:
/etc/ssh/sshd_config:
...
Subsystem sftp internal-sftp
Match Group sftponly
ChrootDirectory /home
AllowTCPForwarding no
X11Forwarding no
ForceCommand internal-sftp
Verzeichnisberechtigungen:
[email protected]:~ # chown root:root /home
[email protected]:~ # chmod 111 /home
[email protected]:~ # chmod 700 /home/*
Jetzt /home
erfüllt die Anforderungen für ChrootDirectory
und kann nicht von eingeschränkten Benutzern aufgelistet werden, aber sftponly
Benutzer können sich nicht anmelden, wenn ihre Home-Verzeichnisse wie gewohnt eingerichtet sind (/home/$LOGNAME
):Unter der Chroot-Umgebung befinden sich ihre Home-Verzeichnisse nicht innerhalb von /home
aber direkt unter root (/
).
Problemumgehung 1
Stellen Sie die Homes eingeschränkter Benutzer so ein, wie sie unter Chroot erscheinen:
[email protected]:~ # usermod -d /username username
Vorbehalt 1
Wenn einer der uneingeschränkten Benutzer oder ein Verwaltungsskript die Tilde-Erweiterung von Bash verwendet, z. B. ~username
es wird auf /username
erweitert nun, was nicht gemeint ist.
Auch der Administrator, der sftponly
erstellt Benutzer müssen daran denken, die nicht standardmäßige Startseite zu verwenden. Mit einem Skript lösbar. Die der Administrator verwenden muss.
Problemumgehung 2
Dies ist eine Alternative zu der vorherigen, die wir letztendlich verwendet haben:
[email protected]:~ # ln -s . /home/home
Das heißt einen Symlink in /home
erstellen zu seinem eigenen dirname. Jetzt unter Chroot /home/username
zeigt auf dasselbe Verzeichnis wie ohne Chroot. Für eingeschränkte Benutzer, die mit sftp angemeldet sind, würde es als /username
erscheinen . Dieses Verzeichnis ist für seinen Eigentümer (eingeschränkter Benutzer) beschreibbar. Eingeschränkte Benutzer können ihre übergeordneten oder Home-Verzeichnisse von Geschwistern nicht namentlich auflisten.
Das einzig Besondere an einem sftponly
Benutzer ist seine Teilnahme am sftponly
Gruppe. Wir fanden es einfacher zu handhaben als die Problemumgehung 1.
beschränkt 2
- Sie können keinen Benutzer namens 'home' mit einem Home-Verzeichnis
/home/home
haben - Seien Sie vorsichtig mit Skripten, die
/home
durchlaufen Hierarchie und folgen Sie Symlinks.
Sie müssen eine Struktur innerhalb des Home-Verzeichnisses des Benutzers erstellen, wie in- und out-Verzeichnisse. Diese Verzeichnisse sollten dem Benutzer gehören und er kann dort Dateien ablegen und abrufen.
Ich habe die gleichen Einstellungen auf unserem Server. Wir verwenden dieselbe Konfiguration von SSHD. Die Home-Verzeichnisse der Benutzer gehören root und darin befinden sich die Ordner documents
und public_html
im Besitz der jeweiligen Benutzer. Benutzer melden sich dann mit SFTP an und schreiben in diese Ordner (nicht direkt in Home). Da SSH für sie nicht erlaubt ist, funktioniert es einwandfrei. Sie können einstellen, welche Verzeichnisse für neue Benutzer in /etc/skel/ erstellt werden (zumindest in openSUSE, ich bin mit anderen Distributionen nicht so vertraut).
Eine andere Möglichkeit wäre ACL (openSUSE-Dokumentation) - es kann dem jeweiligen Benutzer Schreibrechte für sein Home-Verzeichnis hinzufügen.