Процедура описана с использованием книжки "Руководство FreeBSD" (FreeBSD Handbook) http://www.citforum.ru/operating_systems/freebsd/handbook/network-ftp.shtml и man ftpd.
Процесс по шагам:
1. Если нам нужен анонимный доступ к серверу (через логины anonymous или ftp), то нужно добавить пользователя ftp: # adduser Username: ftp Full name: anonymous ftp Uid (Leave empty for default): Enter Login group [ftp]: Enter Login group is ftp. Invite ftp into other groups? []: Enter Login class [default]: Enter Shell (sh csh tcsh bash rbash nologin) [sh]: nologin Home directory [/home/ftp]: Enter Use password-based authentication? [yes]: Enter Use an empty password? (yes/no) [no]: yes Lock out the account after creation? [no]: Enter Username : ftp Password : Full Name : anonymous ftp Uid : 1002 Class : Groups : ftp Home : /home/ftp Shell : /usr/sbin/nologin Locked : no OK? (yes/no): yes adduser: INFO: Successfully added (ftp) to the user database. Add another user? (yes/no): no Goodbye!
2. Добавляем в /etc/rc.conf строчки: ftpd_enable="YES" ftpd_flags="-D -l"
Теперь после перезагрузки ftpd у Вас запустится автоматически. Можно его запустить прямо сейчас: # /usr/libexec/ftpd -D -l
Второй вариант запуска связан с использованием демона inetd (если он у Вас работает, см. результат команды ps -ax | grep inetd). Этот способ не так хорош, если пользователей сервера ftp будет много, так как для каждого пользователя ftp в этом случае запускается отдельный экземпляр ftpd, что связано с повышенным расходом памяти. Но почему-то в FreeBSD Handbook описан именно это способ, поэтому я его тоже приведу. В этом случае пункт 2 будет таким:
2. Файл /etc/rc.conf трогать не надо. Просто раскомментируем в файле /etc/inetd.conf следующую строчку: ftp stream tcp nowait root /usr/libexec/ftpd ftpd -l
Посылаем демону inetd команду перечитать конфигурацию: # killall -HUP inetd
Всё! После этой нехитрой процедуры запустится сервер ftp, на который будет разрешен только анонимный доступ под логинами anonymous или ftp (если у Вас кроме root нет других пользователей) - пользователю root доступ будет запрещен. При логине anonymous Вы увидите содержимое папки /home/ftp (это то же самое, что и /usr/home/ftp, так как /home просто мягкая ссылка на папку /usr/home). По ftp в папку /home/ftp Вы можете также записывать файлы и делать в ней папки, но удалить из этой папки файлы у Вас не получится.
Можно еще разрешить пользователю root доступ по ftp, удалив его из списка пользователей в файле /etc/ftpusers (или закомментировав строчку с root). Тогда при логине пользователя root ему будет предоставлен ПОЛНЫЙ доступ на всю файловую систему. Насколько это опасно - думаю, объяснять не нужно. Одним нечаянным движением мышки можно отправить систему вникуда. Таким образом, всё вышеописанное подходит только в том случае, если Вы не публикуете сервер для доступа других пользователей, да и самому надо быть очень осторожным, не пользоваться постоянно логином root.
Если Ваш сервер FTP будет использоваться "не понарошку", то сначала нужно определиться, кому давать доступ на ftp, разрешать ли анонимный доступ, и потом поднастроить права на каталоги и подправить конфигурационные файлы. Вариантов настройки может быть несколько, опишу парочку.
Вариант 1. - доступ пользователю root запрещен. - доступ пользователю anonymous разрешен на папку /distr только на чтение, и на папку /pub на чтение и запись (такой способ задания прав на pub для Интернета не подходит, поскольку из папки pub быстро сделают файлообменник).
Пункты 1 и 2 остаются без изменений. Начнем сразу с пункта 3.
3. Проверяем, что в файле /etc/ftpusers есть пользователь root, удостоверяемся, что по ftp коннект пользователю root запрещен.
4. Меняем владельца папки /usr/home/ftp с пользователя ftp на root, группу меняем с ftp на wheel. Устанавливаем права на папку 555.
5. Делаем папку /usr/home/ftp/pub, владелец root, группа wheel, права на папку 777.
6. Делаем папку /usr/home/ftp/distr, владелец root, группа wheel, права на папку 755.
7. С целью разрешить anonymous удалять файлы подправим чуток команду запуска ftpd, для запуска из /etc/rc.conf: ftpd_flags="-D -l -m"
Для запуска через inetd правим /etc/inetd.conf: ftp stream tcp nowait root /usr/libexec/ftpd ftpd -l -m
8. Перезапускаем сервер ftpd. Если ftpd запускается через rc.conf, то выполним команды: # killall -TERM ftpd # /usr/libexec/ftpd -D -l -m
Если ftpd запускается через inetd, то выполним команду: # killall -HUP inetd
Вариант 2. - доступ пользователю root запрещен. - доступ пользователю anonymous разрешен на папку /distr только на чтение, на папку /pub на чтение и запись, но список папки pub недоступен (это затрудняет использование ftp-сервера в качестве файлообменника).
3. То же самое, что и в варианте 1. 4. То же самое, что и в варианте 1.
5. Делаем папку /usr/home/ftp/pub, владелец root, группа wheel, права на папку 733. Это позволит anonymous зайти в папку pub и скопировать туда файлы, но список этих файлов и папок не виден (это затрудняет пиратский файлообмен). Однако файл скачать оттуда все-таки можно, если знать имя файла и путь до него. Кроме того, если скопировать туда папку вместе с файлами в ней, например папку ARC (она будет лежать физически на диске как /usr/home/ftp/pub/ARC, а для пользователя anonymous как /pub/ARC), то папка ARC будет не видна, но зайти в неё и увидеть список файлов в ней anonymous все-таки сможет!.. Это происходит потому, что при копировании в папку pub под anonymous файлы и папки получают владельцем пользователя ftp. Кроме того, доступны и операции над файлами (удаление, переименование, перемещение).
6. То же самое, что и в варианте 1. 7. То же самое, что и в варианте 1. 8. То же самое, что и в варианте 1.
Еще совет: папку pub лучше держать на отдельном разделе, чтобы предотвратить переполнение основного раздела.
События успешных и неуспешных подключений пишутся в лог-файл /var/log/xferlog, а события ошибочных подключений (связанных с ошибками аутентификации) пишутся в лог-файл /var/log/auth.log. |
Комментарии
RSS лента комментариев этой записи