В связи с тем, что у начинающих админов возникают проблемы с настройкой популярного ftp сервера,
а личное время ограничено ( рыбалка, т.д., как ни как лето ! ), не могу ответить лично, решил выложить
описание, на русском, файла настроек, который располагается в /etc/proftpd/proftpd.conf
Описание файла настройки proftpdProFTPD может работать в режимах (директива ServerType):
standalone или
inetd. Каждому виртуальному хосту требуется отдельный порт или IP адрес.
Возможно запускать
ProFTPD без привилегий суперпользователя. Однако при при этом необходимо установить
Port выше
1023, отключить
AuthPAM и
WtmpLog, обязательно использовать
AuthUserFile и
AuthGroupFile, установить
User и
Group на себя. Нельзя использовать
DefaultRoot и
Anonymous.
Для использования
DefaultRoot (chroot) требуется запускать сервер с правами
root. Некоторые ОС требуют наличия определенных файлов в корневой директории (например, Solaris требует /dev/tcp и /dev/zero). Символьные ссылки не могут указывать наружу (хотя можно использовать жесткие ссылки или mount -bind).
ProFTPD позволяет создавать "виртуальных" пользователей с помощью директив
AuthUserFile и
AuthGroupFile (или с использованием
SQL,
LDAP и
DB с помощью дополнительных модулей).
AuthUserFile определяет замену для
/etc/passwd в том же формате,
AuthGroupFile - для
/etc/group. Зашифрованные пароли хранятся здесь же (аналога для /etc/shadow нет), поэтому права на чтение соответствующих файлов должен иметь только пользователь, указанный в директиве
User виртуального сервера (предположительно отдельный пользователь для ftpd). См. также
DirFakeUser и
DirFakeGroup.
Разнесение IP адресов или шаблонов доменных имен на классы с помощью директив "
Class имя
IP адрес/маска" и "
Class имя
regex шаблон" позволяет ограничить число одновременных соединений для каждого класса с помощью директив "
Class имя
limit число" (требуется включение механизма классификации директивой "
Classes on" и работа в режиме
standalone).
Области действия директив конфигурации (секции определяются как в файле настройки
Apache с помощью HTML-подобных открывающих и закрывающих тегов):
основной сервер - все что вне других областей действия
<Global> - здесь задаются параметры, одинаковые для всех виртуальных серверов
<VirtualHost IP-адрес> - задание директив для виртуального сервера; использование внутри директивы
Port позволяет использовать один адрес для многих виртуальных серверов (только
standalone)
<Anonymous корневая-директория> - по умолчанию выполняется
chroot() и не проверяется пароль, в отличие от
wu-ftpd не требуется наличия других файлов и библиотек в "резервации"; является частью основного сервера или виртуального хоста
<Directory путь> - задаются параметры, специфичные для директории; не могут быть вложенными; последним простым именем может быть "*"; путь должен быть абсолютным, за исключением блока Anonymous; нельзя указывать символьные ссылки; можно использовать символ '~' для указания домашней директории
<Limit команда> - определяет ограничения на использование объектов в директории (дополняет, но не заменяет права доступа файловой системы); в дополнение к командам протокола
FTP можно использовать групповые имена:
READ (RETR, SITE, SIZE, STAT), WRITE (APPE, DELE, MKD, RMD, RNTO, STOR, XMKD, XRMD), DIRS (CDUP, CWD, LIST, MDTM, NLST, PWD, RNFR, XCUP, XCWD, XPWD), ALL (READ, WRITE, DIRS), LOGIN (только в областях действия - основной сервер,
VirtualHost, Anonymous) и имена типа
SITE_CHMOD; блоки с групповыми именами имеют меньший приоритет; блок для внутренней области действия имеет больший приоритет, чем для внешней; при определении блока можно указывать несколько имен команд через пробел
файл
.ftpaccess позволяет владельцу директории переопределить ее параметры "на лету"; можно блокировать создание файлов с таким именем или запретить переопределение с помощью директивы "
AllowOverride off" (начиная с версии 1.2.
Параметры TCP/IP: Bind IP-адрес (область действия - основной сервер, VirtualHost)
DefaultAddress IP-адрес (область действия - основной сервер)
DefaultServer off | on (использовать ли данную конфигурацию при соединении на адреса, не упомянутые в
VirtualHost; область действия - основной сервер,
VirtualHost)
IdentLookup on | off (использование протокола ident (RFC 1413) для идентификации подслединившегося клиента; рекомендуется отключить, все равно этот протокол никто больше не использует; область действия - основной сервер,
Global, VirtualHost)
PassivePorts min max (интервал портов, который можно использовать для соединений в пассивном режиме)
Port номер-порта (только режим
standalone)
SocketBindTight off | on (только режим
standalone; при выключении привязывает сокеты для требуемых портов сразу для всех интерфейсов, иначе - действует аккуратнее, но требует больше открытых файлов)
TimeoutIdle секунд (600 секунд; никаких действий после входа)
TimeoutLogin секунд (300 секунд; отводится на авторизацию)
TimeoutNoTransfer секунд (300 секунд; вошел, но не начал передачу)
TimeoutSession секунд [
user список-имен-через-запятую |
group список-групп-через-запятую |
class имя-класса] (возможно отрицание, задаваемое восклицательным знаком перед именем; определяет максимальную длительность сессии; по умолчанию - 0 (бесконечность); область действия - основной сервер,
VirtualHost, Global, Anonymous)
TimeoutStalled секунд (3600 секунд; замирание во время пересылки файла; область действия - основной сервер,
VirtualHost, Global)
UseReverseDNS on | off (определять имя хоста клиента по IP адресу)
tcpBackLog размер-очереди (5, только для
standalone)
tcpNoDelay on | off (TCP_NODELAY область действия - основной сервер,
VirtualHost, Global)
tcpReceiveWindow байт (8192)
tcpSendWindow байт (8192)
Управление доступом в области действия Limit: Allow from all | none | хост | сеть (разрешение на действие, определенное в директиве
Limit, в зависимости от шаблона IP адреса (192.168.) или доменного имени (.company.ru); область действия -
Limit; по умолчанию -
from all)
AllowAll (явное разрешение доступа к области действия
Limit, Anonymous или
Directory)
AllowGroup список-групп-через-запятую для доступа к командам, описанным в данной области действия
Limit, пользователь должен входить во все упомянутые группы (AND, возможно отрицание, задаваемое восклицательным знаком перед именем группы)
AllowUser список-имен-через-запятую для доступа к командам, описанным в данной области действия
Limit, пользователь должен иметь указанные имена (AND, возможно отрицание, задаваемое восклицательным знаком перед именем)
Deny from all | none | хост | сеть (запрет на действие, определенное в директиве
Limit, в зависимости от шаблона IP адреса (192.168.) или доменного имени (.company.ru); область действия -
Limit; по умолчанию -
from none )
DenyAll (синоним для команд: "
order deny,allow;deny from all")
DenyGroup список-групп-через-запятую запрещен доступ к командам, описанным в данной области действия
Limit, пользователям входящим во все упомянутые группы (AND, возможно отрицание, задаваемое восклицательным знаком перед именем группы)
DenyUser список-имен-через-запятую запрещен доступ к командам, описанным в данной области действия
Limit, для пользователей с указанным именем (AND, возможно отрицание, задаваемое восклицательным знаком перед именем)
Order allow,deny | deny,allow (определяет последовательность проверки директив
Allow и
Deny, а также действия по умолчанию;
allow,deny проверяются директивы
Allow, если совпадение найдено, то доступ предоставляется, иначе проверяются директивы
Deny и если совпадение найдено, то доступ запрещается, иначе доступ предоставляется;
deny,allow проверяются директивы
Deny и если совпадение найдено, то доступ запрещается, иначе проверяются директивы
Allow и если совпадение найдено, то доступ предоставляется, иначе доступ запрещается; заметьте, что в apache по умолчанию производятся противоположные действия!)
Управление анонимным доступомAnonRequirePassword off | on включение и отключение анонимного доступа
Anonymous корневая-директория (задает область действия для анонимного доступа, директория используется для
chroot, используется в области действия - основной сервер,
Global, VirtualHost)
AnonymousGroup список-групп-через-запятую (трактовать пользователей из данной группы как анонимных - пароль не требуется, делается
chroot в домашнюю директорию, пользователь должен входить во все упомянутые группы (AND, возможно отрицание, задаваемое восклицательным знаком перед именем группы); область действия - основной сервер,
Global, VirtualHost)
AuthUsingAlias off | on (область действия -
Anonymous)
Управление безопасностьюAllowFilter "регулярное-выражение" (ограничение текста параметров команд FTP протокола указанным шаблоном в области действия основной сервер,
Global, VirtualHost, Anonymous, рекомендуется задать шаблон, позволяющий использовать буквы, цифры, подчеркивание, точку, запятую и слеш)
AllowForeignAddress on | off (разрешить клиентам задавать посторонний IP адрес в команде
PORT, что позволяет пересылать данные с одного сервера на другой в области действия основной сервер,
Global, VirtualHost, Anonymous)
AllowOverride ( для
apache подобная директива определяет какие опции конфигурации могут быть изменены с помощью .
htaccess;
off - запрещает использование
.ftpaccess)
AllowOverwrite on | off (разрешить перезаписывать существующие файлы, область действия -
server config, VirtualHost, Anonymous, Directory, Global, .ftpaccess)
AuthAliasOnly off | on (давать доступ только пользователеям, упомянутым в директиве
UserAlias, область действия -
server config, VirtualHost, Anonymous, Global)
AuthGroupFile имя-файла (вместо
/etc/group открывается до
chroot область действия -
server config, VirtualHost, Global)
AuthPAM on | off (область действия - основной сервер,
Global, VirtualHost)
AuthPAMAuthoritative off | on (если PAM отвергает авторизацию, то другие модули даже не вызываются; область действия - основной сервер,
Global, VirtualHost)
AuthPAMConfig сервис (имя сервиса PAM; по умолчанию - ftp; область действия - основной сервер,
Global, VirtualHost)
AuthUserfile имя-файла (вместо
/etc/passwd открывается до
chroot, если разные пользователи имеют одинаковый uid, то их файлы необходимо разделять с помощью
DefaultRoot ~, в этом случае рекомендуется использовать директивы
DirFakeUser on ~ и D
irFakeGroup on ~, шифрованный пароль хранится в этом же файле (нет аналога /etc/shadow) права доступа к этому файлу должны быть достаточны для чтения
uid/gid, заданных директивами
User/Group, но закрыты ото всех остальных (рекомендуется создать специального пользователя вместо
nobody/nogroup) область действия -
server config, VirtualHost, Global)
CommandBufferSize число-символов (ограничение максимальной длины команды)
DefaultRoot имя-директории [список-групп-через-запятую] (где делать
chroot; можно использовать "~" для указания домашней директории; пользователь должен входить во все упомянутые группы (AND, возможно отрицание, задаваемое восклицательным знаком перед именем группы); область действия -
server config, VirtualHost, Global)
DenyFilter "регулярное-выражение" (запрет текста параметров команд FTP протокола указанным шаблоном в области действия основной сервер,
Global, VirtualHost, Anonymous)
Group gid (gid, под которым будет работать сервер; область действия -
server config, VirtualHost, Global, Anonymous)
GroupPassword gid шифрованный-crypt-пароль (использовать не рекомендуется)
HideGroup gid (скрывать файлы, принадлежащие данному
gid, при выдаче листинга (LIST, NLST), если
gid не является первичной группой аутентифицированного пользователя; область действия -
Anonymous, Directory)
HideNoAccess on | off (скрывать файлы, к которым нет доступа, при выдаче листинга (LIST, NLST); область действия -
Anonymous, Directory)
HideUser uid (скрывать файлы, принадлежащие данному
uid, при выдаче листинга (LIST, NLST), если
uid не совпадает с
uid аутентифицированного пользователя; область действия -
Anonymous, Directory)
IgnoreHidden off | on (не только скрывать файлы, на которые распространяется действие директив
HideGroup, HideNoAccess и
HideUser при выдаче листинга, но имитировать их полное отсутствие; не работает для, область действия -
Limit)
MasqueradeAddress ip-адрес (в сообщениях клиенту демонстрировать данный адрес или имя в предположении, что по данному адресу работает
NAT)
MaxClients hostname (максимальное количество клиентов)
ServerName имя-сервера
Управление журналами (по умолчанию, используется
syslog, daemon:debug/authpriv)
AllowLogSymlinks on | off (разрешить записывать журнал в файлы, задаваемые символьными ссылками, область действия - основной сервер,
Global, VirtualHost )
DebugLevel (уровень отладочной печати, см. ключ
--debug)
ExtendedLog имя-файла [список-классов-команд] имя-формата (определяет имя файла для записи журнала, имя определенного командой
LogFormat формата и список через запятую классов команд:
NONE, AUTH, INFO, DIRS, READ, WRITE, MISC, ALL; нельзя давать доступ на запись к директории и файлу никому, кроме
root в качестве имени файла можно использовать строку "
syslog:уровень")
LogFormat имя-формата "строка-форматирования" (привязывает строку форматирования к имени формата; возможные метасимволы (
%A, %d, %D, %F, %l, %m, %r, %U передаются от клиента без обработки и могут содержать все, что угодно, включая управляющие символы):
%% - символ %
%a - IP адрес клиента
%A - строка пароля для анонимных клиентов или UNKNOWN
%b - отправленных байтов
%{имя переменной окружения} %d - простое имя директории для команд работы с директориями
%D - полное имя директории для команд работы с директориями
%f - абсолютное имя файла
%F - имя файла с точки зрения клиента
%h - DNS имя клиента
%l - имя клиента, определенное по протоколу ident или UNKNOWN
%L - IP адрес сервера
%m - имя команды, полученной от клиента
%p - номер порта на сервере
%P - pid сервера
%r - текст командной строки
%s - числовой код ответа сервера
%t - локальное время
%{формат}t - локальное время в формате strftime(3)
%T - число секунд, потраченных на передачу
%u - uid, под которым работал сервер
%U - параметр команды USER
%v - имя сервера из ServerName
%V - DNS имя сервера
LogFormat xfer_fmt "%t %u %f"SyslogFacility источник-сообщения (по умолчанию, сообщения об аутентификации идут как AUTHPRIV, остальные - DAEMON)
SyslogLevel уровень-серьезности ( начиная с которого, сообщения будут передаваться на
syslog; область действия -
сервер, VirtualHost, Global)
SystemLog имя-файла | NONE (перенаправлять сообщения в файл вместо
syslog)
TCPAccessSyslogLevels [уровень-для-allow уровень-для-deny] (уровень серьезности при записи в
syslog соответствующих сообщений
tcpwrapper; по умолчанию -
info и
warn)
TransferLog имя-файла | NONE (имя файла для журнала передачи файлов в формате
wu-ftpd /var/log/xferlog; область действия -
сервер, VirtualHost, Anonymous, Global)
WtmpLog on | off | NONE ( область действия - сервер,
VirtualHost, Anonymous, Global)
Формат выдачи оглавления директории (NLST, LIST, STAT) LsDefaultOptions "строка" (область действия - сервер, VirtualHost, Anonymous, Global)
ShowDotFiles off | on (эквивалентно LsDefaultOptions "-A"; область действия - сервер, VirtualHost, Anonymous, Global)
ShowSymlinks on | off (показывать символьные ссылки или результатирующие файлы; область действия - сервер, VirtualHost, Anonymous, Global)
TimesGMTon | off (показывать GMT или локальные времена; область действия - сервер, VirtualHost, Anonymous, Global)
UseGlobbing on | off (позволяет использовать шаблоны вместо имен файлов; область действия - сервер, VirtualHost, Anonymous, Global)
Расположение локальных файлов:
PidFile имя-файла (только режим standalone)
ScoreboardFile имя-файла (/var/run/proftpd.scoreboard; файл, в котором хранится информация о текущих сессиях)
Ограничение трафика.
RateReadBPS байт-в-секунду (область действия - сервер, VirtualHost, Global, Anonymous, Directory)
RateReadFreeBytes байт (первые байты бесплатно; область действия - сервер, VirtualHost, Global, Anonymous, Directory)
RateReadHardBPS off | on (ждать ли после исчерпания первых бесплатных байт пока средняя скорость не опустится до RateReadBPS)
RateWriteBPS байт-в-секунду (область действия - сервер, VirtualHost, Global, Anonymous, Directory)
RateWriteFreeBytes байт (первые байты бесплатно; область действия - сервер, VirtualHost, Global, Anonymous, Directory)
RateWriteHardBPS off | on (ждать ли после исчерпания первых бесплатных байт пока средняя скорость не опустится до RateWriteBPS)
TransferRate (заменяет старые директивы Rate*)
Модули mod_ratio, mod_ldap, mod_radius, mod_sql имеют свои наборы директив: mod_ratio: AnonRatio, ByteRatioErrMsg, CwdRatioMsg, FileRatioErrMsg, GroupRatio, HostRatio, LeechRatioMsg, RatioFile, RatioTempFile, Ratios, SaveRatios, UserRatio
mod_ldap: LDAPAuthBinds, LDAPDNInfo, LDAPDefaultAuthScheme, LDAPDefaultGID, LDAPDefaultUID, LDAPDoAuth, LDAPDoGIDLookups, LDAPDoUIDLookups, LDAPForceDefaultGID, LDAPForceDefaultUID, LDAPHomedirOnDemand, LDAPHomedirOnDemandPrefix, LDAPHomedirOnDemandPrefixNoUsername, LDAPHomedirOnDemandSuffix, LDAPNegativeCache, LDAPQueryTimeout, LDAPSearchScope, LDAPServer, LDAPUseTLS
mod_radius: RadiusAcctServer, RadiusAuthServer, RadiusEngine, RadiusLog, RadiusRealm, RadiusUserInfo
mod_sql: SQLAuthTypes, SQLAuthenticate, SQLAuthoritative, SQLConnectInfo, SQLDefaultGID, SQLDefaultHomedir, SQLDefaultUID, SQLDoAuth, SQLDoGroupAuth, SQLGidField, SQLGroupGIDField, SQLGroupInfo, SQLGroupMembersField, SQLGroupTable, SQLGroupWhereClause, SQLGroupnameField, SQLHomedir, SQLHomedirField, SQLHomedirOnDemand, SQLLog, SQLLogDirs, SQLLogHits, SQLLogHosts, SQLLogStats, SQLLoginCountField, SQLMinID, SQLMinUserGID, SQLMinUserUID, SQLNamedQuery, SQLNegativeCache, SQLPasswordField, SQLProcessGrEnt, SQLProcessPwEnt, SQLRatioStats, SQLRatios, SQLSSLHashedPasswords, SQLScrambledPasswords, SQLShellField, SQLShowInfo, SQLUidField, SQLUserInfo, SQLUserTable, SQLUserWhereClause, SQLUsernameField, SQLWhereClause
mod_unixprivs.
mod_tls.
mod_rewrite.
Оригинал статьи
http://www.bog.pp.ru/work/ProFTPD.htmlP.S. Все ( почти все ! ) проблемы уже давно разрешины, пользуйтесь поиском господа !
Неточности и замечания приветствуются !