VsFTPd, lägg till virtuell användare
För att lägga till virtuella användare i vsFTPd, där PAM används.
vsFTPd har ett ganska annorlunda sätt att hantera rättigheter. Man använder flera olika konfigfiler och konfigfiler för varje användare. Det går att få bra information från man-sidan; "man vsftpd.conf". Informationen här bygger på denna. Websidan (se under Länktips) innehåller inte alls lika bra information utan är mera åt reklamhållet.
Informationen här är testad på en Red Hat ES4.
För att skapa en virtuell användare behöver du:
- Installera vsftpd (surprise!)
- Installera Berkeley DB utils vilket heter db4-utils i detta fall
up2date vsftpd
up2date db4-utils
- En unix-användare du vill mappa den virtuella användaren mot
- Root-access till servern du ska konfigurera på
Informationen här visar hur man använder PAM för att identifiera FTP-användarna vilket innebär att man behöver ha dbformat på filen som innehåller användarnamn och lösen. Skapa t ex denna fil med namnet logins.txt
kalle losenord
Första raden är användarnamnet (kalle) och andra raden är lösenordet (losenord). För att skapa db-filen:
db_load -T -t hash -f logins.txt /etc/vsftpd/login.db
Detta skapar filen /etc/vsftpd/login.db. Skydda filen genom att ändra i dess rättigheter:
chmod 600 /etc/vsftpd/login.db
Skapa därefter en PAM-fil som ska använda den nya "databasen". Det gör du genom att skapa filen /etc/pam.d/ftp med detta innehåll
auth required /lib/security/pam_userdb.so db=/etc/vsftpd/login account required /lib/security/pam_userdb.so db=/etc/vsftpd/login
För 64-bitars RH gäller lib64 och inte lib.
För att kunna använda de virtuella användarna måste följande finnas med i /etc/vsftpd/vsftpd.conf
chroot_local_user=YES guest_enable=YES user_config_dir=/etc/vsftpd_user_conf
Dessutom bör följande vara med:
anonymous_enable=NO local_enable=YES write_enable=NO listen=YES listen_port=21
Det är viktigt att man inte har mellanslag på någon sida om =.
Sist av allt, skapa katalogen /etc/vsftpd_user_conf
mkdir /etc/vsftpd_user_conf
Skapa en fil med samma användarnamn som den virtuella användare man ska använda, i detta fall
vi /etc/vsftpd_user_conf/kalle
Om vi vill att användaren kalle ska få samma rättigheter som apache (för att t ex kunna uppdatera websidor via ftp) så ska den filen ska innehålla följande
guest_username=apache write_enable=YES local_root=/var/www/html virtual_use_local_privs=YES
Några kommentarer kring detta; guest_username är den användaren vars identitet kopplas till den virtuella användaren. write_enable betyder att ftp-användaren får skrivrättigheter i katalogen. Det är dock fler rättigheter inblandade så detta är bara en del av det hela. local_root talar om vad som blir ftp-användarens virtuella hemkatalog. Om det utelämnas blir det samma som linuxanvändarens hemkatalog. virtual_user_local_privs betyder att linuxanvändarens rättigheter överförs till ftp-användarens. Om write_enable är satt till NO kommer det dock inte att fungera.
Starta om vsftpd för att ändringarna ska gälla
service vsftpd restart
Om inloggningen misslyckas och man i logfilen (/var/log/messages) hittar "user unknown" kan det vara bra att kontrollera ifall denna rad finns i vsftpd.conf
pam_service_name=vsftpd
Kommentera i så fall bort den.