För att kunna ge mina användare tillgång till de webbmappar där de ska lagra sina statiska filer i mitt Content Delivery Network (http://www.abergman.se/bygg-ditt-eget-cdn-content-delivery-network/) projekt, behövde jag ett sätt för dem att enkelt ansluta till maskinen, det var tvunget att vara väldigt nedlåst och enkelt att använda.Valet föll på FTP, av den enkla anledningen att det är enkelt, många publiceringssystem har redan stöd för det och i princip alla webbadministratörer kan använda det.
Mitt första val av ftpserver var ProFtpd, då jag använt den i ett annat projekt där jag byggde en helautomatisk hostingplattform med One-Click installation, fakturering, DNS och Ftp-stöd. Dock så fick jag det inte att fungera den här gången, av någon knepig anledning. Hur som helst så hittade jag att vsftp kunde göra samma sak som ProFtpd, nämligen authensiera användare mot en Mysqldatabas, Vsftp använder sig av tillägget till PAM som kör mot en mysqlserver(pam_sql).
Den här guiden förutsätter att du redan har en mysqlserver installerad.
Installera Vsftpd
apt-get install vsftp
Sedan är det bara att hacka i konfigurationen, som finns i /etc/vsftp.conf
listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
pasv_min_port=63200
pasv_max_port=63204
nopriv_user=cdnuser
chroot_local_user=YES
secure_chroot_dir=/var/run/vsftpd
pam_service_name=vsftpd
guest_enable=YES
guest_username=cdnuser
local_root=/var/cdn/$USER
user_sub_token=$USER
virtual_use_local_privs=YES
Jag valde att använda mig av användaren cdnuser för att köra FTP-servern, viktigt är också att notera raden: pam_service_name=vsftpd, det är det namn som pam kommer använda för att avgöra vilken konfigurationsfil den ska använda. Som synes på raden /var/cdn/$USER så finns alla användares hemkataloger under /var/cdn/$USER där $USER såklart är en variabel för användarnamnet, det gör att jag inte behöver ange vilken arbetsmapp användaren ska ha utan det sköts automatiskt. Av den enkla anledningen finns det bara två kolumner i tabellen som styr användarna.
Sätta upp databasen
Skapa en databas som heter “vsftpd” med en tabell som heter “accounts” med nedan kolumner:
+----------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| username | varchar(30) | NO | UNI | NULL | |
| pass | varchar(50) | NO | | NULL | |
+----------+-------------+------+-----+---------+----------------+
En ny användare skapar du med: INSERT INTO accounts (username, pass) VALUES(‘USERNAME’, PASSWORD(‘PASSWORD’));
Konfigurera PAM
Sista saken som ska konfigureras innan vi är klara, PAM. Glöm inte att backup:a orginalfilen innan du skapar den här konfigurationsfilen /etc/pam.d/vsftpd
auth required pam_mysql.so user=DBUSER passwd=DBPASSWORD host=DBHOST db=vsftpd table=accounts usercolumn=username passwdcolumn=pass crypt=2
account required pam_mysql.so user=DBUSER passwd=DBPASSWORD host=DBHOST db=vsftpd table=accounts usercolumn=username passwdcolumn=pass crypt=2
Glöm inte att ändra databasanvändarnamn, lösenord och host samt skapa en mapp i /var/cdn som motsvara användarens lösenord och som ägs av samma användare som FTP-servern körs som!
Den här guiden är löst baserad på en annan bloggares post, men jag kan inte hitta URL:en just nu, säg till om du hittar den!
Senaste kommentarerna