![]() |
|
Webanwendungen Alle Fragen zu Installation und Problemlösung (Torrent-Flux, Hostsoftware, Serversoftware) |
![]() |
|
Themen-Optionen | Ansicht |
![]() |
#1 | |||||||||||
König
Registriert seit: 05.06.2008
Beitr?ge: 1.177
Abgegebene Danke: 100
Erhielt 229 Danke für 44 Beiträge
Downloads: 113
Uploads: 0 Nachrichten: 1203 Renommee-Modifikator:
1764 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]()
Installieren von ProFTPd mit MySQL Unterstützung (FTP benutzer per MySQL)
Erstmal kaffee kochen damit es funktioniert ^^ Nun müssen wir zuersteinmal mit einem apt-get install befehl beginnen. Code:
apt-get install proftpd-mysql Nun funktioniert das ganze natürlich noch nicht. Um FTP User per MySQL hinzufügen zu können, fehlt uns noch eine Verbindung ProFTPd <-> MySQL und natürlich ein Allround User mit dem die ganzen User auf dem Server laufen. Diesem FTP-User gehören später alle Ordner/Dateien im FTP bereich, sodass man keine spezifischen Rechte mehr für jeden einzelnen Benutzer setzen muss. DIesen legen wir also dann mal als erstes an mit einer UserID die nicht im System belegt ist. Ich hab hierbei einfach aufs Geratewohl die ID 2593 genommen. Vorher müssen wir allerdings eine Gruppe erstellen, in der wir den User "parken". Hierbei nehme ich auch meine ID 2593. Somit lauten die 2 Befehle: Code:
groupadd -g 2593 ftpgroup Code:
useradd -u 2593 -s /bin/false -d /bin/null -g ftpgroup ftpuser Damit der auch auf alles zugreifen kann, müssen wir das FTP verzeichnis komplett dem Benutzer zuweisen. Dies geht mit dem Befehl Code:
chown -hRv ftpuser:ftpgroup /ordner/ordner Code:
chown -hRv ftpuser:ftpgroup /var/www Als erstes müssen wir im MYSQL einen User für ProFTPd erstellen. Hierbei bietet sich besonderes Phpmyadmin an: Man klickt auf SQL und gibt folgenden Befehl ein: Code:
CREATE DATABASE ftp; GRANT SELECT, INSERT, UPDATE, DELETE ON ftp.* TO 'proftpd'@'localhost' IDENTIFIED BY 'password'; FLUSH PRIVILEGES; Als nächstes legen wir dann (wieder in phpmyadmin über DB aus wählen -> Ftp -> SQL) die Tabellen an. Code:
CREATE TABLE ftpgroup (
groupname varchar(16) NOT NULL default '',
gid smallint(6) NOT NULL default '2593',
members varchar(16) NOT NULL default '',
KEY groupname (groupname)
) TYPE=MyISAM COMMENT='ProFTP group table'; CREATE TABLE ftpquotalimits (
name varchar(30) default NULL,
quota_type enum('user','group','class','all') NOT NULL default 'user',
per_session enum('false','true') NOT NULL default 'false',
limit_type enum('soft','hard') NOT NULL default 'soft',
bytes_in_avail int(10) unsigned NOT NULL default '0',
bytes_out_avail int(10) unsigned NOT NULL default '0',
bytes_xfer_avail int(10) unsigned NOT NULL default '0',
files_in_avail int(10) unsigned NOT NULL default '0',
files_out_avail int(10) unsigned NOT NULL default '0',
files_xfer_avail int(10) unsigned NOT NULL default '0'
) TYPE=MyISAM; CREATE TABLE ftpquotatallies (
name varchar(30) NOT NULL default '',
quota_type enum('user','group','class','all') NOT NULL default 'user',
bytes_in_used int(10) unsigned NOT NULL default '0',
bytes_out_used int(10) unsigned NOT NULL default '0',
bytes_xfer_used int(10) unsigned NOT NULL default '0',
files_in_used int(10) unsigned NOT NULL default '0',
files_out_used int(10) unsigned NOT NULL default '0',
files_xfer_used int(10) unsigned NOT NULL default '0'
) TYPE=MyISAM; CREATE TABLE ftpuser (
id int(10) unsigned NOT NULL auto_increment,
userid varchar(32) NOT NULL default '',
passwd varchar(32) NOT NULL default '',
uid smallint(6) NOT NULL default '2593',
gid smallint(6) NOT NULL default '2593',
homedir varchar(255) NOT NULL default '',
Shell varchar(16) NOT NULL default '/sbin/nologin',
count int(11) NOT NULL default '0',
accessed datetime NOT NULL default '0000-00-00 00:00:00',
modified datetime NOT NULL default '0000-00-00 00:00:00',
PRIMARY KEY (id),
UNIQUE KEY userid (userid)
) TYPE=MyISAM COMMENT='ProFTP user table';
Jetzt muss nur noch der proftpd.conf (/etc/proftpd/proftpd.conf) beigebracht werden, wie sie zu MySQL verbinden soll! Als allererstes aber müssen wir ProFTPd sagen, dass wir MySQL und nicht PostgreSQL benutzen. Dazu öffnen wir die modules.conf folgendermaßen: Code:
nano /etc/proftpd/modules.conf
Code:
LoadModule mod_sql_postgres.c Als nächstes nehmen wir uns die proftpd.conf mit dem Befehl Code:
nano /etc/proftpd/proftpd.conf
Code:
DefaultRoot ~
# The passwords in MySQL are encrypted using CRYPT
SQLAuthTypes Plaintext Crypt
SQLAuthenticate users* groups*
# used to connect to the database
# databasename@host database_user user_password
SQLConnectInfo ftp@localhost proftpd password
# Here we tell ProFTPd the names of the database columns in the "usertable"
# we want it to interact with. Match the names with those in the db
SQLUserInfo ftpuser userid passwd uid gid homedir Shell
# Here we tell ProFTPd the names of the database columns in the "grouptable"
# we want it to interact with. Again the names match with those in the db
SQLGroupInfo ftpgroup groupname gid members
# set min UID and GID - otherwise these are 999 each
SQLMinID 500
# create a user's home directory on demand if it doesn't exist
SQLHomedirOnDemand on
# Update count every time user logs in
SQLLog PASS updatecount
SQLNamedQuery updatecount UPDATE "count=count+1, accessed=now() WHERE userid='%u'" ftpuser
# Update modified everytime user uploads or deletes a file
SQLLog STOR,DELE modified
SQLNamedQuery modified UPDATE "modified=now() WHERE userid='%u'" ftpuser
# User quotas
# ===========
QuotaEngine on
QuotaDirectoryTally on
QuotaDisplayUnits Mb
QuotaShowQuotas on
SQLNamedQuery get-quota-limit SELECT "name, quota_type, per_session, limit_type, bytes_in_avail, bytes_out_avail, bytes_xfer_avail, files_in_avail, files_out_avail, files_xfer_avail FROM ftpquotalimits WHERE name = '%{0}' AND quota_type = '%{1}'"
SQLNamedQuery get-quota-tally SELECT "name, quota_type, bytes_in_used, bytes_out_used, bytes_xfer_used, files_in_used, files_out_used, files_xfer_used FROM ftpquotatallies WHERE name = '%{0}' AND quota_type = '%{1}'"
SQLNamedQuery update-quota-tally UPDATE "bytes_in_used = bytes_in_used + %{0}, bytes_out_used = bytes_out_used + %{1}, bytes_xfer_used = bytes_xfer_used + %{2}, files_in_used = files_in_used + %{3}, files_out_used = files_out_used + %{4}, files_xfer_used = files_xfer_used + %{5} WHERE name = '%{6}' AND quota_type = '%{7}'" ftpquotatallies
SQLNamedQuery insert-quota-tally INSERT "%{0}, %{1}, %{2}, %{3}, %{4}, %{5}, %{6}, %{7}" ftpquotatallies
QuotaLimitTable sql:/get-quota-limit
QuotaTallyTable sql:/get-quota-tally/update-quota-tally/insert-quota-tally
SQLNamedQuery gettally SELECT "ROUND((bytes_in_used/1048576),2) FROM ftpquotatallies WHERE name='%u'"
SQLNamedQuery getlimit SELECT "ROUND((bytes_in_avail/1048576),2) FROM ftpquotalimits WHERE name='%u'"
SQLNamedQuery getfree SELECT "ROUND(((ftpquotalimits.bytes_in_avail-ftpquotatallies.bytes_in_used)/1048576),2) FROM ftpquotalimits,ftpquotatallies WHERE ftpquotalimits.name = '%u' AND ftpquotatallies.name = '%u'"
SQLShowInfo LIST "226" "Used %{gettally}MB from %{getlimit}MB. You have %{getfree}MB available space."
RootLogin off
RequireValidShell off
Dann öffnen wir wieder phpmyadmin und tragen unsere FTP Gruppe ein. (DB auswählen -> ftp -> SQL) Code:
INSERT INTO `ftpgroup` (`groupname`, `gid`, `members`) VALUES ('ftpgroup', 2593, 'ftpuser'); Dies geht ganz einfach mit dem BEfehl (DB Auswählen -> ftp -> SQL): Code:
INSERT INTO `ftpuser` (`id`, `userid`, `passwd`, `uid`, `gid`, `homedir`, `shell`, `count`, `accessed`, `modified`) VALUES (1, 'BENUTZERNAME', 'PASSWORT', 2593, 2593, '/VERZEICHNIS/VERZEICHNIS', '/sbin/nologin', 0, '', ''); Nach der ganzen Prozedur den ProFTPd Server neustarten mit Code:
/etc/init.d/proftpd restart Außerdem sollte beachtet werden dass die User auf das Verzeichnis dass wir ihnen zuweisen Rechte haben - im zweifelsfall also ein Code:
chown -hRv ftpuser:ftpgroup /verzeichnis/verzeichnis Ge?ndert von Entity (14.08.2009 um 20:29 Uhr) |
|||||||||||
![]() |
![]() ![]() ![]() |
Folgende 11 Benutzer sagen Danke zu Entity für den nützlichen Beitrag: |
![]() |
#2 | |||||||||||
Erfahrener Benutzer
Registriert seit: 16.06.2008
Ort: Norddeutschland
Alter: 46
Beitr?ge: 382
Abgegebene Danke: 158
Erhielt 34 Danke für 4 Beiträge
Downloads: 30
Uploads: 0 Nachrichten: 170 Renommee-Modifikator:
450 ![]() ![]() ![]() ![]() ![]() ![]() |
![]()
mal ne frage kann jemand ein updat von der anleittung machen. da ja mitlerweile auch neue phpmyadmin versinen draussen sind und der befehl:
HTML-Code:
apt-get install proftpd-mysql HTML-Code:
apt-get install proftpd proftpd-mod-mysql mysql-server-5.0 mysql-client-5.0 |
|||||||||||
![]() |
![]() ![]() ![]() |
![]() |
#3 | |||||||||||
Böser Mod / NvT Terrorist
Registriert seit: 16.09.2009
Ort: Cyberspace
Beitr?ge: 2.469
Abgegebene Danke: 188
Erhielt 562 Danke für 126 Beiträge
Downloads: 11
Uploads: 0 Nachrichten: 10609 Renommee-Modifikator:
4014 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]()
Ich verwend dafür lieber vsFTP, ne Anleitung gibts hier, funktioniert einwandfrei
![]() Debian Root Tutorial (SSH + TorrentFlux) - NetVision-Technik Lg Lex |
|||||||||||
![]() |
![]() ![]() ![]() |
![]() |
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, G?ste: 1) | |
|
|