Этот пост пишу потому, что в интернете не нашел нормальной статьи по настройке встроенного во 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_prestartftpd_prestart()
{
rc_flags=”-D ${rc_flags}”
return 0
}load_rc_config $name
run_rc_command “$1″
Вот и всё
Заходим на свой сервер и радуемся жизни
vladimir [аt] leonidov.su
Спасибо за такой полезный и интересный материал.
Огромное спасибо, Ваша статья решила буквально ВСЕ мои вопросы
Отличная статья, никакой воды всё ясно и по делу. Спасибо.
это всё понятно, за это большое спасибо. а как сделать, чтоб все пользователи, которые заходят со своим логином и паролем могли скачивать, а один пользователь с логином prosmotr и паролем only мог только просматривать, а скачать и загружать не мог?
Не совсем понял вопрос. Читать файл без “скачивания” невозможно. Для того, чтобы прочитать файл, система должна в любом случае загрузить его на жесткий диск. FTP-серверу, насколько я понимаю, без разницы – читаешь ты файл или скачиваешь.
сорри, я не правильно объяснил. не просматривать файлы, а посмотреть список файлов в директориях. я такое видел неоднократно на сайтах с платным доступом к архивам по ftp.
на сайте написно: “для просмотра содержимого нашего архива зайдите по ссылке: ftp://tik.tak пароль= test, логин= test”.
клацаешь на ссылку и попадаешь в архив. можно пооткрывать папки, видеть какие файлы в папках есть, но скачать никак не возможно. как только нажимаешь на файл – открывается окно “файл не найден”. если оплатил доступ – получаешь индивидуальный логин и пароль и качаешь что душе угодно.
Ну так просто нужно на все файлы для данного пользователя (или группы) установить соответствующие права: только чтение.
Вот именно поэтому и иногда не хочется двигаться вперёд!
Спасибо, помогло… четко по существу