Страница 1 из 1
pure-ftpd и разграничение по IP
Добавлено: 2007-09-21 14:24:40
Zedik
хочу сделать разграничение обращения на фтп сервер по IP:
ftp://10.0.0.9 -> /var/ftp/software
ftp://194.80.50.40 -> /var/ftp/shareware
===
где то читал что нужно добавить линки /etc/~10.0.0.9 и /etc/~194.80.50.40 которые вели бы соответственно в нужные каталоги, но что то не выходит.
кто может подсказать?
FreeBSD 6.2 + pure-ftpd-1.0.21_1
Re: pure-ftpd и разграничение по IP
Добавлено: 2007-09-21 19:21:29
Alex Keda
proftpd может
Re: pure-ftpd и разграничение по IP
Добавлено: 2007-09-21 20:47:34
Zedik
lissyara писал(а):proftpd может
да и сабж реален...сейчас под линуксом крутится (до меня был поставлен)...да только вот сам никак не могу дальше разрулить...
сейчас
ftp://194.80.50.40 -> /var/ftp/shareware правильно отрабатывает, а вот
ftp://10.0.0.9 -> /var/ftp/software логиниится, но выдает пустоту...
пс. а чем proftpd лучше? он более гибкий в настройке? позволяет ли proftpd выставлять ограничения на размер поддиректорий?
Re: pure-ftpd и разграничение по IP
Добавлено: 2007-09-26 19:59:31
kolesya
Код: Выделить всё
root@# cat pureftpd-mysql.conf.sample | grep IP
# Optional : MySQL server name or IP. Don't define this for unix sockets.
# \I is replaced by the IP address the user connected to.
# \R is replaced by the IP address the user connected from.
# \D is replaced by the remote IP address, as a long decimal number.
root@#
На мысли наводит ?
Re: pure-ftpd и разграничение по IP
Добавлено: 2007-09-26 20:04:56
kolesya
Конфиги покажи ... (без конкретных адресов в конфиге(ах) )
pureftpd на системных учетках или ( mysql or postgres or <че_нить_другое> ) ?
Re: pure-ftpd и разграничение по IP
Добавлено: 2007-09-27 8:18:53
Zedik
на мысль то наводит.....но пока только на мысль
учетки хранятся в мускле.
pure-ftpd.conf
Код: Выделить всё
ChrootEveryone yes
# TrustedGID 100
BrokenClientsCompatibility no
MaxClientsNumber 15
Daemonize yes
MaxClientsPerIP 5
VerboseLog no
DisplayDotFiles yes
AnonymousOnly no
NoAnonymous no
SyslogFacility ftp
DontResolve yes
MaxIdleTime 4
MySQLConfigFile /usr/local/etc/pureftpd-mysql.conf
LimitRecursion 2000 8
AnonymousCanCreateDirs no
MaxLoad 4
PassivePortRange 60000 65000
AntiWarez yes
Umask 133:022
MinUID 1000
AllowUserFXP no
AllowAnonymousFXP no
ProhibitDotFilesWrite no
ProhibitDotFilesRead no
AutoRename no
AnonymousCantUpload no
AltLog stats:/var/log/pureftpd.log
AltLog w3c:/var/log/pureftpd.log
MaxDiskUsage 99
CustomerProof yes
PerUserLimits 2:5
IPV4Only yes
FileSystemCharset koi8-r
ClientCharset cp1251
pureftpd-mysql.conf
Код: Выделить всё
MYSQLSocket /tmp/mysql.sock
MYSQLUser ftproot
MYSQLPassword 11111
MYSQLDatabase baseftp
MYSQLCrypt md5
MYSQLGetPW SELECT Password FROM users WHERE User="\L" AND Status="1" AND (Ipaddress = "*" OR Ipaddress LIKE "\R")
MYSQLGetUID SELECT Uid FROM users WHERE User="\L" AND Status="1" AND (Ipaddress = "*" OR Ipaddress LIKE "\R")
MYSQLGetGID SELECT Gid FROM users WHERE User="\L" AND Status="1" AND (Ipaddress = "*" OR Ipaddress LIKE "\R")
MYSQLGetDir SELECT Dir FROM users WHERE User="\L" AND Status="1" AND IPServer="\I" AND (Ipaddress = "*" OR Ipaddress LIKE "\R")
MySQLGetQTAFS SELECT QuotaFiles FROM users WHERE User="\L" AND Status="1" AND (Ipaddress = "*" OR Ipaddress LIKE "\R")
MySQLGetQTASZ SELECT QuotaSize FROM users WHERE User="\L" AND Status="1" AND (Ipaddress = "*" OR Ipaddress LIKE "\R")
MySQLGetRatioUL SELECT ULRatio FROM users WHERE User="\L" AND Status="1" AND (Ipaddress = "*" OR Ipaddress LIKE "\R")
MySQLGetRatioDL SELECT DLRatio FROM users WHERE User="\L" AND Status="1" AND (Ipaddress = "*" OR Ipaddress LIKE "\R")
MySQLGetBandwidthUL SELECT ULBandwidth FROM users WHERE User="\L" AND Status="1" AND (Ipaddress = "*" OR Ipaddress LIKE "\R")
MySQLGetBandwidthDL SELECT DLBandwidth FROM users WHERE User="\L" AND Status="1" AND (Ipaddress = "*" OR Ipaddress LIKE "\R")
в данном случае ограничивается подключение на тот или иной IP. А мне хочется чтобы доступ был и по внутреннему и по внешнему IP для одного и того же юзера. но в зависимости на какой адрес он обращается, он отправляется в соответствующий каталог. а сейчас у меня по внешнему IP отправляется с каталог с данными,а при обращении по внутреннему IP он отправляется в какой то пустой каталог...
Re: pure-ftpd и разграничение по IP
Добавлено: 2007-09-27 11:47:39
kolesya
не помню точно какая опция
, но в конфиге пурфтп можно включить логирование SQL-запросов и ответов, которые отправляет и получает пурфтп.
Re: pure-ftpd и разграничение по IP
Добавлено: 2007-09-27 19:53:00
kolesya
MYSQLGetDir SELECT Dir FROM users WHERE User="\L" AND Status="1" AND IPServer="\I" AND (Ipaddress = "*" OR Ipaddress LIKE "\R")
покажи под это дело записи по узеру скажем: EXAMPLER
считаем, что пользователь активный и имеет доступ "спереди" и "сзади"
типа результат
Re: pure-ftpd и разграничение по IP
Добавлено: 2007-09-28 7:32:54
Zedik
Код: Выделить всё
mysql> select * from users where user='pain';
+-------+----------------------------------+------+------+-------------------------+------------+-----------+-------------+-------------+-----------+---------+--------+---------+---------+----------+
| User | Password | Uid | Gid | Dir | QuotaFiles | QuotaSize | ULBandwidth | DLBandwidth | Ipaddress | Comment | Status | ULRatio | DLRatio | IPServer |
+-------+----------------------------------+------+------+-------------------------+------------+-----------+-------------+-------------+-----------+---------+--------+---------+---------+----------+
| pain | 111 | 1005 | 1005 | /var/ftp/data/pain | 0 | 0 | 0 | 0 | * | | 1 | 0 | 0 | 10.0.0.9 |
+-------+----------------------------------+------+------+-------------------------+------------+-----------+-------------+-------------+-----------+---------+--------+---------+---------+----------+
1 row in set (0.00 sec)
это я уже добавил ему IPServer, но в работе ничего не поменялось
Re: pure-ftpd и разграничение по IP
Добавлено: 2007-09-28 12:28:33
kolesya
если зайти так
ftp://pain:111@10.0.0.9/ то ты будеш юзером pain и хомяком будет /var/ftp/software
а если
ftp://pain:111@194.80.50.40/ то ты будеш анонимом,
см в конфиге
должен возвращать две записи (для твоей схемы)
где поле IPServer для юзера pain должны быть 194.80.50.40 и 10.0.0.9