Здесь я опишу подробный способ установки FTP-сервера Pure-FTPD и помогу вам избежать проблем, с которыми столкнулся сам: из-за не окрепшей дружбы с линуксом, или не очевидных и не описанных нюансов в установке и настройке.
Устанавливаем обычную версию (еще бывает mysql):
apt-get install pure-ftpd-common pure-ftpd
Здесь важно отметить, что после установки сервис запускается автоматически с параметрами по умолчанию. Остановка, старт или перезапуск:
/etc/init.d/pure-ftpd stop
/etc/init.d/pure-ftpd start
или
/etc/init.d/pure-ftpd restart
Далее мы должны создать группу пользователей FTP и пользователя, который будет находиться в этой группе, и под которым будут работать все пользователи FTP как виртуальные (не нужно плодить реальных пользователей в системе — удобно)
groupadd ftpgroup
useradd -g ftpgroup -d /dev/null -s /etc ftpuser
Теперь можно добавить виртуального пользователя:
pure-pw useradd remote -u ftpuser -g ftpgroup -d /home/pubftp/remote -N 10
Где remote — имя пользователя для доступа к FTP, а /home/pubftp/remote — персональная директория, с которой он будет работать. -N 10 задает квоту в 10МБ (ограничение на использование дискового пространства). Эту директорию не нужно создавать вручную, т.к. она появится автоматически (параметр задается при конфигурировании, об этом чуть позже) при первом подключении и обмене данными с сервером.
Так же после первого выполнения этой команды создается файл, который будет хранить данные для доступа пользователей.
Список существующих пользователей:
pure-pw list
Подробная информация о пользователе:
pure-pw show remote
Удаление пользователя — когда-нибудь может пригодиться, но не сейчас:
pure-pw userdel remote
Удаляем методы авторизации имеющиеся по умолчанию:
Включаем puredb — преимущества в скорости работы, наверное (:
ln -s ../conf/PureDB /etc/pure-ftpd/auth/45puredb
При первом запуске команда создает БД, а после любых операций с пользователями — обновляет (не забывайте ее запускать каждый раз):
pure-pw mkdb
Теперь остается задать важные параметры в конфиге, например:
Создавать домашнюю директорию автоматически:
echo "yes" > /etc/pure-ftpd/conf/CreateHomeDir
Запрещать анонимный доступ:
Не забываем после изменений сделать перезапуск:
Теперь все работает — замечательно.
Ну и просмотреть логи можно так:
more /var/log/messages | grep pure-ftpd
P.S. Когда нужно организовать доступ к одной и той же папке для двух пользователей, можно указать одинаковый путь. Может оказаться полезным одному пользователю дать полные права на создание, изменение и удаление файлов, а другому — только чтение. Делается это следующим образом.
Помимо созданной ранее пользователя ftpuser, создаем еще одного пользователя:
useradd -g ftpgroup -d /dev/null -s /etc ftpuser-read
Оба пользователя будут в группе ftpgroup. Теперь можно создать виртуального пользователя, который в будущем не сможет создавать, изменять и удалять файлы и папки на сервере:
pure-pw useradd reader -u ftpuser-read -g ftpgroup -d /home/pubftp/remote
Далее нужно сменить владельца папки на ftpuser/ftpgroup. В нашем случае можно не этого не делать, если все данные в папках размещались созданным ранее пользователем remote, так как он сразу будет их владельцем. Теперь нужно установить разрешения для папки в 755.
chmod -R 755 /home/pubftp/remote
Не забываем:
pure-pw mkdb
Теперь пользователь remote будет иметь полный доступ, пользователь reader, только доступ на чтение.
Устанавливаем обычную версию (еще бывает mysql):
apt-get install pure-ftpd-common pure-ftpd
Здесь важно отметить, что после установки сервис запускается автоматически с параметрами по умолчанию. Остановка, старт или перезапуск:
/etc/init.d/pure-ftpd stop
/etc/init.d/pure-ftpd start
или
/etc/init.d/pure-ftpd restart
Далее мы должны создать группу пользователей FTP и пользователя, который будет находиться в этой группе, и под которым будут работать все пользователи FTP как виртуальные (не нужно плодить реальных пользователей в системе — удобно)
groupadd ftpgroup
useradd -g ftpgroup -d /dev/null -s /etc ftpuser
Теперь можно добавить виртуального пользователя:
pure-pw useradd remote -u ftpuser -g ftpgroup -d /home/pubftp/remote -N 10
Где remote — имя пользователя для доступа к FTP, а /home/pubftp/remote — персональная директория, с которой он будет работать. -N 10 задает квоту в 10МБ (ограничение на использование дискового пространства). Эту директорию не нужно создавать вручную, т.к. она появится автоматически (параметр задается при конфигурировании, об этом чуть позже) при первом подключении и обмене данными с сервером.
Так же после первого выполнения этой команды создается файл, который будет хранить данные для доступа пользователей.
Список существующих пользователей:
pure-pw list
Подробная информация о пользователе:
pure-pw show remote
Удаление пользователя — когда-нибудь может пригодиться, но не сейчас:
pure-pw userdel remote
rm /etc/pure-ftpd/conf/PAMAuthentication /etc/pure-ftpd/auth/70pam
Включаем puredb — преимущества в скорости работы, наверное (:
ln -s ../conf/PureDB /etc/pure-ftpd/auth/45puredb
При первом запуске команда создает БД, а после любых операций с пользователями — обновляет (не забывайте ее запускать каждый раз):
pure-pw mkdb
Теперь остается задать важные параметры в конфиге, например:
Создавать домашнюю директорию автоматически:
echo "yes" > /etc/pure-ftpd/conf/CreateHomeDir
Запрещать анонимный доступ:
echo "yes" > /etc/pure-ftpd/conf/NoAnonymous
Пользователь не уйдет дальше своего каталога (не подымется выше):
echo "yes" > /etc/pure-ftpd/conf/ChrootEveryone
Человеческий лог:
echo "yes" > /etc/pure-ftpd/conf/VerboseLog
Работаем только по IPv4:
echo "yes" > /etc/pure-ftpd/conf/IPV4Only
Максимальное количество клиентов:
echo "100" > /etc/pure-ftpd/conf/MaxClientsNumber
Максимальное количество клиентов с одного IP:
echo "8" > /etc/pure-ftpd/conf/MaxClientsPerIP
Не показывать системный файлы (вида .имя_файла):
echo "no" > /etc/pure-ftpd/conf/DisplayDotFiles
Время простоя до отключения — 15 минут:
echo "15" > /etc/pure-ftpd/conf/MaxIdleTime
Максимальная параллельная (?) загрузка:
echo "16" > /etc/pure-ftpd/conf/MaxLoad
FTP, порты пассивного режима:
echo "50000 50300" > /etc/pure-ftpd/conf/PassivePortRange
Не забываем после изменений сделать перезапуск:
/etc/init.d/pure-ftpd restart
Теперь все работает — замечательно.
Ну и просмотреть логи можно так:
more /var/log/messages | grep pure-ftpd
P.S. Когда нужно организовать доступ к одной и той же папке для двух пользователей, можно указать одинаковый путь. Может оказаться полезным одному пользователю дать полные права на создание, изменение и удаление файлов, а другому — только чтение. Делается это следующим образом.
Помимо созданной ранее пользователя ftpuser, создаем еще одного пользователя:
useradd -g ftpgroup -d /dev/null -s /etc ftpuser-read
Оба пользователя будут в группе ftpgroup. Теперь можно создать виртуального пользователя, который в будущем не сможет создавать, изменять и удалять файлы и папки на сервере:
pure-pw useradd reader -u ftpuser-read -g ftpgroup -d /home/pubftp/remote
Далее нужно сменить владельца папки на ftpuser/ftpgroup. В нашем случае можно не этого не делать, если все данные в папках размещались созданным ранее пользователем remote, так как он сразу будет их владельцем. Теперь нужно установить разрешения для папки в 755.
chmod -R 755 /home/pubftp/remote
Не забываем:
pure-pw mkdb
Теперь пользователь remote будет иметь полный доступ, пользователь reader, только доступ на чтение.
3 комментария:
Спасибо за правильную статью. Не хватает для полноты команды смены пароля:
pure-pw passwd ftpuser
Спасибо
Несколько неверно указано, что делают некоторые настройки. Рекомендую ознакомиться: http://blogpmenier.dynalias.net/docext/pureftpd/pure-ftpd.conf
А за статью спасибо, уже третий сервер по ней настраиваю ;)
Как понял команда ниже создаёт линк на второй аргумент из первого, но где гадо находиться, чтобы всё сработало? Ведь путь относительный.
ln -s ../conf/PureDB /etc/pure-ftpd/auth/45puredb
Отправить комментарий