Gespeichert von Erik Wegner
am/um
Body
Der folgende Text beschreibt, wie ein Benutzer SFTP-Zugang zu einem Server bekommt. Auf dem Server soll er in einem bestimmten Verzeichnis berechtigt sein, dass jedoch dem WWW-Benutzer gehört.
- Ein neues Benutzerkonto anlegen:
useradd -m -d /home/sftpuser -s /bin/false sftpuser - Ein Passwort festlegen:
passwd sftpuser - Eine Gruppe anlegen:
groupadd -U sftpuser htmlsftp - Erweitere ACL setzen für das geteilte Verzeichnis:
setfacl -R -d -m u::rwX,g::rX,u:82:rwX,g:82:rwX,g:htmlsftp:rwX /srv/html/sftp_upload - Den Besitzer wechseln, damit chroot erlaubt ist:
chown root:root /srv/html/sftp_upload - Die Berechtigungen setzen, damit chroot erlaubt ist:
chmod 755 /srv/html/sftp_upload - Die sshd-Konfiguration erweitern (siehe folgender Abschnitt)
- Den SSH-Dämon neu starten
systemctl restart sshd - Zugriff per SSH testen
/etc/ssh/sshd_config
Match User sftpuser
ChrootDirectory /srv/html/sftp_upload
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
Die Vergabe der erweiterten ACL erfolgt mit dem Ziel, dass sowohl der lokale PHP-Prozess als auch Mitglieder der Gruppe htmlsftp lesen und schreiben dürfen.
Die Zuordnung der Berechtigung 755 zum chroot-Ordner ist zwingend erforderlich.
In meiner Arch-Installation werden /sbin/false und /usr/bin/nologin als ungültige Shells angesehen. Dadurch wird der Zugriff mit SFTP verhindert. Deshalb muss eine interaktive Shell ausgewählt sein. Die interaktive Anmeldung ist jedoch durch die ForceCommand-Zeile unterbunden.