Создайте пользователя ftp в /etc/passwd. Он может принадлежать к любой
группе, например arhciv (если группа не определена то пропишите ее в файле
/etc/group). Домашний каталог должен быть ~ftp, где ~ftp это полный путь к
каталогу, который будет "корневым", для всех публичных (anonymous)
пользователей. Создание этого пользователя "запускает" публичный FTP
сервер.
Используйте неправильный пароль и shell для этого пользователя. Строка из
passwd файла для этого пользователя должна быть подобной этой:
Создайте каталог ~ftp. Владельцем каталога должен быть root (но не ftp),
группа таже, что и у пользователя ftp (например коммандой chown
root.archiv ftp). Таким образом права доступа "владельца"
принадлежат root, а групповие права принадлежат всем остальным пользователям.
Установите права доступа к каталогу ~ftp в 0555 (например коммандой chmod
555 ftp)
Внимание: В некоторых описания рекомендуют делать владельцем каталога ~ftp
пользователя ftp. Если вы хотите спать спокойно то НИКОГДА НЕ ДЕЛАЙТЕ ЭТОГО!.
Создайте каталог ~ftp/bin. Владелец каталога root, группа wheel. Права
доступа 0111 (noread, nowrite, execute).
Скопируйте программу ls в каталог ~ftp/bin. Назначте владельцем
для ls - root. Права доступа 0111 (noread, nowrite, execute). Если
вы будете записывать в этот каталог еще программы, то права доступа и владельца
назначайте точно также как и для ls.
Создайте каталог ~ftp/etc. Владелец каталога root, группа wheel. Права
доступа 0111 (noread, nowrite, execute).
Создайте в каталоге ~ftp/etc усеченные версии файлов подобные /etc/passwd и
/etc/group. Права доступа к файлам должны быть 0444. В файле ~/ftp/etc/passwd
должны быть описаны только пользователи root, daemon, uucp и ftp. Файл
~/ftp/etc/group должен содержать описание группы к которой принадлежит
пользователь ftp. Также в файле ~/ftp/etc/passwd вы можете создать описание
пользователей, чьи файлы будут находиться в каталогах сервера (это нужно для
команды ls). Например, для всех файлов в каталоге ~ftp/pub/linux владельцем
является 'balon' c UID=156, в этом случае вы можете записать в ~ftp/etc/passwd
файл следующее:
linux:*:156:120:Kazik Balon::
Незабудьте удалить из файла ~ftp/etc/passwd *ВСЕ*
пароли, записав вместо них символ '*'.
root:*:0:0:Ftp maintainer:: ftp:*:400:400: Anonymous ftp::
Для большей безопасности вы можете вообще не создавать
в каталоге ~ftp/etc файлы, passwd и group. В этом случае команда ls не будет
показывать имена владельцев и групп файлов. Но учтите, что некоторые из FTP
демонов могут использовать информацию из passwd и group файлов в других целях.
Создайте каталог ~ftp/pub. Сделайте владельцем каталога себя и назначте
группу туже, что и пользователя ftp. Права доступа к каталогу должны быть 0555.
Файли размещенные в этом каталоге будут доступны по чтению для всех
"публичных" пользователей. Все каталоги в ~ftp/pub должны иметь права
доступа 0555.
Внимание: Никакие каталоги, подкаталоги или файлы размещенные в каталоге ~ftp
не должни принадлежать пользовалелю ftp. Некоторые современные FTP демоны
позволяют изменять владельлев файлов и каталогов с помощью команд подобных
chown. Это можно запретить в файле конфигурации FTP сервера. Например, для WuFTP
вы можете в его файле конфигурации указать следующее:
# all the following default to "yes" for
everybody
delete no guest,anonymous # delete
permission?
overwrite no guest,anonymous # overwrite
permission?
rename no guest,anonymous # rename
permission?
chmod no anonymous # chmod
permission?
umask no anonymous # umask
permission?
Если вы ходите дать возможность анонимным пользователям записивать файлы на
ваш сервер, создайте каталог ~ftp/pub/incoming. Этот каталог должен принадлежать
root и иметь права доступа 733. И виполните команду chmod +t
~ftp/pub/incoming. FTP демон обычно не позволяет анонимным пользователям
перезаписывать файлы , но обыкновенный пользователь системы может удалить их.
Установка прав доступа в 1733 запрещает это. Ниже приведена часть файла
конфигурации FTP демона управляющая процессом загрузки файлов на сервер.
Здесь запрещена загрузка (upload) файлов
во все каталоги сервера, но потом она разрешается для каталога /incoming причем
владельцем файлов будет ftp а права доступа 0600.
Рекомендация: создавайте всю структуру FTP сервера (или только каталог
incoming) в другом дисковом разделе. Это поможет предотвратить преднамеренное
заполнение всего вашего системного диска всяким мусором.
Если вы используете WuFTP то вы можете сконфигурировать некоторые
дополнительные функции, Например, ахивация/разархивация файлов 'на лету', или
создание tar файла с иерархией каталогов. Для этого вам необходимо получить
исходные тексты утилит gzip, gnutar, compress м скомпилировать их без
использования динамических библиотек. Потом разместите эти файлы в каталог
~ftp/bin и отредактируйте файл /etc/ftpconversions чтобы разрешить эти операции.
Gary Mills написал небольшую программы реализующую следующее:
Для выполнения комманд tar и compress, он написал небольшую программу pipe, и
скомпилировал без использования динамических библиотек. Его файл
/etc/ftpconversions выглядит так:
И еще некоторые вещи, которые не помешало бы сделать:
как root выполнить следующие комманды:
touch ~ftp/.rhosts touch ~ftp/.forward chmod 400 ~ftp/.rhosts chmod
400 ~ftp/.forward
тоесть создать файлы .forward и .rhosts нулевой длинны
с вдадельцем root и правами доступа 400.
Если вы в каталог ~ftp или его подкаталоги монтируете диски с других машин,
то устанавливайте для них режим read-only (только чтение). Вот пример записи для
файла /etc/fstab для машины с запушенным ftp сервером:
other:/u1/linux /var/www/ftp/pub/linux nfs ro,noquota,nosuid,intr,bg 1 0
По этой записи смотнируется в каталог
/var/www/ftp/pub/linux диск с машины 'other' без дисковой квоты (noquota), без
поддержки suid программ, "прерываемым" - на случай если хост 'other'
не работает.