Страница 1 из 6
Вопрос по SQL аутентификации proftpd
Добавлено: 2008-01-11 18:46:06
dallone
Здравствуйте, на днях столкнулся с проблемой: нужно перенастроить proftpd на sql аутентификацию и нет админа (я начинающий программист, знания Unix стремятся к нулю

).
Прочитал статью с этого сайта
http://www.lissyara.su/?id=1144 и
http://www.tutorial.ru/index.php/tutorial/11/
Как ни странно proftpd после изменения конфига даже заработал, но вот столкнулся с такой вещью: Если вносим в SQL базу данных пользователя который в FreeBSD реально существует(даже с другим паролем и uid gid) - все работает. Если же вносим пользователя которого во FreeBSD нет, не логинится (530 Login incorrect)
Вопрос: это нормальное поведение или где-то допущена ошибка в конфиге?
Конфиг:
Код: Выделить всё
ServerName "My ftp"
ServerType standalone
DefaultServer on
DeferWelcome off
Port 21
Umask 002
TimeoutLogin 120
TimeoutIdle 600
TimeoutNoTransfer 900
TimeoutStalled 3600
User ftp
Group ftp
MaxInstances 30
MaxClientsPerHost 5
AllowRetrieveRestart on
AllowStoreRestart on
AllowOverwrite on
AllowOverride off
AuthPAM off
RootLogin off
IdentLookups off
UseReverseDNS off
DenyFilter \*.*/
TimesGMT off
DefaultRoot ~
RLimitCPU 600 600
RLimitMemory 64M 64M
RLimitOpenFiles 1024 1024
LogFormat default "%h %l %u %t \"%r\" %s %b"
LogFormat auth "%v [%P] %h %t \"%r\" %s"
LogFormat write "%h %l %u %t \"%r\" %s %b"
ExtendedLog /home/dallone/proftpd_write.log WRITE,READ write
ExtendedLog /home/dallone/proftpd_auth.log AUTH auth
<Global>
SQLAuthTypes Plaintext
SQLAuthenticate users
SQLConnectInfo *****@localhost:3306 ****** ******
SQLUserInfo users username password uid gid homedir shell
#SQLGroupInfo groups groupname gid members
SQLLogFile /home/dallone/proftpd_sql.log ALL default
RequireValidShell off
</Global>
Re: Вопрос по SQL аутентификации proftpd
Добавлено: 2008-01-12 1:37:45
Alex Keda
портянку не смотрел, однако - для НЕреального пользователя, в БД надо задавать вполне реальные уиды... которые есть в системе.
по крайней мере я на этом споткнулся в похожей ситуации.
заюзал собственный зачрутив всех.
а работали от меня

Re: Вопрос по SQL аутентификации proftpd
Добавлено: 2008-01-12 8:05:26
paranoidchaos
Лис правильно отметил всё решают юиды и гиды реального пользователя,
создавая нового фтп пользователя, который в тоже время является не системным пользователя надо ему придавать юид и гид реального пользователя
Re: Вопрос по SQL аутентификации proftpd
Добавлено: 2008-01-12 15:50:51
100kg
если пароли в мд5 хэшэ, то попробуй поменять его на plain, тоесть
Код: Выделить всё
update таблица set password='password' where user='user';
после этого залогинся заного
Re: Вопрос по SQL аутентификации proftpd
Добавлено: 2008-01-12 17:02:36
paranoidchaos
я использую mysql шифрование паролей
и где-то читал что поле password в таблице надо увеличить до 80 символов по дефлту 50
Код: Выделить всё
CREATE TABLE IF NOT EXISTS `users` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(20) NOT NULL,
`password` varchar(80) 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,
PRIMARY KEY (`id`)
) ;
Re: Вопрос по SQL аутентификации proftpd
Добавлено: 2008-01-12 17:40:31
100kg
просто в конфиге раздел Global у тебя SQLAuthTypes Plaintext
и где-то читал что поле password в таблице надо увеличить до 80 символов по дефлту 50
ну насколько я знаю мд5 хэш имеет 32 символа
Re: Вопрос по SQL аутентификации proftpd
Добавлено: 2008-01-13 13:48:07
paranoidchaos
при
не мд5 хеш там а хеш функции PASSWORD() sha1
Re: Вопрос по SQL аутентификации proftpd
Добавлено: 2008-01-13 22:33:40
100kg
и сколько символов имеет этот хэш? разве больше 32... а если больше но меньше 50 то тогда не нужно увеличивать поле password
Re: Вопрос по SQL аутентификации proftpd
Добавлено: 2008-01-14 7:54:58
paranoidchaos
40 символов реально говорюже не срабатывало почему-то
решением стало увеличение символов
Re: Вопрос по SQL аутентификации proftpd
Добавлено: 2008-01-14 11:01:10
dallone
для НЕреального пользователя, в БД надо задавать вполне реальные уиды... которые есть в системе
Спасибо большое сейчас попробую

Re: Вопрос по SQL аутентификации proftpd
Добавлено: 2008-01-14 16:43:30
dallone
Эм... Понимаю, конечно, что телепаты в отпуске, но может кто нибудь сталкивался с такой проблемой:
После того как в таблицы реальный uid/gid поставил все начало работать НО

Не до конца:
Если ставить homedir в папке /usr/www/wwwroot то (где мне доступ и нужно открыть) пускает только тех пользователей который существуют в Unix.
Если homedir ставить в остальных папках то все работает любое имя пользователя подходит...
Re: Вопрос по SQL аутентификации proftpd
Добавлено: 2008-01-14 23:05:12
Alex Keda
права одинаковые?
Re: Вопрос по SQL аутентификации proftpd
Добавлено: 2008-01-15 14:50:24
Proftp
если я правельно понял, то не нужно пускать польователей которые есть в учетке самой системе?
Re: Вопрос по SQL аутентификации proftpd
Добавлено: 2009-01-13 9:40:17
xm
А если у меня уже есть БД в которой есть таблица с пользователями, но пароли у этих пользователей зашифрованы в 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'"
ПодскАжите решение?
Делал по
http://www.lissyara.su/?id=1144
Re: Вопрос по SQL аутентификации proftpd
Добавлено: 2009-02-06 13:13:15
borisen
Такой вопросец, в какой кодировке скриптик для просмотра статистики (ftp.php) прикрепленный к статье?
Re: Вопрос по SQL аутентификации proftpd
Добавлено: 2009-02-06 13:17:48
borisen
Разобрался. KOI8-R

Re: Вопрос по SQL аутентификации proftpd
Добавлено: 2009-05-31 9:57:46
xopc
Ребята подскажите как привязать логин к ip или подсети? Тоесть юзер заходит логинится, в базе проверяется логин пароль и ип с которого юзер ломится.

Re: Вопрос по SQL аутентификации proftpd
Добавлено: 2009-07-08 21:39:46
Nks
Свойство "AllowUser username" может помочь при настройке доступа определенных пользователей к определенным папкам (например, разделение прав на двух и более пользователей).
Код: Выделить всё
<Directory /usr/home/somewhere/ftp/*>
<Limit WRITE DELE MKD STOR>
#Пользователь username будет иметь права на запись в каталог,
#тогда как другие пользователи заchrootеные на данный каталог смогут только качать и
#просматривать каталог.
AllowUser username
</Limit>
</Directory>
Связывается свойство почему то только с системными учетками, но логин и chroot остается за mysql. Как связать весь конфиг строго с mysql пока не разобрался...
Re: Вопрос по SQL аутентификации proftpd
Добавлено: 2009-07-08 21:41:53
Nks
xopc писал(а):Ребята подскажите как привязать логин к ip или подсети? Тоесть юзер заходит логинится, в базе проверяется логин пароль и ип с которого юзер ломится.

Можно разрешить логин с определенных IP или подсети:
Код: Выделить всё
<Directory ~>
<Limit ALL>
Order Allow,Deny
Allow 195.200.31.220
Allow 212.32.17.0/26
Deny ALL
</Limit>
</Directory>
Re: Вопрос по SQL аутентификации proftpd
Добавлено: 2009-07-17 8:29:34
sEr...
Я вот что не понял
Создал в БД пользователей и себя туда вписал. С моей учёткой всё нормально работает как положено
uid, gid поставил свои.
Для других пользователей
uid gid поставил
21:21 (
ftp:ftp) пробовал настроить доступ на запись для отдельных папок у в ихних хомяках не трогая конфиг при этом. Получилось, когда установил права на папку 777, но записаный фаил принадлежить юзеру, которого нет в системе с
uid=65533, а группа как положено написана
ftp
Когда пишу из под своей учетки то всё нормально пишет с моими правами и можно настрить нормально доступ к папкам, и не приходится ставить 777 что не приятно.
Анонимус, которого нет ни в БД ни в системных юзерах, а есть только в конфиге, пишет файлы, как узер ftp в группе ftp, как нужно.
Внимание вопрос!
Кто какие
uid:gid посоветует юзать для юзверей фтп, кторрые в БД и чо делать чтоб их воспринимало, как пользователей c этими
uid:gid? Дописать их в конфиг? Каким образом?

Re: Вопрос по SQL аутентификации proftpd
Добавлено: 2009-07-17 8:41:37
Nks
sEr... писал(а):Я вот что не понял
Создал в БД пользователей и себя туда вписал. С моей учёткой всё нормально работает как положено
uid, gid поставил свои.
Для других пользователей
uid gid поставил
21:21 (
ftp:ftp) пробовал настроить доступ на запись для отдельных папок у в ихних хомяках не трогая конфиг при этом. Получилось, когда установил права на папку 777, но записаный фаил принадлежить юзеру, которого нет в системе с
uid=65533, а группа как положено написана
ftp
Когда пишу из под своей учетки то всё нормально пишет с моими правами и можно настрить нормально доступ к папкам, и не приходится ставить 777 что не приятно.
Анонимус, которого нет ни в БД ни в системных юзерах, а есть только в конфиге, пишет файлы, как узер ftp в группе ftp, как нужно.
Внимание вопрос!
Кто какие
uid:gid посоветует юзать для юзверей фтп, кторрые в БД и чо делать чтоб их воспринимало, как пользователей c этими
uid:gid? Дописать их в конфиг? Каким образом?

Если мне память не изменяет 21 - это всего лишь порт. Создай пользователя отдельного и назови его ftp. В sql пропиши соответствующий gid и uid и работай с ним и будет тебе счастье.
Re: Вопрос по SQL аутентификации proftpd
Добавлено: 2009-07-17 11:20:43
sEr...
Память тебе не изменяет, 21 это порт.
Пользователь ftp у меня создан и его uid = 21 и группа тоже есть ftp gid = 21
А вот щастья как-то нету...

Re: Вопрос по SQL аутентификации proftpd
Добавлено: 2009-07-17 15:13:38
Nks
Конфиг proftpd можно посмотреть?
Re: Вопрос по SQL аутентификации proftpd
Добавлено: 2009-07-17 16:11:56
sEr...
Канешна!!!
Код: Выделить всё
#
# For more informations about Proftpd configuration
# look at : http://www.proftpd.org/
#
# This is a basic ProFTPD configuration file (rename it to
# 'proftpd.conf' for actual use. It establishes a single server
# and a single anonymous login. It assumes that you have a user/group
# "nobody" and "ftp" for normal operation and anon.
ServerName "ProFTPD sErvEr01"
ServerType standalone
DefaultServer on
ScoreboardFile /var/run/proftpd/proftpd.scoreboard
# Port 21 is the standard FTP port.
Port 21
# Use IPv6 support by default.
#UseIPv6 on
# Umask 022 is a good standard umask to prevent new dirs and files
# from being group and world writable.
Umask 022
# To prevent DoS attacks, set the maximum number of child processes
# to 30. If you need to allow more than 30 concurrent connections
# at once, simply increase this value. Note that this ONLY works
# in standalone mode, in inetd mode you should use an inetd server
# that allows you to limit maximum number of processes per service
# (such as xinetd).
MaxInstances 30
CommandBufferSize 512
# Set the user and group under which the server will run.
User ftp
Group ftp
# Тип авторизации (на самом деле - в каком виде хрянятся
# пароли в БД - в данном случае - открытым текстом)
#SQLAuthTypes MD5
SQLAuthTypes Plaintext
# Кого и как аутентифицируем - on - всех и вся :)
# Но - если поставить `on` то он ломится в БД за группами.
# мне группы никчему. Посему поставил `users`
SQLAuthenticate users
# инфа для соединения с MySQL сервером:
# имя_базы_данных@хост_где_MySQL:порт имя_пользователя пароль
SQLConnectInfo proftp@localhost:3306 proftp parol
# в каком порядке вернёт поля запрос - первое поле, это
# имя таблицы, где лежат пользователи
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 ~
# Дают возможность докачки
AllowRetrieveRestart on
AllowStoreRestart on
#Перекодировка символов
LangEngine on
UseEncoding UTF-8 CP1251
# Директории
<Directory ~>
AllowOverwrite on
<Limit WRITE>
AllowAll
</Limit>
<Limit READ>
AllowAll
</Limit>
</Directory>
<Anonymous /home/ftp/anonymous>
# пользователь от которого анонимоусы шарятся
User ftp
# группа анонимоусов
Group ftp
# альясы ананонимоусов (можно будет входить как ftp, а
# не anonymous)
UserAlias anonymous ftp
#Разрешить пустой пароль
AnonRequirePassword off
# максимально число анонимоусов
MaxClients 16 "Sorry, max %m users - try again later"
<Directory /home/ftp/anonymous/NET>
AllowOverwrite on
<Limit WRITE>
Allow 192.168.222.0/24
Allow 192.168.1.10/24
DenyAll
</Limit>
<Limit READ>
AllowAll
</Limit>
</Directory>
<Limit WRITE>
DenyAll
</Limit>
</Anonymous>
# A basic anonymous configuration, no upload directories. If you do not
# want anonymous users, simply delete this entire <Anonymous> section.
#########################################################################
# #
# Uncomment lines with only one # to allow basic anonymous access #
# #
#########################################################################
#<Anonymous ~ftp>
# User ftp
# Group ftp
### We want clients to be able to login with "anonymous" as well as "ftp"
# UserAlias anonymous ftp
### Limit the maximum number of anonymous logins
# MaxClients 10
### We want 'welcome.msg' displayed at login, and '.message' displayed
### in each newly chdired directory.
# DisplayLogin welcome.msg
# DisplayFirstChdir .message
### Limit WRITE everywhere in the anonymous chroot
# <Limit WRITE>
# DenyAll
# </Limit>
#</Anonymous>
Не знаю, но по моему не в конфиге собака зарыта.
Re: Вопрос по SQL аутентификации proftpd
Добавлено: 2009-08-08 20:46:16
sEr...
Меня не было, я вернулся, проблема осталась, а никто не ответил. Что ещё подскажите?
Я продолжу это коврять
