Эта статья – продолжение двух предыдущих статей "Альтернативная «прошивка» Zyxel NSA220. Запускаем Debian Lenny на NSA220" и "Установка Transmission и Mediatomb в Zyxel NSA220", здесь мы продолжим "нагружать" сетевое хранилище Zyxel NSA220 полезным контентом.

Установка proftpd:

Перед установкой создадим ассоциацию в файле /etc/hosts имени хоста с IP адресом на котором будет запущен фтп сервер, тем самым изначально оградим себя от проблемы с запуском proftd в дальнейшем в связи с не соответствием этих параметров.
Итак, первым шагом нужно посмотреть имя хоста:

root@NSA-220:~# cat /etc/hostname 
NSA-220

Теперь нужно создать файл etc/hosts и провести ассоциацию о которой я писал выше в этом файле(IP адрес на котором будет ожидать соединение фтп сервер у вас свой):

root@NSA-220:~# nano /etc/hosts 
 
127.0.0.1 localhost 
192.168.1.3 NSA-220

Все, теперь все готово к установке пакета proftpd. Сам пакет proftpd вы можете установить как из репозитариев (apt-get install proftpd или aptitude install proftpd) или собрать пакет самостоятельно из исходников, скачав архив с оффсайта. Я пошел вторым путем и собрал пакет из исходников, скачав архив с последней стабильной версией.
Переходим на сайт проекта proftpd.org и качаем архив с последней версией:

root@NSA-220:~# wget ftp://ftp.proftpd.org/distrib/source/proftpd-1.3.3a.tar.gz

Распаковываем:

root@NSA-220:~# tar zxvf proftpd-1.3.3a.tar.gz

Переходим в директорию с исходными текстами:

root@NSA-220:~# cd proftpd-1.3.3a

Запускаем сборку:

root@NSA-220:~/proftpd-1.3.3a# ./configure --prefix=/usr --sysconfdir=/etc/proftpd --enable-nls
    --prefix=/usr – директория установки
    --sysconfdir=/etc/proftpd – директория с конфигурационными файлами
    --enable-nls – поддержка различных языковых кодировок отличных от кодировки по умолчанию(может пригодиться, если вы будете обращаться к серверу с Windows хостов)

Компилируем:

root@NSA-220:~/proftpd-1.3.3a# make

Собираем и устанавливаем .deb пакет:

root@NSA-220:~/proftpd-1.3.3a# checkinstall -D

Для удобства работы создадим группу nasftp в которую будут входить все пользователи, которым будет предоставляться доступ к ftp серверу:

root@NSA-220:~# groupadd nasftp

Добавляем нового пользователя:

root@NSA-220:~# useradd -d /mnt/md0/ftp -m -g nasftp -p sdf2vfv6#v -s /bin/false nasftp
    -d /mnt/md0/ftp – домашняя директория, в которую будет попадать пользователь после аутентификации на фтп сервере.
    -g nasftp – в эту группу пользователь будет входить.
    -p sdf2vfv6#v – пароль пользователя.
    -s /bin/false – отсуствие командной оболочки, как следствие не возможность аутентификации и авторизации в системе локально и удаленно.
    Nasftp – логин пользователя.

Далее приступаем к редактированию главного конфигурационного файла proftpd:

root@NSA-220:~# nano /etc/proftpd/proftpd.conf

Нужно выставить следующие параметры:

UseIPv6                         off 
DefaultRoot                    ~ 
RequireValidShell               off

Первый параметр отключает использование протокола Ipv6, второй параметр отвечает за перенаправление подключившегося пользователя в его домашнюю директорию, а третий отключает параметр отвечающий за не возможность подключения пользователей у которых отсутствует командная оболочка.
Последним и заключительным шагом проверяем присутствует ли скрипт автозагрузки фтп сервера, а если нет создаем его:

root@NSA-220:~/proftpd-1.3.3a# ls /etc/init.d/proftpd
root@NSA-220:~/proftpd-1.3.3a# nano /etc/init.d/proftpd

Вставляем в скрипт следующее содержимое:

#!/bin/sh 
 
  # ProFTPD files 
  FTPD_BIN=/usr/sbin/proftpd                        
  FTPD_CONF=/etc/proftpd/proftpd.conf               
  PIDFILE=/var/run/proftpd.pid 
 
  # If PIDFILE exists, does it point to a proftpd process? 
 
  if [ -f $PIDFILE ]; then 
   pid=`cat $PIDFILE` 
  fi 
 
  if [ ! -x $FTPD_BIN ]; then 
    echo "$0: $FTPD_BIN: cannot execute" 
    exit 1 
  fi 
 
  case $1 in 
 
    start) 
      if [ -n "$pid" ]; then 
        echo "$0: proftpd [PID $pid] already running" 
        exit 
      fi 
 if [ -r $FTPD_CONF ]; then 
        echo "Starting proftpd..." 
 
        $FTPD_BIN -c $FTPD_CONF 
 
      else 
        echo "$0: cannot start proftpd -- $FTPD_CONF missing" 
      fi 
      ;; 
 
    stop) 
      if [ -n "$pid" ]; then 
        echo "Stopping proftpd..." 
        kill -TERM $pid 
 
      else 
        echo "$0: proftpd not running" 
        exit 1 
      fi 
      ;; 
 
    restart) 
      if [ -n "$pid" ]; then 
        echo "Rehashing proftpd configuration" 
        kill -HUP $pid 
 
      else 
        echo "$0: proftpd not running" 
        exit 1 
      fi 
      ;; 
 
    *) 
      echo "usage: $0 {start|stop|restart}" 
      exit 1 
      ;; 
 esac 
 
  exit 0

Сохраняем файл и делаем его исполняемым:

root@NSA-220:~/proftpd-1.3.3a# chmod +x /etc/init.d/proftpd

Добавляем скрипт в автозагрузку:

root@NSA-220:~# update-rc.d proftpd defaults

Для тестирования работы фтп сервера можно запустить его в режиме отладки, оценив результат работы и нет ли каких ошибок:

root@NSA-220:~/proftpd-1.3.3a# proftpd -n

Если все хорошо, запускаем сервер:

root@NSA-220:~/proftpd-1.3.3a# /etc/init.d/proftpd start