Мы — долго запрягаем, быстро ездим, и сильно тормозим.
www.lissyara.su —> статьи —> FreeBSD —> программы —> proftpd

proftpd с хранением пользователей в MySQL

Автор: lissyara.


    Озадачился найти замену штатному ftp-серверу FreeBSD - не устраивали системные учётки. Пошастал по инету, посмотрел что есть в портах - и остановился на proftpd. Всё в общем-то хорошо с ним тока один косяк - документация в некоторых разделах неполная... Приходилось домысливать самостоятельно - благо на его сайте была пара примеров конфигов. Ставил из портов:
/usr/home/lissyara/>cd /usr/ports/
/usr/ports/>make search name='proftpd'
Port:   proftpd-1.3.0.r3
Path:   /usr/ports/ftp/proftpd
Info:   Highly configurable ftp daemon
Maint:  mharo@FreeBSD.org
B-deps: expat-2.0.0 gettext-0.14.5_1 gmake-3.80_2 libiconv-1.9.2_1
R-deps: rc_subr-1.31_1
WWW:    http://www.proftpd.org/

Port:   proftpd-mysql-1.3.0.r3
Path:   /usr/ports/ftp/proftpd-mysql
Info:   Highly configurable ftp daemon with MySQL support
Maint:  thomas@goirand.fr
B-deps: expat-2.0.0 gettext-0.14.5_1 gmake-3.80_2
ldconfig_compat-1.0_5 libiconv-1.9.2_1 mysql-client-4.1.18_1
rc_subr-1.31_1 readline-5.1
R-deps: ldconfig_compat-1.0_5 mysql-client-4.1.18_1
rc_subr-1.31_1 readline-5.1
WWW:    http://www.proftpd.org/

/usr/ports/>/usr/ports/>cd /usr/ports/ftp/proftpd-mysql
/usr/ports/ftp/proftpd-mysql/>make && make install && make clean

Затем лезет синее окошко, с опциями. БД MySQL у меня уже стояла, поэтому я её и выбрал - с целью запихать туда пользователей. Ну и ещё некоторые - с целью в дальнейшем разобраться, что есть что:

Options for proftpd-mysql 1.3.0.r3

[ ] IPV6        Use IPv6
[ ] LDAP        Use LDAP
[X] MYSQL       Use MySQL
[ ] POSTGRESQL  Use Postgres
[ ] OPENSSL     Include mod_tls
[X] QUOTA       Include mod_quota
[ ] IFSESSION   Include mod_ifsession
[X] README      Include mod_readme
[X] RATIO       Include mod_ratio
[X] REWRITE     Include mod_rewrite
[X] WRAP        Include mod_wrap
[ ] RADIUS      Include mod_radius

После инсталляции топаем править конфиг /usr/local/etc/proftpd.conf:

# Конфиг proftpd - 2006-02-19


# имя сервера - показывается коннектящимся клиентам
ServerName              "Main FTP servant :)"
# тип сервера (даже не тип самого сервера, а тип его запуска,
# standalone/inetd - сам или через inetd)
ServerType              standalone
# смысл следующей директивы такой: если клиент коннектится не на имя
# а на IP или на виртуальный хост, не описанный в конфиге, то при
# установке в `off` он получит отлуп, если же установлено `on` то
# он будет обслужен `сервером по-умолчанию`
DefaultServer           on
# e-mail администратора (по идее для каждого ВиртуалХоста его можно
# поставить разный - но я делаю один сервер без извращений с
# виртуальными хостами)
ServerAdmin             admin@lissyara.su
# файло где хранится инфа о сессиях
#ScoreboardFile         /var/run/proftpd.scoreboard

# порт на котором работает сервер
Port                    21

# Маска с которой создаются новые файлы (не совсем маска - маска получается
# из этого значения, путём его вычитания из 777 - т.е. в даном случае получится
# маска 755)
Umask                   022

# Максимальное число `детей` (работает только в standalohe режиме)
# необходимо для защиты от атак типа `отказ в обслуживании` да и
# от перегрузки сервера поможет :)
MaxInstances            30

# Юзер от которого работает сервер
User                    ftp
# группа, под которой работает сервер
Group                   ftp


# Тип авторизации (на самом деле - в каком виде хрянятся
# пароли в БД - в данном случае - открытым текстом)
SQLAuthTypes            Plaintext
# Кого и как аутентифицируем - on - всех и вся :)
# Но - если поставить `on` то он ломится в БД за группами.
# мне группы никчему. Посему поставил `users`
SQLAuthenticate         users
# инфа для соединения с MySQL сервером:
# имя_базы_данных@хост_где_MySQL:порт имя_пользователя пароль
SQLConnectInfo          ftp@localhost:3306 ftp ftp
# в каком порядке вернёт поля запрос - первое поле, это
# имя таблицы, где лежат пользователи
SQLUserInfo             `users_table` `username` `password` `uid` `gid` \
                        `homedir` `shell`
# должен ли быть у юзера (для того, чтобы он мог коннектится),
# `реальный` shell описанный в /etc/shells
RequireValidShell off
# лог файл работы с SQL
SQLLogFile      /var/log/proftpd.log

# Вот тут моя натура склонная к ведению логов на всё в
# БД MySQL смогла разыграться на полную катушку :)
# Записываем удачные логины в БД. Общий смысл такой - создаём
# именованую кверю, с указанием что мы должны сохранять
SQLLog          PASS            counter_login
SQLNamedQuery   counter_login   UPDATE "`last_login`=UNIX_TIMESTAMP(), \
                                `login_count`=`login_count`+1 WHERE \
                                `username`='%u'" `users_table`
# пишем неудачные логины в БД
SQLLog          ERR_PASS        counter_err
SQLNamedQuery   counter_err     UPDATE "`last_err_login`=UNIX_TIMESTAMP(), \
                                `err_login_count`=`err_login_count`+1 WHERE \
                                `username`='%U'" `users_table`

# логируем что сохраняет и тащщит с сервера:
# переменные
# %u - имя пользователя (с которым залогинился)
# %f - полный путь и имя файла который был скачан
# %b - число байт, которые были скачаны
# %h - имя клиента (из DNS), если не удалось разрешить - IP
# %a - IP-адрес клиента
# %m - имя команды полученной от клиента (RETR/STOR)
# %T - время (секунд) ушедшее на передачу файла клиенту

SQLLog          RETR,STOR               log_story_transfer
SQLNamedQuery   log_story_transfer      INSERT "'',\
                                        UNIX_TIMESTAMP(),'%u',\
                                        '%f', '%b', '%h', \
                                        '%a', '%m', '%T'" \
                                         `xfer_table`
# записываем ошибки при сохранении и чтении файлов
# (в одну строку не влезли - но работает и в таком виде :))
SQLLOG          ERR_RETR,ERR_STOR,ERR_DELE,ERR_RMD,ERR_RNTO\
                                        log_err_modify
SQLNamedQuery   log_err_modify          INSERT "'',\
                                        UNIX_TIMESTAMP(),\
                                        '%u', '%f', '%h', \
                                        '%a', '%m'" `xfer_errors`

# если вылезет проблема, типа тормозов при подключении
# (в момент установления коннекта `задумывается` на 10-20 секунд)
# то раскомментируйте следующие две строки
#UseReverseDNS     off
#IdentLookups      off



# если надо чтобы ВСЕ пользователи по ftp были ограниченны
# своей домашней директорией, то надо раскомментировать
# следующую строку:
#DefaultRoot            ~
# у меня хитрее сделано - себе я разрешил шариться по всему серверу
# а остальных за`chroot`ил. Если, например, надо чтобы пользователи
# могли по серверу шариться а анонимоусы нет, то надо указать !users
# также можно указать определённую группу.
DefaultRoot             ~       !lissyara

# Директории
<Directory ~>
AllowOverwrite          on
<Limit Write>
AllowAll
</Limit>
<Limit READ>
AllowAll
</Limit>
</Directory>


<Anonymous /usr/home/ftp>
# пользователь от которого анонимоусы шарятся
User            ftp
# группа анонимоусов
Group           ftp
# альясы ананонимоусов (можно будет входить как ftp, а
# не anonymous)
UserAlias       anonymous ftp
# максимально число анонимоусов
MaxClients      10      "Sorry, max %m users - try again later"
<Limit WRITE>
DenyAll
</Limit>
</Anonymous>

После того, как написали конфиг, создаём таблицы в MySQL (если вам не нужны извращения типа моих - с ведением логов в БД - то можно обойтись тока таблицей `users_table`):

--
-- Table structure for table `users_table`
--

DROP TABLE IF EXISTS `users_table`;
CREATE TABLE `users_table` (
  `unic_id` int(11) NOT NULL auto_increment,
  `username` varchar(20) NOT NULL,
  `password` varchar(20) NOT NULL,
  `groupname` varchar(24) NOT NULL,
  `uid` int(11) NOT NULL,
  `gid` int(11) NOT NULL,
  `homedir` varchar(50) NOT NULL,
  `shell` varchar(20) NOT NULL,
  `last_login` int(15) NOT NULL,
  `login_count` int(15) NOT NULL,
  `last_err_login` int(15) NOT NULL,
  `err_login_count` int(15) NOT NULL,
  PRIMARY KEY  (`unic_id`)
) ENGINE=MyISAM COMMENT='Таблица пользователей';

--
-- Dumping data for table `users_table`
--

INSERT INTO `users_table` VALUES (1,'lissyara','123','lissyara',
1001,1001,'/usr/home/lissyara','/sbin/nologin',0,0,0,0);
INSERT INTO `users_table` VALUES(2, 'admin','123', 'ftp',
'1000', '1000', '/usr/users/admin', '/sbin/nologin',0,0,0,0)



--
-- Table structure for table `xfer_errors`
--

DROP TABLE IF EXISTS `xfer_errors`;
CREATE TABLE `xfer_errors` (
  `unic_id` int(32) NOT NULL auto_increment,
  `timestamp` int(15) NOT NULL,
  `user_name` varchar(64) NOT NULL,
  `file_and_path` tinytext NOT NULL,
  `client_name` varchar(127) NOT NULL,
  `client_IP` varchar(15) NOT NULL,
  `client_command` varchar(5) NOT NULL,
  PRIMARY KEY  (`unic_id`)
) ENGINE=MyISAM COMMENT='Таблица ошибок при работе';

--
-- Dumping data for table `xfer_errors`
--


--
-- Table structure for table `xfer_table`
--

DROP TABLE IF EXISTS `xfer_table`;
CREATE TABLE `xfer_table` (
  `unic_id` int(32) NOT NULL auto_increment,
  `timestamp` int(15) NOT NULL,
  `user_name` varchar(64) NOT NULL,
  `file_and_path` tinytext NOT NULL,
  `bytes` int(15) NOT NULL default '0',
  `client_name` varchar(127) NOT NULL,
  `client_IP` varchar(15) NOT NULL,
  `client_command` varchar(5) NOT NULL,
  `send_time` varchar(9) NOT NULL default '0',
  PRIMARY KEY  (`unic_id`)
) ENGINE=MyISAM COMMENT='Таблица, чё приняли-передали';

--
-- Dumping data for table `xfer_table`
--

Заводим в системе пользователя `ftp` командой `adduser`, после чего создаём файло для логов и даём на него права:
/usr/home/lissyara/>touch /var/log/proftpd.log
/usr/home/lissyara/>chown ftp:wheel /var/log/proftpd.log

Создаём директорию для пользоваетля `admin` и даём на неё права пользователю `ftp`:
/usr/home/lissyara/>su
/usr/home/lissyara/>mkdir -p /usr/users/admin
/usr/home/lissyara/>chown ftp:ftp /usr/users/admin

Вносим строку в /etc/rc.conf и запускаем:

/usr/local/etc/rc.d/>echo 'proftpd_enable="YES"' >> /etc/rc.conf
/usr/local/etc/rc.d/>./proftpd.sh start
Starting proftpd.
/usr/local/etc/rc.d/>

В общем-то всё. Если что-то не работает смотрим логи MySQL - правильные ли запросы идут к БД, идут ли они вообще, также смотрим /var/log/messages. В крайнем случае запускаем proftpd с параметрами типа -q -d 10...

P.S. надо сразу отметить, что если создаётся учётка для пользователя, который есть в системе (в данном примере - `lissyara`) и ему необходимо дать теже права, что у него есть - то имя пользователя и пароль должны совпадать с системными.

P.S.2 Кстати, если вместо Plaintext поставить Backend то можно в БД хранить пароли зашифрованные средствами самого MySQL (функция PASSWORD()).

P.S.3 Если пароли зашифрованы - то пользователь автоматом chroot`ится - ибо для проверки системного пароля он должен быть в БД незашифрованным.

Просмотр логов ftp-сервера
файл скачан размер размещён примечание
ftp.php.gz
4262 3.4kb 2007-08-02 php скиптик для просмотра логов - по просьбам трудящихся :)



размещено: 2006-02-19,
последнее обновление: 2007-08-02,
автор: lissyara


Abigor, 2006-02-19 в 16:52:17

Хорошая статья, вот бы еще сюда же и квоту привязать, было бы вообще супер.

WarWar, 2006-03-18 в 21:25:37

... и описать (али хотя бы вспомнить) веб интерфейс...

Seclorum, 2006-04-26 в 4:02:13

Квотирование тоже несложно прикручивается

http://howtoforge.org.ua/?q=node/22/print

Dmitri, 2006-04-30 в 4:04:00

Да нет квотирование раздела юзера--т.е. полагается юзеру к примеру 10 метров, вот чтоб он такой больше 10 метров и разместить не мог в своем каталоге.

mcat, 2006-06-22 в 5:39:32

2 Dmitri - http://howtoforge.com/perfect_setup_ubuntu_5.10_p3

Sery656, 2006-10-07 в 17:31:46

А база сама то как называется? Дамп базы ведь не может выполница в никуда.

lissyara, 2006-10-07 в 19:52:17

В конфиге написано какая база используется.
Думаю сделать логический вывод труда не составит? :))

Роман, 2006-11-03 в 9:51:39

Спасибо за отличную статью. И вообще отличный сайт. Нашел для себя много интересного.

logan, 2006-11-06 в 2:20:58

важное замечание. ProFTPd имеет отвратительную привычку не жить с PostgreSQL. причем это не зависит ни от версии ProFTPd, ни от версии PostgreSQL. По имеющимся данным ошибка допущена в портах, но где именно — я не уловил. Из сырцов собирается вполне нормально.

А выглядит ошибка очень просто. если запустить профтд в дебаг-режиме — он живет ~2 минуты и падает с сообщением alarm detected. если дебаг не включен — падает просто (про аларм не кричит). Что это за "будильник" и откуда он его берет — тайна велика есть :)

Happy_demon, 2007-01-19 в 12:20:55

cd /usr/ports/
[root@bc /usr/ports]# make search key=proftpd | more
Port:   proma-0.8.2
Path:   /usr/ports/ftp/proma
Info:   Administrating a ProFTPd server storing users in a MySQL database
Maint:  sexbear@tmu.edu.tw
B-deps:
R-deps:
WWW:    http://proma.sourceforge.net
там правда таблицы и графы немного другие, чем в приведенной статье (кстати по ней и сделал), но надеюсь разобраться. пока пишит Failed to query database.

warwar, 2007-03-02 в 13:14:03

не рассмотрен вопрос перекодировки символов имен файлов.
по данному конфигу видим крякозябры вместо русских букв в именах файлов

f0b0s, 2007-03-10 в 20:15:15

Хотелось бы отметить 2 факта:

1) я сам тока начинаю изучение freebsd и отсутствие описания факта, что нужно прописать 'ftp'@'localhost' в табилцу mysql.users вызвало у меня некоторые сложности...  proftpd просто не мог залогиниться))) а также все же неплохо было бы добавить описание как создавать б/д ftp. я понимаю, это мелочь, но статью не испортит, а людям поможет)) так что прошу добавить следующие замечания:

mysql -u root -p

create database ftp;

GRANT SELECT, INSERT, UPDATE, DELETE ON ftp.* TO 'proftpd'@'localhost' IDENTIFIED BY 'password';

GRANT SELECT, INSERT, UPDATE, DELETE ON ftp.* TO 'proftpd'@'localhost.localdomain' IDENTIFIED BY 'password';

FLUSH PRIVILEGES;  


(извиняюсь за излишний ламеризм, просто сам попался на этом)

2) теперь поинтереснее:
Если поменять  Plaintext на Backend в конфиге, а пароли в ftp.users_table прописывать как PASSWORD('_пароль_'), то это работать не будет)):
ТУТ
или ТУТ (кэш яндекска, ибо страница у меня не загрузилась)
написано, что Раньше я использовал  Backend  и функцию  password (), но в последних версиях mysql она изменилась и можно запутаться..
И действительно у меня не заработало (на страничку я вышел после мучений) все перепроборвал. Почитал ман, в инете порылся, но неработает так и все( Буду рад решению, но кроме как заменить Plaintext на Plaintext Crypt, пароли прописывать, как encrypt ('') я не нашел. Этими операциями мы записываем пароли в энигме. Довольно простое шифрование, но хоть что-то. Очень хочется PASSWORD (). Так что если кто найдет решение - пишите не стесняйтесь)))

AndreyP, 2007-03-18 в 3:29:42

PASSWORD() будет работать   если  поле  password  в таблице  users_table  расширить  до  50 байтов

f0b0s, 2007-03-20 в 10:53:38

хмм, не подумал)))

логично))))

пасибо)

Nikita, 2007-04-20 в 14:40:38

а разве ещё одну таблицу groups не надо делать что то о ней тут ничего не сказано?!

Yspex, 2007-04-27 в 19:49:04

Кто нить прикрутил мониторинг чтобы удобно было читать логи? кто и куда лазил?

lissyara, 2007-04-27 в 20:06:38

я админку рисовал на php - чисто логи смотреть.
дел-то на полсотни строк кода

maslivets, 2007-08-02 в 0:42:53

2lissyara
Дык мож коды выложыш на просмотр логов =)

banec, 2007-09-21 в 11:57:13

        AllowRetrieveRestart on
   AllowStoreRestart on
дают разрешение на докачку!!!

InventoR, 2007-10-14 в 15:30:04

Очень долго идет подключение к proftpd
в логе идет зависание на строчке
Oct 14 15:26:25 mod_sql/4.2.2[60601]: <<< sql_sess_init
потом где-то через сек.6 он просит ввести логин и пароль.
я так понимаю что его останавливает mod_sql
но хотелось бы чтобы это все работало побыстрее.

lissyara, 2007-10-14 в 15:39:55

UseReverseDNS off
IdentLookups off

в конфиг.
а вопросы - в форум :)

f0b0s, 2007-11-26 в 19:40:07

афигенно
1 линк 404...

Jafff, 2007-12-20 в 1:16:44

При конекте ничего не происходит а в логах:
Dec 20 01:28:00 mod_sql/4.2.2[27750]: defaulting to 'mysql' backend
Dec 20 01:28:00 mod_sql/4.2.2[27750]: backend module 'mod_sql_mysql/4.0.7'
Dec 20 01:28:00 mod_sql/4.2.2[27750]: backend api    'mod_sql_api_v1'
Dec 20 01:28:00 mod_sql/4.2.2[27750]: >>> sql_sess_init
Dec 20 01:28:00 mod_sql/4.2.2[27750]: entering  mysql cmd_defineconnection

Плиз хелп ми!!

Jafff, 2007-12-20 в 1:18:32

и еще....
27750 root          1 126    0 68492K 68108K RUN      2:32 98.39% proftpd

ProFTP, 2007-12-22 в 1:51:37

>афигенно
>1 линк 404...

http://www.bog.pp.ru/work/ProFTPD.html

Jafff, 2007-12-22 в 13:11:59

Обноаил порты все заработало.. прикрутил proFTPd Administrator даже почти русифицировал :)
но вот проблемка с буквой "я" например при закачке: Ты всиз огня.mp3 >> Ты всиз огнmp3  ктонить подскажите чего поправить

f0b0s, 2007-12-23 в 20:51:23

одно и тоже одно и тоже
уже в какой раз отвечаю на этот вопрос:
http://www.opennet.ru/openforum/vsluhforumID1/51187.html

Dmitri, 2007-12-23 в 21:07:44

кстати а с безопасностью то у proftpd+mysql как?
а то у меня что пароли и логины утекают иногда

greg_b, 2008-02-19 в 13:33:09

Dmitri, 2007-12-23 в 21:07:44
>кстати а с безопасностью то у proftpd+mysql как?
>а то у меня что пароли и логины утекают иногда

- это у тебя порт 3306 смотрит наружу а не в локалхост

dovg, 2008-03-05 в 10:24:24

Огромное спасибо за подробное разжевывание конфигурации!

artem, 2008-03-06 в 18:33:09

1)добавил квоты отсюда
http://www.opennet.ru/base/net/proftpd_mysql_quota.txt.html

2) в конфиге везде типа
SQLUserInfo             `users_table` `username` `password`
надо писать без кавычки
а там где '%u'  остается без изминений

artem, 2008-03-06 в 18:47:05

поле  `file_and_path` вместо tinytext
поставил varchar(100) а то не влазило

nikola93, 2008-04-07 в 16:34:52

MaxClientsPerHost               5
максимальное количество сесий с одного ip а то один перец у нас в сети открыл 30 сесий и кочал целый день

alter, 2008-07-27 в 21:11:10

Не работает. все сделал как в статье, результат:
/home/alter (#)>ftp 127.0.0.1
Connected to 127.0.0.1.
220 ProFTPD 1.3.1 Server (FTP SERVER) [127.0.0.1]
Name (127.0.0.1:alter): admin
331 Password required for admin
Password:123
421 Service not available, remote server has closed connection.
ftp: Login failed.


Вот такая шляпа.
PS: FreeBSD 7.0 ProFTPD 1.3.1 mysql 5.1

sery656, 2008-07-27 в 21:40:34

alter, 2008-07-27 в 21:11:10

Не работает. все сделал как в статье, результат:
/home/alter (#)>ftp 127.0.0.1
Connected to 127.0.0.1.
220 ProFTPD 1.3.1 Server (FTP SERVER) [127.0.0.1]
Name (127.0.0.1:alter): admin
331 Password required for admin
Password:123
421 Service not available, remote server has closed connection.
ftp: Login failed.


Вот такая шляпа.
PS: FreeBSD 7.0 ProFTPD 1.3.1 mysql 5.1

Проверь доступ на директорию куда фтп зверь коннектицо

grem, 2008-08-21 в 20:29:25

как нуб нубам.
т.к. пароли утекают и паги дефейсятся.. посвещается
задача: анония разрешить всем, а админу надо заливаться, но если ктото выдаст себя за админа будет неприятный дефейс делаем след:

DefaultRoot             ~       !admin

<Limit LOGIN>
Order                   allow, deny
Allow                   from 192.168.192.168
Deny                    from all
</Limit>

<Directory ~>
AllowOverwrite          on
<Limit Write>
AllowAll
</Limit>
<Limit READ>
AllowAll
</Limit>
</Directory>

<Anonymous /usr/home/ftp>
...
<Limit LOGIN>
AllowAll
</Limit>
</Anonymous>

maslivets, 2008-10-01 в 19:25:57

Собсна еси кому надо фтп только что бы работать с ВЕБ сайтами

SQLDefaultGID            80
SQLDefaultUID            80
SQLMinUserGID             80
SQLMinUserUID                   80

Все заливаемые фаилы будут созданы от владельца и группы www:www

psychos, 2008-10-16 в 23:41:00

статья замечательная, но не плохо было бы если б автор ее корректировал согласно комментариям пользователей, а то с паролями тож возился, а оказалось то поле поширше нужно сделать. не плохо было бы прикрутить к статье лимиты благо ссылок море в комментариях, + ко всему привязки юзер-ip\subnet, чтоб оперативно рулить доступом для тех же ананимов

psychos, 2008-10-16 в 23:43:51

да и еще забыл для каждого юзера раскидать флаги согласно которых будут создаваться фалйы(chmod:uid:gid), оч удобно будет при администрировании чего либо...

wildsun, 2008-11-15 в 23:17:38

здесь нигде этого не нашел.

для исправления проблемы с русскими кодировками в версии 1.3.2.r2 нужно (достаточно) вписать в proftpd.conf:

LangEngine on
UseEncoding KOI8-R CP1251

и усё :)

harmless, 2008-11-22 в 23:22:47

Люди напишите кто прикрутил прому к этому примеру(к таблицам баз)

XpycT, 2008-11-24 в 19:55:01



wildsun, 2008-11-15 в 23:17:38

здесь нигде этого не нашел.

для исправления проблемы с русскими кодировками в версии 1.3.2.r2 нужно (достаточно) вписать в proftpd.conf:

LangEngine on
UseEncoding KOI8-R CP1251

и усё :)


Поясни??? у меня ругается что он такого не знает
proftpd-1.3.2.r2_1
????????

maslivets, 2008-11-26 в 21:47:16

2 XpycT
у меня proftpd-1.3.2.r2_1
и отлично понимает.

ты с портов ставил?
если да, то отмечал поддержку языков?

#cd /usr/ports/proftpd/
#make config
...
[X] NLS              Use nls (builds mod_lang)
...

poison, 2008-12-05 в 11:37:12

Для тех у кого вылазит Fatal error: Maximum execution time of 30 seconds exceeded in
при нажатии(Все) в скриптике приложенном выше
добавляем в начало скрипта
<?
set_time_limit(60 * 5); // 5 минут может варьироваться в зависимости от производительности машины.
if (isset($_GET['go']))

poison, 2008-12-11 в 14:30:48

Собсно обнаружилось, что конфигурация предлагаемая здесь не только хранит учетки в базе MySQL, но к тому же еще и использует системные,
а именно: имея учетку в системе login1/pass1 и учетку login1/pass2 в базе MySQL войти на ftp можно по любой.

maslivets, 2008-12-18 в 5:04:13

2 poison
Причем в обоих случаях заходит в тот каталог, который прописан в БД.

xm, 2009-01-13 в 1:06:18

А если у меня уже есть БД в которой есть таблица с пользователями, недостающие столбцы я добавил, но пароли у этих пользователей зашифрованы в md5. Как мне сделать, чтобы proftpd понимал эти пароли.
Пробовал в конфиге добавить SQLAuthTypes md5, при запуске фтп ошибка:
"/usr/local/etc/rc.d/proftpd.sh start
Starting proftpd.
- Fatal: SQLAuthTypes: unknown auth handler on line 43 of '/usr/local/etc/proftpd.conf'"

ПодскАжите решение?

maslivets, 2009-01-15 в 20:26:22

2 xm
попробуй

SQLAuthTypes    OpenSSL

Собсна тебе сюда ProFTPD-mini-HOWTO-SQL

banec, 2009-02-20 в 0:49:26

обновил до
1.3.2 (stable)
 + Security fixes
Fixed encoding-dependent SQL injection vulnerability in mod_sql_mysql and mod_sql_postgres modules.

в и тоге вообще не работает авторизация!!
откатил на 1.3.2rc4, все стало на места.
Вопрос у всех так или я счастливчик ?


maslivets, 2009-02-20 в 21:12:46

2 banec
Вы таки счастливчик..  =)

mihan_k, 2009-09-01 в 13:24:45

Для того, чтобы потом в базе можно было видеть русские символы, нужно компилировать mysql с опцией --with-charset=cp1251, ну или koi8r, так как proftpd подключается к базе и использует кодировку по умолчанию, я таким образом решил проблему.

Corebug, 2009-09-29 в 17:08:18

Спасибо, lissyara, статья, как всегда, зачет!

harmless, 2009-10-14 в 14:48:52

Товарищи!
Прикрутил я к этой связке ProMA'у + этот скриптик просмотра лога!)
Скоро отпишусь в ветке форума!)

harmless, 2009-11-03 в 20:32:44

ProMA + quota + logs + charsets in logs
http://forum.lissyara.su/viewtopic.php?f=3&t=6684&start=25#p202413

Евгений, 2010-03-14 в 15:03:55

подскажите, не могу переписать файл на фтп, все подключается, видится и даже копируется.....но не переписывает ранее созданный файл...на папку стоят права chmod -R 0777....где рыть та? в профтпд илиже в самой фрее?

VitalVas, 2010-06-08 в 18:03:00

Читай коменты, там такое есть...
banec, 2007-09-21 в 11:57:13
       AllowRetrieveRestart on
  AllowStoreRestart on
дают разрешение на докачку!!!

Евгений, 2010-06-10 в 12:42:58

Дело было не в этом, а в CHMOD )))

Дмитрий, 2010-07-06 в 10:44:06

Фича, количество ip сетей в блоке

<Limit LOGIN>
 Order Allow,Deny
лимитировано
как бы этот лимит  расширить?

Jony, 2010-07-17 в 15:11:18

Еще бы сюда прикрутить Proftpd_admin со свеми наворотами и фичами...цены б не было!

Jony, 2010-07-17 в 15:11:22

Еще бы сюда прикрутить Proftpd_admin со свеми наворотами и фичами...цены б не было!

Дядя Сэм, 2011-02-25 в 23:01:25

обкуренная конфигурация если требуется настроить на живой каталог все

не описано как проверить права на каталоги существующие на веб хостинге

Den, 2011-08-28 в 17:39:07

Гранд Мерси!
всё отлично завелось... малость правда пришлось отрихтовать напильником ;)

darkrime, 2012-05-14 в 11:25:20

Спасибо, статья отличная!) Соглашусь с предыдущими ораторами - очень не помешает добавить про реальные Uid и Gid в таблице юзверей table_users, а то юзеры не получают права на запись..



 

  Этот информационный блок появился по той простой причине, что многие считают нормальным, брать чужую информацию не уведомляя автора (что не так страшно), и не оставляя линк на оригинал и автора — что более существенно. Я не против распространения информации — только за. Только условие простое — извольте подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой, незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
  Если соизволите поставить автора в известность — то вообще почёт вам и уважение.

© lissyara 2006-10-24 08:47 MSK

Время генерации страницы 0.0546 секунд
Из них PHP: 45%; SQL: 55%; Число SQL-запросов: 78 шт.
У Вас отключено GZIP-сжатие в браузере. Размер страницы 82824