vsftp in combinatie met verschillende users

Voor FTP onder unix zijn er twee bekende packages, te weten “vsftp” en “proftp”. Aangezien vsftp het makkelijkste is heb ik voor deze gekozen.

Naast mijn thuisserver heb ik ook een VPS, waar onder andere deze website op draait. Nou is het via DirectAdmin mogelijk om automatisch een backup van deze VPS te maken en te FTP-en naar een externe partij. In dit geval wilde ik die backup naar mijn thuisserver laten maken. Aangezien het originele FTP account toegang had tot het webserver gedeelte, wilde ik een aparte user maken voor de VPS backup. Dit bleek nog enig puzzelwerk te zijn, daarom hieronder een uitleg hoe je vsftp zo instelt dat aparte gebruikers eigen instellingen gebruiken.

Allereerst maak je een nieuwe unix user aan met behulp van useradd. Hierna openen we de vsftpd.conf file in onder /etc/:

sudo nano -w /etc/vsftpd.conf

Hierin zijn de volgende settings belangrijk:

# laat lokale users maar ook vereist voor virtuele
local_enable=YES

# laat virtuele gebruikers toe
guest_enable=YES 

user_sub_token=$USER

# gebruik voor virtuele gebruikers dezelfde priviliges als lokale gebruikers
virtual_use_local_privs=YES 

# de map waarin de specifieke user configuratiebestanden te vinden zijn
user_config_dir=/etc/vsftpd/users 

# laat user alleen toe in eigen home dir (zie chroot_list)
chroot_local_user=YES 

# bepaal welke users NIET gechroot worden (werkt andersom als bij chroot_local_user NO staat)
chroot_list_enable=YES 
# file met NIET te chrooten users (werkt andersom als bij chroot_local_user NO staat)
chroot_list_file=/etc/vsftpd/chroot_list 

# sta schrijfacties toe
write_enable=YES

Nu gaan we de instellingen per user bepalen, maak allereerst de mappen:

sudo mkdir -r /etc/vsftpd/users

de -r parameter zorgt ervoor dat je niet eerst /etc/vsftpd hoeft te maken, dit doet dus eigenlijk hetzelfde als mkdir /etc/vsftpd en mkdir /etc/vsftpd/users achter elkaar.

Om de verdere instellingen duidelijk te maken, ga ik uit van de volgende 2 users:

name: nietchrootuser
path: /data/backup

name: chrootuser
path: /home/chrootuser

In de map /etc/vsftpd/users gaan we nu per user een config file maken met als filename de naam van de user zelf. Je krijgt dus /etc/vsftpd/users/nietchrootuser en /etc/vsftpd/users/chrootuser.

In deze file kunnen we specifieke instellingen opgeven, de belangrijkste zijn (als voorbeeld gebruik ik nietchrootuser):

guest_username=nietchrootuser
local_root=/data/backup

Maar waarschijnlijk wil je het volgende er ook aan toevoegen (verander deze instellingen om privileges te beperken):

dirlist_enable=YES
download_enable=YES
write_enable=YES

Deze file maak je voor beide users, met uiteraard de eigen guest_username en local_root.

Als laatste rest ons de chroot list. In deze lijst kunnen we gebruikers opnemen die al dan niet gechroot moeten worden.

Het effect van deze lijst is sterk afhankelijk van de chroot_local_user setting. Indien deze waarde “YES” is bepaald deze lijst welke users NIET gechroot moeten worden. Is de waarde “NO” bepaald deze lijst welke users WEL gechroot moeten worden.

De lijst zelf is een eenvoudige lijst met een username per regel, in het bovenstaande voorbeeld zou die het volgende bevatten:

nietchrootuser

Hierna herstarten we vsftp doormiddel van:

sudo service vsftpd restart

En nu is vsftp per gebruiker ingesteld!

Let op: deze user heeft nu ook shell toegang! Hoe je dat uit kunt zetten, lezen lees je in de blogpost Unix: geen shell toegang voor unix gebruiker.

2 Replies to “vsftp in combinatie met verschillende users”

  1. Hallo,

    Ik ben nu al verscheiden dagen bezig om dit werkend te krijgen met verschillende guide alleen kom ik er niet uit.

    Ik moet drie groepen hebben:
    user1,user2,user3

    user1 en 2 hebben upload rechten en user1 3 heeft enkel download rechten. Ik heb uw tutorial aangehouden en nu krijg ik na het herstarten een connection refused enige idee hoe ik dit kan oplossen.

    Alvast bedankt

    Pieter

    1. Beste Pieter,

      Wat zegt de vsftp log file hierover? Deze is te vinden in /var/log/ en is genaamd vsftpd.log. Deze is te bekijken doormiddel van:

      laatste regels:
      tail /var/log/vsftpd.log

      geheel:
      cat /var/log/vsftpd.log

Leave a Reply

Your email address will not be published. Required fields are marked *