Vsftpd virtual local
Inhaltsverzeichnis |
vsftpd
Dieses Tut bezieht sich hauptsächlich darauf Syscp Benutzeren ohne extra Configfiles dem Sytsme bekannt zu machen und vsftp zu nutzen.
Vorbereitungen
Um vsftpd mit MySQL Benutzern zum laufen zu bekommen und nicht immer extra Files anlegen zu wollen, muss man dem System die MySQL Benutzer bekannt machen.
Hierzu verwendet man am einfachsten nss:
Installation von libnss-mysql
apt-get install libnss-mysql nscd
Der nscd ist ein Daemon zu cachen der Benutzernamen, wo durch wir dann auch keinen Geschwindigkeitsverlust bei großen Verzeichnissen haben sollten.
Konfiguration von libnss
/etc/nss-mysql-root.conf
conf.version = 2; shadow.host = inet:localhost:3306; shadow.database = syscp; shadow.db_user = syscp; shadow.db_password = <PASSWORD>; shadow.table = ftp_users u; shadow.where_clause = ; shadow.userid_column = u.id; shadow.user_column = u.username; shadow.password_column = u.password; shadow.lastchange_column = UNIX_TIMESTAMP()-10; shadow.min_column = 1; shadow.max_column = 2; shadow.warn_column = 7; shadow.inact_column = -1; shadow.expire_column = -1;
/etc/nss-mysql.conf
conf.version = 2; users.host = inet:localhost:3306; users.database = syscp; users.db_user = syscp; users.db_password = <PASSWORD>; users.table = ftp_users u; users.where_clause = u.login_enabled = 'Y'; users.user_column = u.username; users.password_column = u.password; users.userid_column = u.id; users.uid_column = u.uid; users.gid_column = u.gid; users.realname_column = u.username; users.homedir_column = u.homedir; users.shell_column = u.shell; groups.group_info_table = ftp_groups g; groups.where_clause = ; groups.group_name_column = g.groupname; groups.groupid_column = g.id; groups.gid_column = g.gid; groups.password_column = "x"; groups.members_table = ftp_groups ug; groups.member_userid_column = ug.customerid; groups.member_groupid_column = ug.id;
/etc/nsswitch.conf
passwd: compat mysql group: compat mysql shadow: compat mysql
So nun noch ein Restart des Cache Daemons und schon sollte die ganze Sache laufen. /etc/init.d/nscd restart
vsftpd
vsftpd installieren
apt-get install vsftpd
vsftp konfigurieren
/etc/vsftpd.conf
anonymous_enable=NO local_enable=YES write_enable=YES local_umask=077 anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES chroot_local_user=YES listen=YES listen_port=21 pasv_min_port=30000 pasv_max_port=30999 pam_service_name=vsftpd log_ftp_protocol=YES xferlog_enable=YES dual_log_enable=YES chmod_enable=YES
/etc/pam.d/vsftpd
#%PAM-1.0 # Uncomment this to achieve what used to be ftpd -A. auth required pam_unix.so auth required pam_shells.so account required pam_unix.so password required pam_unix.so session required pam_unix.so
vsftpd neustarten
/etc/init.d/vsftpd restart
abschließende configs
Danach ab in syscp datenbank und folgenden SQL befehl ausführen:
UPDATE `ftp_users` SET `shell` = '/bin/bash' WHERE `login_enabled` = 'Y'
nun in der shell:
nscd --shutdown nscd --invalidate=syscp nscd chmod 600 /etc/nss-mysql-root.conf /etc/init.d/vsftpd restart
Weitere Edits müssen noch kommen, allerdings muss ich das erst ausprobieren</pre>
SysCP Datenbank anpassen
Der MySQL Update-Befehl für die SysCP Datenbank muss nun noch zum Standard gemacht werden. Am besten per PhpMyAdmin:
-> Login als root oder syscp
-> In der syscp Datenbank die Tabelle 'ftp_users' auswählen
-> Das Feld 'shell' bearbeiten und den Standardwert nach '/bin/bash' ändern
-> Das Feld 'login_enabled' bearbeiten und den Standardwert nach 'Y' ändern.