Настройка ftpd

Этот пост пишу потому, что в интернете не нашел нормальной статьи по настройке встроенного во FreeBSD ftp-сервера: кругом сплошные сслыки на “man ftpd”. Интак, мне необходимо поднять ftp с ограниченным доступом по логину/паролю к отдельным папкам для каждого пользователя. Для этих целей ftpd будет выше крыши.

1. В файл /etc/rc.conf добавляем строчки:

ftpd_enable=”YES”
ftpd_flags=”" # здесь прописываем нужные флаги. Их описание я привёл ниже.

Доступные флаги:
-D: запускать ftpd в режиме демона.
-a <адрес>: в режиме демона принимать соединения только на указанный IP-адрес.
-d: включить режим отладки (подробная информация о работе будет выдаваться серверу syslog как LOG_FTP).
-h: не выводить информацию о системе в сообщениях сервера.
-l: протоколировать все сессии (обычно используется/var/log/xferlog).
-A: разрешить только анонимный доступ.
-M: запретить анонимным пользователям создавать папки.
-m: разрешить анонимным пользователям модифицировать существующие файлы (если для этого достаточно системных прав).
-o, -O: разрешить только запись на сервер всем пользователям (-o) или только анонимному пользователю (-O). В частности, таким образом можно организовать сбор с удаленных серверов файлов резервных копий, чтение которых пользователями не предусмотрено.
-r: перевести сервер в режим «только для чтения». Любая модификация размещенных данных будет запрещена.

2. Создаем учётные записи пользователей (например, с помощью adduser), которым будут разрешен доступ к серверу, после чего убеждаемся в том, что их имена не упоминаются в файле /etc/ftpuser (пользователям, упомянутым в этом файле, доступ к ftp будет запрещён).
Для анонимного доступа к серверу необходимо создать учётную запись с именем “ftp”. Корневым каталогом и будет его домашняя папка.

3. Создаем файл /etc/ftpchroot и заполняем его по такому шаблону:

<имя пользователя> <путь к папке>
<@ имя группы> # это для того, чтобы все пользователи данной группы были ограничены одной папкой (можно не указывать).

Пример:

test /home/test
@ wheel

4. Устанавливаем нужные права на папку /home/test (то, что мы хотим разрешить/запретить пользователю test).

5. При необходимости редактируем:
/etc/ftphosts – настройка виртуальных хостов
/etc/ftpwelcome – приветственное сообщение
/etc/ftpmotd – приветственное сообщение, выводимое при входе на сервер

6. Определяемся, как мы будем запускать сервер – через inetd, или же как standalone.
В первом случае в файле /etc/inetd.conf раскоментируем строчку

ftp stream tcp nowait root usr/liexec/ftpd ftpd -l

Во втором случае для запуска используем скрипт /etc/rc.d/ftpd:

# /etc/rc.d/ftpd start

Если его в системе нет (старые версии FreeBSD), создаём вручную:

#!/bin/sh
#
# $FreeBSD: src/etc/rc.d/ftpd,v 1.1 2006/01/21 18:08:15 yar Exp $
#

# PROVIDE: ftpd
# REQUIRE: LOGIN cleanvar

. /etc/rc.subr

name=”ftpd”
rcvar=`set_rcvar`
command=”/usr/libexec/${name}”
pidfile=”/var/run/${name}.pid”
start_precmd=ftpd_prestart

ftpd_prestart()
{
rc_flags=”-D ${rc_flags}”
return 0
}

load_rc_config $name
run_rc_command “$1″

Вот и всё :) Заходим на свой сервер и радуемся жизни ;)

Leave a comment

9 Comments.

  1. Спасибо за такой полезный и интересный материал.

  2. Огромное спасибо, Ваша статья решила буквально ВСЕ мои вопросы :)

  3. Отличная статья, никакой воды всё ясно и по делу. Спасибо.

  4. это всё понятно, за это большое спасибо. а как сделать, чтоб все пользователи, которые заходят со своим логином и паролем могли скачивать, а один пользователь с логином prosmotr и паролем only мог только просматривать, а скачать и загружать не мог?

    • Не совсем понял вопрос. Читать файл без “скачивания” невозможно. Для того, чтобы прочитать файл, система должна в любом случае загрузить его на жесткий диск. FTP-серверу, насколько я понимаю, без разницы – читаешь ты файл или скачиваешь.

      • сорри, я не правильно объяснил. не просматривать файлы, а посмотреть список файлов в директориях. я такое видел неоднократно на сайтах с платным доступом к архивам по ftp.
        на сайте написно: “для просмотра содержимого нашего архива зайдите по ссылке: ftp://tik.tak пароль= test, логин= test”.
        клацаешь на ссылку и попадаешь в архив. можно пооткрывать папки, видеть какие файлы в папках есть, но скачать никак не возможно. как только нажимаешь на файл – открывается окно “файл не найден”. если оплатил доступ – получаешь индивидуальный логин и пароль и качаешь что душе угодно.

        • Ну так просто нужно на все файлы для данного пользователя (или группы) установить соответствующие права: только чтение.

  5. Вот именно поэтому и иногда не хочется двигаться вперёд!

  6. Спасибо, помогло… четко по существу

Leave a Reply


[ Ctrl + Enter ]

Это будет выглядеть примерно так: