Vsftpd virtual local

Aus Cryptronic
Wechseln zu: Navigation, Suche

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.

Meine Werkzeuge
Namensräume
Varianten
Aktionen
Navigation
Tipps
Werkzeuge