Freebsd швидке налаштування ftp-сервера на основі стандартного ftpd, xnix, adminstuff

Процес по кроках:

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 буде таким:

Надсилаємо демона inetd команду перечитати конфігурацію:
# Killall -HUP inetd

Якщо Ваш сервер 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.