vsftpd: symlinks geven 550 permission denied

VSFTP staat voor Very Secure FTP. Het is dan ook een van de meest veilige FTP service voor linux. Daarom wordt deze dan ook veelal meegeleverd met de diverse distributies en is deze veel terug te vinden op professionele servers. Daarom heb ik hier al eerder een aantal blogposts over geschreven.

Deze veiligheid brengt echter ook beperkingen met zich mee. Een beperking waar ik recent tegen aan liep is het niet volgen van symlinks buiten de userdirectory (ondanks dat alle rechten goed staan).

Toch is dat soms wel wenselijk, denk aan situaties waarbij users een eigen map voor data hebben die privé is, maar ook een gezamenlijke map waarin ze eenvoudig data met enkel elkaar kunnen delen.

Gelukkig is er wel een eenvoudige oplossing beschikbaar die dezelfde functionaliteit bied.

De oplossing

Om bij deze oplossing goede voorbeelden te kunnen geven ben ik uitgegaan van de configuratie zoals besproken in de blogpost “vsftpd met virtual users uit text file“.

  1. Maak voor beide users een map aan binnen de root directory:
    sudo mkdir /srv/ftp/user1/shared /srv/ftp/user2/shared</li>
    	<li>Maak nu de gedeelde map aan:
    
    sudo mkdir /srv/ftp/shared
  2. Zet de rechten voor de mappen goed:
    sudo chown -R vsftpd:nogroup /srv/ftp/user1/shared /srv/ftp/user2/shared /srv/ftp/shared
    sudo chmod 755 /srv/ftp/user1/shared /srv/ftp/user2/shared /srv/ftp/shared
  3. Nu gaan we de shared map mounten in de shared map van de users:
    sudo mount --bind /srv/ftp/shared /srv/ftp/user1/shared
    sudo mount --bind /srv/ftp/shared /srv/ftp/user2/shared
  4. Om deze mounts nu permanent te hebben, dus ook als de server herstart, voegen we deze toe aan /etc/fstab:
    sudo nano /etc/fstab

    En voeg de volgende regels onderaan de file toe:

    /srv/ftp/shared /srv/ftp/user1/shared none bind 0 0
    /srv/ftp/shared /srv/ftp/user2/shared none bind 0 0

Nu kunnen de users bij de shared map die niet binnen hun eigen userdirectory valt en werkt dit ook na een herstart van de server!

Leave a Reply

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