Страница 1 из 1
Proftpd настройка прав
Добавлено: 2009-05-25 17:00:25
Evgen Vasko
Добрый день.
Необходимо настроить Proftpd специальным образом.
Есть организация которая выкладывает файлы для клиентов на FTP в один каталог. Как можно настроить доступ к этому каталогу для клиентов, чтоб они могли выкачать файл только по ссылке (пример --ftp://xxx.yy.ua/test.txt) и не имели права видеть остальные файлы в каталоге. Пользователи в Proftpd записаны в файл (не системные). 
Спасибо !
Re: Proftpd настройка прав
Добавлено: 2009-05-25 17:17:01
zg
запрети доступ на чтение для папки с файлами
Код: Выделить всё
%chmod +r test
%ls test/
1.sh ff ubstr
%chmod -r test
%ls test/
ls: : Permission denied
%cat test/1.sh
#!/bin/sh
SDIR=/usr/home/zg/test/ff
DDIR=/some/dir
ls -1 ff | awk '{print substr($1,1,4), substr($1,5,2), substr($1,7,2), $1}' | while read YEAR MONTH DAY FILE
do
DIR=$DDIR/$YEAR/$MONTH/$DAY
echo "[-d \"$DIR\"] || mkdir -p \"$DIR\""
echo "mv $SDIR/$FILE $DIR/$FILE"
done
%
Re: Proftpd настройка прав
Добавлено: 2009-05-25 17:37:04
Evgen Vasko
Пример хороший. Тоесть клиент вбив --
ftp://xxx.yy.ua/test.txt в брайзере и введая пароль скачает файл test.txt,
зайдя на --
ftp://xxx.yy.ua/ не увидит не одного файла? А что должно быть прописано в proftpd.conf ?

Re: Proftpd настройка прав
Добавлено: 2009-05-26 8:47:13
AzureZ
А если так попробовать. В proftpd.conf
Код: Выделить всё
<Directory /путь до папки>
<Limit LIST>
DenyAll
</Limit>
</Directory>
Re: Proftpd настройка прав
Добавлено: 2009-05-26 8:59:52
zg
ему система не даст списка фалойв, но это крайне нежелательный вариант, лучше попробуй, как
AzureZ советует.
Re: Proftpd настройка прав
Добавлено: 2010-05-01 12:51:49
Plohish
господа, подскажите плиз
имеем Proftpd на роутере
из домашней сети файлы из FTP качаются нормально, а из внешней пишет Permission denied!
на маленьких файлах, до 300 килобайт, не заметно, успевает скачать, если больше, вот такая лажа.
сначала не мог понять почему не качает большие файлы, потом попробовал тотал командер и вижу Permission denied
прямых указаний сетей в конфигах Proftpd нету...
Re: Proftpd настройка прав
Добавлено: 2010-05-01 12:56:42
baton4eg
конфиг proftpd.conf в студию
и можно посмотреть /var/log/proftp-transfer.log и error.log на предмет ошибоки и что происходит
в sockstat можно посмотреть 21 порт
Re: Proftpd настройка прав
Добавлено: 2010-05-01 13:00:05
Plohish
конфиг
дело в том, что заходит на FTP из внешки нормально, и файлы видит, и даже закачивать можно, а скачать обратно можно только файлы которые сам закачивал, другие нет... сказал бы права на файлы виноваты, но из домашней сети те же файлы скачиваются нормально.
Код: Выделить всё
#
# 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.
# Конфиг proftpd - 2010-21-01
# имя сервера - показывается коннектящимся клиентам
ServerName "Main FTP servant :)"
# тип сервера (даже не тип самого сервера, а тип его запуска,
# standalone/inetd - сам или через inetd)
ServerType standalone
# смысл следующей директивы такой: если клиент коннектится не на имя
# а на IP или на виртуальный хост, не описанный в конфиге, то при
# установке в `off` он получит отлуп, если же установлено `on` то
# он будет обслужен `сервером по-умолчанию`
DefaultServer on
# e-mail администратора (по идее для каждого ВиртуалХоста его можно
# поставить разный - но я делаю один сервер без извращений с
# виртуальными хостами)
ServerAdmin plohish@server.net
# файло где хранится инфа о сессиях
#ScoreboardFile /var/run/proftpd.scoreboard
# порт на котором работает сервер
Port 21
#PassivePorts 49152 65534
# Маска с которой создаются новые файлы (не совсем маска - маска получается
# из этого значения, путём его вычитания из 777 - т.е. в даном случае получится
# маска 755)
Umask 022
# Максимальное число `детей` (работает только в standalohe режиме)
# необходимо для защиты от атак типа `отказ в обслуживании` да и
# от перегрузки сервера поможет :)
MaxInstances 30
# Юзер от которого работает сервер
User ftp
# группа, под которой работает сервер
Group ftp
#Перекодировка на лету
LangEngine on
UseEncoding KOI8-R CP1251
# Тип авторизации (на самом деле - в каком виде хрянятся
# пароли в БД - в данном случае - открытым текстом)
SQLAuthTypes Plaintext
# Кого и как аутентифицируем - on - всех и вся :)
# Но - если поставить `on` то он ломится в БД за группами.
# мне группы никчему. Посему поставил `users`
SQLAuthenticate users
# инфа для соединения с MySQL сервером:
# имя_базы_данных@хост_где_MySQL:порт имя_пользователя пароль
SQLConnectInfo proftpd@localhost:3306 name pass
# в каком порядке вернёт поля запрос - первое поле, это
# имя таблицы, где лежат пользователи
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 ~ !pppppp
#AllowOverwrite on
#AllowRetrieveRestart on
#AllowStoreRestart on
#AllowForeignAddress on
# Директории
<Directory ~>
AllowOverwrite on
AllowRetrieveRestart on
AllowStoreRestart on
<Limit Write>
AllowAll
</Limit>
<Limit READ>
AllowAll
</Limit>
</Directory>
<Anonymous /data/ftp/pub>
# пользователь от которого анонимоусы шарятся
User ftp
# группа анонимоусов
Group ftp
# альясы ананонимоусов (можно будет входить как ftp, а
# не anonymous)
UserAlias anonymous ftp
# максимально число анонимоусов
MaxClients 10 "Sorry, max %m users - try again later"
<Limit WRITE>
AllowUser ppppppp
DenyAll
</Limit>
</Anonymous>
Re: Proftpd настройка прав
Добавлено: 2010-05-02 9:04:00
Plohish
извините, ошибся, даже те файлы которые сам закачивал, скачать нельзя... (из внешней сети) начинается скачка, и тут же пермишн дениед!
из домашней сети, под тем же именем и паролем, запросто всё работает... чудеса...
Код: Выделить всё
May 2 09:57:52 plohish proftpd[6762]: plohish.com (192.168.100.240[192.168.100.240]) - USER user: Login successful.
May 2 09:59:06 plohish proftpd[6762]: plohish.com (192.168.100.240[192.168.100.240]) - notice: user user: aborting transfer: Permission denied
May 2 09:59:10 plohish proftpd[6762]: plohish.com (192.168.100.240[192.168.100.240]) - notice: user user: aborting transfer: Permission denied
May 2 09:59:23 plohish proftpd[6762]: plohish.com (192.168.100.240[192.168.100.240]) - notice: user user: aborting transfer: Permission denied
May 2 09:59:32 plohish proftpd[6762]: plohish.com (192.168.100.240[192.168.100.240]) - notice: user user: aborting transfer: Permission denied
May 2 10:01:11 plohish proftpd[6762]: plohish.com (192.168.100.240[192.168.100.240]) - FTP session closed.
Re: Proftpd настройка прав
Добавлено: 2010-05-02 20:21:25
Plohish
так, из за чего происходит косяк понял, вот правила ipfw
Код: Выделить всё
внутрення сетевуха fxp0
внешня сетевуха fxp1
${FwCMD} -f flush
# Правила для loopback
${FwCMD} add allow ip from any to any via lo0
${FwCMD} add deny ip from any to 127.0.0.0/8
${FwCMD} add deny ip from 127.0.0.0/8 to any
# Разрешаем обмен пакетами TCP через локальный интерфейс
${FwCMD} add allow tcp from any to any out via fxp0
# Правила nat-a, проброс портов
${FwCMD} nat 1 config log if fxp1 reset same_ports redirect_port tcp МАШИНКА_ВНУТРИ:порт1 порт1 redirect_port udp МАШИНКА_ВНУТРИ:порт2 порт2
${FwCMD} add nat 1 ip from any to any via fxp1
# Правила nat-а для локальный сети (правила шлюза)
${FwCMD} nat 2 config ip ВНЕШНИЙ_IP log
${FwCMD} add nat 2 ip from ВНУТРЕННЯЯ_СЕТЬ to ВНЕШНЯЯ_СЕТЬ
если убрать
nat1, proftpd начинает нормально работать из внешней сети, но тогда весь nat пропадает...
подскажите плиз что нужно сделать?
Re: Proftpd настройка прав
Добавлено: 2010-05-03 9:38:46
Plohish
вяло как то нынче на форуме...
сам спросил - сам ответил...
добавил до nat
Код: Выделить всё
${FwCMD} add allow tcp from any to me 21,50000-50100
${FwCMD} add allow tcp from me to any keep-state
в proftpd прописал порты для пассива 50000-50100
всё заработало, всем спасибо
