ProFTPD+mysql и права доступа

Проблемы установки, настройки и работы Правильной Операционной Системы

Модератор: terminus

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
dstol
рядовой
Сообщения: 41
Зарегистрирован: 2007-10-10 7:58:43
Контактная информация:

ProFTPD+mysql и права доступа

Непрочитанное сообщение dstol » 2007-10-10 17:00:16

Поставил ProFTPD c mod_sql и mod_sql_mysql.
Вроде заработала авторизация через базу mysql. Установил владельца домашней /usr/home/tester директории ftp:ftp.
Все нормально файлы выгружаются без проблем. А загружаться никак не хотят. Когда ставлю права 777 все работает,
а с 755 никак.
В proftpd-extended.log пишет

Код: Выделить всё

www.mydomain.ru  UNKNOWN tester [10/Oct/2007:13:48:32 +0000] "MKD /1"  550 -
Помогите разобраться в чем тут дело. Зарание спасибо.

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2460 рублей (8 CPU, 8Gb RAM, 2x500Gb HDD, RAID 3ware 9750):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35092
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: ProFTPD+mysql и права доступа

Непрочитанное сообщение Alex Keda » 2007-10-10 19:18:13

непонял...
юзеры - где?
Убей их всех! Бог потом рассортирует...

Аватара пользователя
dstol
рядовой
Сообщения: 41
Зарегистрирован: 2007-10-10 7:58:43
Контактная информация:

Re: ProFTPD+mysql и права доступа

Непрочитанное сообщение dstol » 2007-10-11 8:09:06

Юзеры хранятся в базе данных

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35092
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: ProFTPD+mysql и права доступа

Непрочитанное сообщение Alex Keda » 2007-10-11 8:13:22

ну так давай дамп таблицы юзеров
Убей их всех! Бог потом рассортирует...

Аватара пользователя
dstol
рядовой
Сообщения: 41
Зарегистрирован: 2007-10-10 7:58:43
Контактная информация:

Re: ProFTPD+mysql и права доступа

Непрочитанное сообщение dstol » 2007-10-11 8:27:18

users_table

Код: Выделить всё

unic_id	username	password	groupname	uid	gid	homedir	shell	last_login	login_count	last_err_login	err_login_count

1	tester	111	ftp	14	50	/usr/home/tester	/sbin/nologin	1192024110	20	1191751898	2

Аватара пользователя
dstol
рядовой
Сообщения: 41
Зарегистрирован: 2007-10-10 7:58:43
Контактная информация:

Re: ProFTPD+mysql и права доступа

Непрочитанное сообщение dstol » 2007-10-11 8:36:44

Системный пользователь ftp

Код: Выделить всё

ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin

Аватара пользователя
schizoid
подполковник
Сообщения: 3228
Зарегистрирован: 2007-03-03 17:32:31
Откуда: Украина, Чернигов
Контактная информация:

Re: ProFTPD+mysql и права доступа

Непрочитанное сообщение schizoid » 2007-10-11 9:33:10

так а как это?
username password groupname uid gid
tester 111 ftp 14 50
и в тоже время
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
как это у тя 2 пользователя с одним и тем же набором uid/gid ?

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

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35092
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: ProFTPD+mysql и права доступа

Непрочитанное сообщение Alex Keda » 2007-10-11 9:37:29

виртуальные. всё вроде нормально...
у меня на ftp пашет же...
тока я юзера виртуального создавал с хомяков внутри своего хомяка...
Убей их всех! Бог потом рассортирует...

Аватара пользователя
dstol
рядовой
Сообщения: 41
Зарегистрирован: 2007-10-10 7:58:43
Контактная информация:

Re: ProFTPD+mysql и права доступа

Непрочитанное сообщение dstol » 2007-10-11 13:07:27

Пробовал заводить пользователя в хомяке, такая же ошибка.
По моему все таки проблемма с авторизацией группы.
Если ставлю 770 (запрещаю любой доступ для "других") права пользователь
вообще не авторизуется. Вот часть конфига ProFTPD

Код: Выделить всё

SQLAuthTypes	Plaintext
SQLAuthenticate	users

SQLConnectInfo	ftp@localhost:3306 ftp ftp
SQLUserInfo	`users_table` `username` `password` `uid` `gid` \
		`homedir` `shell`		
RequireValidShell	off
А это sql.log

Код: Выделить всё

Oct 11 08:31:43 mod_sql/4.2.2[3522]: query "SELECT `username`, `password`, `uid`, `gid`, `homedir`, `shell` FROM `users_table` WHERE (`uid` = 14) LIMIT 1"
Oct 11 08:31:43 mod_sql/4.2.2[3522]: entering 	mysql cmd_close
Oct 11 08:31:43 mod_sql/4.2.2[3522]: connection 'default' count is now 1
Oct 11 08:31:43 mod_sql/4.2.2[3522]: exiting 	mysql cmd_close
Oct 11 08:31:43 mod_sql/4.2.2[3522]: exiting 	mysql cmd_select
Oct 11 08:31:43 mod_sql/4.2.2[3522]: cache hit for user 'tester'
Oct 11 08:31:43 mod_sql/4.2.2[3522]: <<< cmd_uid2name
Oct 11 08:31:43 mod_sql/4.2.2[3522]: >>> cmd_uid2name
Oct 11 08:31:43 mod_sql/4.2.2[3522]: matched current user
Oct 11 08:31:43 mod_sql/4.2.2[3522]: <<< cmd_uid2name
Oct 11 08:36:43 mod_sql/4.2.2[3522]: entering 	mysql cmd_exit
Oct 11 08:36:43 mod_sql/4.2.2[3522]: entering 	mysql cmd_close
Oct 11 08:36:43 mod_sql/4.2.2[3522]: connection 'default' closed
Oct 11 08:36:43 mod_sql/4.2.2[3522]: connection 'default' count is now 0
Oct 11 08:36:43 mod_sql/4.2.2[3522]: exiting 	mysql cmd_close
Oct 11 08:36:43 mod_sql/4.2.2[3522]: exiting 	mysql cmd_exit
Что здесь не так?

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35092
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: ProFTPD+mysql и права доступа

Непрочитанное сообщение Alex Keda » 2007-10-11 16:40:08

это мой конфиг

Код: Выделить всё

#
# Конфиг 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            10

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

# passive ports
PassivePorts 50000 60000
# ident
UseReverseDNS off
IdentLookups off
# charset
CharsetLocal    koi8-r
CharsetRemote   cp1251


# Тип авторизации (на самом деле - в каком виде хрянятся
# пароли в БД - в данном случае - открытым текстом)
SQLAuthTypes            Plaintext
# Кого и как аутентифицируем - on - всех и вся :)
# Но - если поставить `on` то он ломится в БД за группами.
# мне группы никчему. Посему поставил `users`
SQLAuthenticate         users
# инфа для соединения с MySQL сервером:
# имя_базы_данных@хост_где_MySQL:порт имя_пользователя пароль
SQLConnectInfo          proftpd@localhost:3306 proftpd XXXXX
# в каком порядке вернёт поля запрос - первое поле, это
# имя таблицы, где лежат пользователи
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,RMD,DELE,STOR,MKD,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/lissyara/ftp>
        # пользователь от которого анонимоусы шарятся
        User            ftp
        # группа анонимоусов
        Group           ftp
        # альясы ананонимоусов (можно будет входить как ftp, а
        # не anonymous)
        UserAlias       anonymous ftp
        # максимально число анонимоусов
        MaxClients      20      "Sorry, max %m users - try again later"
        MaxClientsPerHost       3 "max 3 onnect from 1 IP"
#       <Limit WRITE>
#               DenyAll
#       </Limit>
#       <Directory /usr/home/lissyara/ftp>
                <Limit STOR CWD MKD GET>
                        AllowAll
                </Limit>
                <Limit RMD DELE RNTO>
                        DenyAll
                </Limit>
#       </Directory>
</Anonymous>
это кусок БД:

Код: Выделить всё

1  	lissyara  	XXXX  	lissyara  	1000  	1000  	/usr/home/lissyara  	/sbin/nologin  	1190120758  	1  	0  	0
4 	Raven2000 	XXXXX 	lissyara 	1000 	1000 	/usr/home/lissyara/ftp 	/bin/false 	1191310881 	87 	0 	0
3 	ftp 	 *пустое поле* 	ftp 	1000 	1000 	/usr/home/lissyara/ftp 	/bin/false 	1192108252 	6533 	1190121166 	8
Убей их всех! Бог потом рассортирует...

Аватара пользователя
dstol
рядовой
Сообщения: 41
Зарегистрирован: 2007-10-10 7:58:43
Контактная информация:

Re: ProFTPD+mysql и права доступа

Непрочитанное сообщение dstol » 2007-10-12 13:06:46

Прав был schizoid. uid и gid виртуального пользователя не должны совпадать
ни с одним реально существующими в системе. Если пользователь реальный то
uid и gid в базе должны быть такие же как и в системе. Я решил проблему
следующим образом создал директорию для виртуальных user'ов /usr/home/vftp.
Назначил ее владельцем пользователя от которого запускается proftpd.

Код: Выделить всё

chown ftp:ftp /usr/home/vftp
Затем занес виртуального в таблице user'ов
users_table

Код: Выделить всё

unic_id	username	password	groupname	uid	gid	homedir	shell	last_login	login_count	last_err_login	err_login_count

1	virtual	xxxx	virtual	2000	2000	/home/vftp/virtual	/sbin/nologin	1192123683	2	0	0
Создал хомяк для виртуального /home/vftp/virtual
И назначил владельцем виртуального

Код: Выделить всё

chown 2000:2000 /usr/vftp/virtual
Все заработало.
Такой вопрос для чего нужна аутентификация по пользователю и группе одновременно.
Т.е. с использованием users_table и groups_table. В конфиге что-то типа

Код: Выделить всё

...
SQLAuthenticate	users groups
...
SQLUserInfo	`users_table` `username` `password` `uid` `gid` \
		`homedir` `shell`

SQLGroupInfo	`groups_table` `groupname` `gid` `members` 
...

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35092
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: ProFTPD+mysql и права доступа

Непрочитанное сообщение Alex Keda » 2007-10-12 13:31:17

а я уж и не помню.
редко юзаю proftpd
Убей их всех! Бог потом рассортирует...

Аватара пользователя
dstol
рядовой
Сообщения: 41
Зарегистрирован: 2007-10-10 7:58:43
Контактная информация:

Re: ProFTPD+mysql и права доступа

Непрочитанное сообщение dstol » 2007-10-12 13:41:23

Пользуешься чем-то другим?

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35092
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: ProFTPD+mysql и права доступа

Непрочитанное сообщение Alex Keda » 2007-10-12 14:06:29

штатным.
мне хватает.
Убей их всех! Бог потом рассортирует...

Аватара пользователя
schizoid
подполковник
Сообщения: 3228
Зарегистрирован: 2007-03-03 17:32:31
Откуда: Украина, Чернигов
Контактная информация:

Re: ProFTPD+mysql и права доступа

Непрочитанное сообщение schizoid » 2007-10-12 14:11:51

скорее всего настроил один раз и все. работает и не лезет ;)

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

Аватара пользователя
dstol
рядовой
Сообщения: 41
Зарегистрирован: 2007-10-10 7:58:43
Контактная информация:

Re: ProFTPD+mysql и права доступа

Непрочитанное сообщение dstol » 2007-10-12 14:41:46

Все равно спасибо за информацию.
Да и вообще форум то что надо!!!

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35092
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: ProFTPD+mysql и права доступа

Непрочитанное сообщение Alex Keda » 2007-10-12 14:50:52

заходи ещё :)
Убей их всех! Бог потом рассортирует...

Аватара пользователя
dstol
рядовой
Сообщения: 41
Зарегистрирован: 2007-10-10 7:58:43
Контактная информация:

Re: ProFTPD+mysql и права доступа

Непрочитанное сообщение dstol » 2007-10-12 15:03:38

Обязательно!!! :wink:

Аватара пользователя
InventoR
ст. лейтенант
Сообщения: 1344
Зарегистрирован: 2006-12-10 19:43:25
Контактная информация:

Re: ProFTPD+mysql и права доступа

Непрочитанное сообщение InventoR » 2007-10-15 9:31:35

Доброго времени суток всем.
Перечитал всю эту тему, да у меня все заработало.
Тоесть создал пользовател uid gid ему дал по 1500
сделал ему хому в /usr/local/var/ftp/fedya
потом

Код: Выделить всё

 chown -R 1500:1500 /usr/local/var/ftp/fedya
все работает. пишет и читает без проблем.
Пробелема возникла здесь:
хотел сделать ftp доступ к файлам стастика тоесть там где смотрит apache
/usr/local/www
создаю пользователя stat даю ему пароль uin 80 gid 80
делаю его хомой /usr/local/www
дальше подлючаюсь и пробую запись в эту директорию и получаю ноль. не пишет.
делаю chown 80:80 /usr/local/www и все равно ноль. не пишет.
Может кто подскажет как правильно организовать в этом случае связку apache+proftpd
А также проблема в том что каждую минуту в эту директорию пишутся новые файлы от mrtg, netams, и еще кучи всего.
И они обрабатуються по cron получаеться что каждую минуту пишутся разные файлы и разными владельцами, а proftpd хочет только четко uin and gid
Последний раз редактировалось Alex Keda 2007-10-15 10:21:30, всего редактировалось 1 раз.
Причина: Товарищщи, юзайте кнопочку [code], цените чужое время...
ну вот и сказочке конец, кто слушал, тот молодец.

Аватара пользователя
dstol
рядовой
Сообщения: 41
Зарегистрирован: 2007-10-10 7:58:43
Контактная информация:

Re: ProFTPD+mysql и права доступа

Непрочитанное сообщение dstol » 2007-10-15 10:04:24

Все очень просто. В mod_sql есть директива SQLMinUserUID и SQLMinUserGID.
По умолчанию обе имеют значение 999. Т.е. достаточно либо прописать их в
ручную в конфиге, а лучше просто внести изменения в таблицу пользователей и
поставить соответствующие права на директорию.

Аватара пользователя
InventoR
ст. лейтенант
Сообщения: 1344
Зарегистрирован: 2006-12-10 19:43:25
Контактная информация:

Re: ProFTPD+mysql и права доступа

Непрочитанное сообщение InventoR » 2007-10-15 10:08:14

Да но как быть в случае если все таки в каталоге лежат файлы чьи права просто разнобой?
ну вот и сказочке конец, кто слушал, тот молодец.

Аватара пользователя
dstol
рядовой
Сообщения: 41
Зарегистрирован: 2007-10-10 7:58:43
Контактная информация:

Re: ProFTPD+mysql и права доступа

Непрочитанное сообщение dstol » 2007-10-18 10:35:29

Что то типа рутового доступа?

Аватара пользователя
InventoR
ст. лейтенант
Сообщения: 1344
Зарегистрирован: 2006-12-10 19:43:25
Контактная информация:

Re: ProFTPD+mysql и права доступа

Непрочитанное сообщение InventoR » 2007-10-18 11:17:37

да, потому что проблема в том что разные программы пишут со своими правами.
и получается что proftpd не может к ним получить доступа
ну вот и сказочке конец, кто слушал, тот молодец.

Аватара пользователя
dstol
рядовой
Сообщения: 41
Зарегистрирован: 2007-10-10 7:58:43
Контактная информация:

Re: ProFTPD+mysql и права доступа

Непрочитанное сообщение dstol » 2007-10-19 8:30:48

С чтением проблем никаких. Так как по умолчанию большинство директорий имеют права 755.
С записью уже сложнее. Нужно либо выставлять права 777 либо можно попробовать использовать
аутентификацию по группе, но с ней я пока не разбирался. Сейчас занимаюсь mod_quotatab_sql и mod_wrap2_sql.
Но планирую и с ней разобраться. Если что-нибудь получиться обязательно напишу.

Аватара пользователя
dstol
рядовой
Сообщения: 41
Зарегистрирован: 2007-10-10 7:58:43
Контактная информация:

Re: ProFTPD+mysql и права доступа

Непрочитанное сообщение dstol » 2007-10-29 14:30:18

Сделать рутовый доступ к серверу по ftp оказалось вообще просто.
Нужно в конфиг включить 2 директивы

Код: Выделить всё

RootLogin on
DefaultRoot ~ !root
Первая разрешает подключаться к серверу пользователю root. В качестве пароля нужно
использовать системный. А вторая не ограничивает пользователя root своей домашней
директорией. Никакие записи в базу данных добавлять не надо. У меня все заработало.
Правда разработчики proftpd не рекомендуют использовать рутовый доступ.
P.S. Ладно всё пошел изучать <VirtualHost> и mod_tls