ProFTPD FTP Benutzer gegen TYPO3 Backend User authentisieren

Gelegentlich mag es Sinn ergeben, vielen TYPO3-Redakteuren FTP-Zugriff auf der user_upload-Ordner zu gewähren, um große Dateien oder Datenmengen hochladen zu können. Dies lässt sich z.B. über eine spezielle TYPO3-BE-Gruppe kombiniert mit entsprechender FTP-Server-Konfiguration automatisieren.

Prerequisites:

  • Keine Shared-Hosting Umgebung, d.h. z.B. 1 Server fuer TYPO3 und FTP
  • ProFTPD mit MySQL Unterstuetzung
  • Einen Datenbankbenutzer fuer ProFTPD mit Leserechten auf be_users
  • Die UID und GID des TYPO3 Webs
  • Die ID einer zusaetzlichen Gruppe im TYPO3 Backend fuer FTP-erlaubte Benutzer

Fuer dieses Beispiel werden folgende Werte verwendet:

  • ProFTPD MySQL Benutzer: proftpdauth
  • ProFTPD MySQL Passwort: proftpdauth123456
  • ProFTPD MySQL Datenbank: typo3
  • ProFTPD MySQL Hostname: localhost
  • Webverzeichnis UID: 33
  • Webverzeichnis GID: 33
  • Pfad fuer die TYPO3 FTP User: /var/www/htdocs/fileadmin/user_upload/
  • ID der Gruppe der FTP-erlaubten TYPO3 Backend Benutzer: 17

Die ProFTPD muss MySQL Module laden. Unter Debian/Ubuntu ist das in /etc/proftpd/modules.conf ausgelagert. Andere Distributionen erwarten die Angaben moeglicherweise direkt in /etc/proftpd.conf bzw. /etc/proftpd/proftpd.conf
Unabhaengig anderer Module muessen auf jedenfall folgende Statements angegeben werden:

LoadModule mod_sql.c
LoadModule mod_sql_mysql.c
LoadModule mod_sql_passwd.c

Die Benutzeranmeldung muss auf das HOME Verzeichnis des Benutzers zeigen – eine Login Shell bietet TYPO3 (natuerlich) nicht, daher muss geprueft werden ob folgende Angaben in der ProFTPD Konfiguration vorhanden sind:

DefaultRoot ~
RequireValidShell off

Die eigentliche Authentisierung findet durch folgende Angaben (unter Debian/Ubuntu in /etc/proftpd/sql.conf) statt:

    SQLPasswordEngine on
 
SQLBackend	mysql
SQLEngine on
SQLAuthenticate users groups
SQLAuthTypes MD5
#SQLConnectInfo Database@Hostname Username Password
SQLConnectInfo typo3@localhost proftpdauth proftpdauth123456
SQLNegativeCache on
# UID = 33
SQLMinUserUID 33
SQLDefaultUID 33
# GID = 33
SQLMinUserGID 33
SQLDefaultGID 33
 
# UID = 33, GID = 33, TYPO3 FTPGroup = 17, Path = /var/www/htdocs/fileadmin/user_upload/
SQLNamedQuery get-user-by-name SELECT "username AS userid, password AS passwd, '33' AS uid, '33' AS gid, '/var/www/htdocs/fileadmin/user_upload/' AS homedir, '/bin/true' AS shell FROM be_users WHERE username = '%U' AND ( usergroup LIKE '17' OR usergroup LIKE '17,%%' OR usergroup LIKE '%%,17,%%' OR usergroup LIKE '%%,17' ) AND disable = 0 AND deleted = 0"
SQLUserInfo custom:/get-user-by-name
SQLNamedQuery get-group-by-name SELECT "username AS groupname, '33' AS gid, username AS members FROM be_users WHERE username = '%{0}'"
SQLNamedQuery get-group-by-id SELECT "username AS groupname, '33' AS gid, username AS members FROM be_users WHERE username = '%{0}'"
SQLNamedQuery get-group-by-member SELECT "username AS groupname, '33' AS gid, username AS members FROM be_users WHERE username = '%{0}'"
SQLGroupInfo custom:/get-group-by-name/get-group-by-id/get-group-by-member

Schreibe einen Kommentar