Instalacja serwera FTP vsftpd dla dystrybucji Debian

    W pierwszej kolejności instalujemy vsftpd z paczki:

    apt-get install vsftpd

    Przechodzimy do pliku konfiguracyjnego:

    nano /etc/vsftpd.conf

    Ustawiamy poniższe parametry:

    listen_ipv6=NO
    anonymous_enable=NO
    local_enable=YES
    write_enable=YES
    anon_upload_enable=NO
    connect_from_port_20=YES
    chroot_local_user=YES
    secure_chroot_dir=/var/run/vsftpd/empty
    pam_service_name=ftp

    Konfiguracja SFTP

    Edytujemy plik konfiguracyjny:

    nano /etc/ssh/sshd_config

    Dodajemy poniższe parametry:

    matchgroup sftp
    ChrootDirectory /srv/ftp/%u
    Forcecommand internal-sftp</code>
    
    Restartujemy serwis:
    
    [code language="bash"]service ssh restart

    Dodawanie użytkownika

    Skrypt do tworzenia użytkownika mieści się w folderze /home. Aby go uruchomić, wydajemy komendę:

    addftpuser.sh

    Definiujemy dwie zmienne – użytkownika i hasło:

    ./addftpuser.sh user password

    W ten sposób utworzyliśmy użytkownika FTP i SFTP „user” z hasłem „password”.

    Folder użytkownika zdefiniowany jest w pliku konfiguracyjnym sshd_config (tutaj na przykładzie folderu /srv/ftp):

     ChrootDirectory /srv/ftp/%u

    Skrypt addftpuser.sh

    #!/bin/bash
    # err when env not set
    set -u
    source /etc/ds-backup/config
    
    if [ $# -ne 2 ]
    then
            echo "bad number of args"
            exit 1
    fi
    
    USR=$1
    PASSWORD=$2
    
    if [[ ! $USR =~ ^[a-zA-Z][a-zA-Z0-9_]{,9}$ ]]
    then
            echo "bad user name!"
            exit 5
    fi
    
    if [[ $USR =~ ^(root|daemon|bin|sys|sync|games|man|lp|mail|news|uucp|proxy|www-data|backup|list|irc|gnats|systemd-timesync|systemd-network|systemd-resolve|systemd-bus-proxy|Debian-exim|messagebus|statd|sshd|ftp|admin|administra$
    then
            echo "invalid user name!"
            exit 10
    fi
    
    #skrypt do tworzenia uzytkownikow ftp/ftps i tworzenia folderu w /srv/ftp/
    #./addftpuser nazwa_klienta haslo
    
    if [ ! -d "$STORAGE" ]
    then
            mkdir -p "$STORAGE"
    fi
    
    $GETENT passwd $USR >/dev/null 2>/dev/null
    if [ $? -eq 0 ]
    then
            echo "user already exists!"
            exit 100
    fi
    
    if [ ! -d "$STORAGE/$USR" ]
    then
    
            $MKDIR -p "$STORAGE/$USR/$USER_SPACE"
            if [ ! -d "$STORAGE/$USR/$USER_SPACE" ]
            then
                    echo "unable to create home directory for user $USR"
                    exit 15
            fi
            $USERADD -M -d "$STORAGE/$USR" -s $DSSHELL $USR
            RC=$?
            if [ $RC -ne 0 ]
            then
                    echo "Unable to add new user $USR - please cleanup manualy"
                    exit 20
            fi
            $CHOWN root:root "$STORAGE/$USR"
            $CHMOD 0755 "$STORAGE/$USR"
            $CHOWN $USR:$USR "$STORAGE/$USR/$USER_SPACE"
            $CHMOD 0700 "$STORAGE/$USR/$USER_SPACE"
    		cho -n "$1:$2"| chpasswd
            exit
    
    else
            echo "user already exists!"
            exit 101
    fi
    

    Potrzebujesz pomocy z konfiguracją i utrzymaniem serwera?

    Outsourcing IT może być rozwiązaniem dla Ciebie!