Возможно вы искали: 'Project S'

May 15 2025 19:21:32
  • Как сделать 8Gamers.Ru домашней страницей?
  • Игры
    • База данных по играх
    • Игровые новости
    • Игровая индустрия
    • Обзоры на игры
    • Прохождения игр
    • Гайды к играм
    • Превью о играх
    • Игровые тизеры
    • Игровые арты
    • Игровые обои
    • Игровые скриншоты
    • Игровые обложки
    • Игровые трейлеры
    • Игровое видео
    • Вышедшие игры
    • Ближайшие релизы игр
  • Кино и ТВ
    • База данных по кино
    • Статьи о кино
    • Постеры
    • Кадры из кино
    • Кино трейлеры
    • Сегодня в кино
    • Скоро в кино
  • Комиксы и манга
    • Манга по алфавиту
    • База данных по комиксах
    • Читать онлайн комиксы
    • Читать онлайн манга
    • База персонажей
  • Читы и коды
    • Чит-коды для PC игр
    • Чит-коды для консольных игр
    • Трейнеры
    • Коды Game Genie
  • Моддинг
    • Модификации
    • Карты к играм
    • Программы для моддинга
    • Статьи о моддинге
  • Геймдев
    • Всё о создании игр
    • Список движков
    • Утилиты в помощь игроделу
    • Конструкторы игр
    • Игровые движки
    • Библиотеки разработки
    • 3D-модели
    • Спрайты и тайлы
    • Музыка и звуки
    • Текстуры и фоны
  • Рецензии
    • Игры
    • Кино
    • Аниме
    • Комиксы
    • Мангу
    • Саундтреки
  • Саундтреки
    • Лирика
  • Файлы
    • Патчи к играм
    • Русификаторы к играм
    • Сохранения к играм
    • Субтитры к кино
  • Медиа
    • Видео
    • Фото
    • Аудио
    • Фан-арты
    • Косплей
    • Фото с виставок
    • Девушки из игр
    • Рисунки
    • Рисуем онлайн
    • Фотохостинг
  • Юмор
    • Анекдоты
    • Афоризмы
    • Истории
    • Стишки и эпиграммы
    • Тосты
    • Цитаты
  • Флеш
    • Азартные
    • Аркады
    • Бродилки
    • Гонки
    • Для девочек
    • Для мальчиков
    • Драки
    • Квесты
    • Леталки
    • Логические
    • Мультфильмы
    • Открытки
    • Приколы
    • Разное
    • Спорт
    • Стратегии
    • Стрелялки
Статистика

Статей: 87772
Просмотров: 96111483
Игры
Injustice:  Gods Among Us
Injustice: Gods Among Us
...
Dark Souls 2
Dark Souls 2
Dark Souls II - вторая часть самой хардкорной ролевой игры 2011-2012 года, с новым героем, сюжето...
Battlefield 4
Battlefield 4
Battlefield 4 - продолжение венценосного мультиплеер-ориентированного шутера от первого ли...
Кино
Steins;Gate
Steins;Gate
Любители японской анимации уже давно поняли ,что аниме сериалы могут дать порой гораздо больше пи...
Ку! Кин-дза-дза
Ку! Кин-дза-дза
Начинающий диджей Толик и всемирно известный виолончелист Владимир Чижов встречают на шумной моск...
Обзоры на игры
• Обзор Ibara [PCB/PS2] 18357
• Обзор The Walking ... 18801
• Обзор DMC: Devil M... 19879
• Обзор на игру Valk... 15877
• Обзор на игру Stars! 17764
• Обзор на Far Cry 3 17948
• Обзор на Resident ... 16024
• Обзор на Chivalry:... 17508
• Обзор на игру Kerb... 17981
• Обзор игры 007: Fr... 16619
Превью о играх
• Превью к игре Comp... 17960
• Превью о игре Mage... 14464
• Превью Incredible ... 14721
• Превью Firefall 13479
• Превью Dead Space 3 16334
• Превью о игре SimC... 14730
• Превью к игре Fuse 15442
• Превью Red Orche... 15542
• Превью Gothic 3 16343
• Превью Black & W... 17354
Главная » Статьи » Разное » proftpd + mysql + mod_qouta (ftp mysql quota)

proftpd + mysql + mod_qouta (ftp mysql quota)

Ключевые слова: ftp, mysql, quota, (найти похожие документы)

From: Khomyakov Alexandr aka airo <airo@airo.com.ru.>
Date: Mon, 11 Aug 2006 14:31:37 +0000 (UTC)
Subject: proftpd + mysql + mod_qouta


Введение

задача: Организовать ftp доступ для нескольких пользователей и назначить
этим пользователям квоты,

Статья написана из за того что мало информации о том как же
сконфигурировать mod_quotatab. Надеюсь кому-нибудь пригодиться :)

Информация о пользователях и квотах будет содержаться в mysql, вызвано
это тем что юзеров секьюрнее держать в базе данных, а реализация
mod_quotatab на текстовых файлах не очень красиво выглядит в плане того
что квоты в этом случае добавляются с помощью скрипта со сложным
синтаксисом.

Я рассчитываю на то что вы самостоятельно сможете установить proftpd с
mod_sql и mod_qouta и базу данных mysql.


Создаем базу данных и таблицы, и пользователя.


mysql -u root -p

CREATE DATABASE proftpd;
USE proftpd;

grant select,insert,update,delete on proftpd.* to proftpd@localhost identified by 'password';

CREATE TABLE users (
primary_key int not null auto_increment primary key,
username varchar(20) not null,
password varchar(20) not null,
uid int not null,
gid int not null,
homedir varchar(50) not null,
shell varchar(20) not null
);

CREATE TABLE quotalimits (
name VARCHAR(30),
quota_type ENUM("user", "group", "class", "all") NOT NULL,
per_session ENUM("false", "true") NOT NULL,
limit_type ENUM("soft", "hard") NOT NULL,
bytes_in_avail FLOAT NOT NULL,
bytes_out_avail FLOAT NOT NULL,
bytes_xfer_avail FLOAT NOT NULL,
files_in_avail INT UNSIGNED NOT NULL,
files_out_avail INT UNSIGNED NOT NULL,
files_xfer_avail INT UNSIGNED NOT NULL
);

CREATE TABLE quotatallies (
name VARCHAR(30) NOT NULL,
quota_type ENUM("user", "group", "class", "all") NOT NULL,
bytes_in_used FLOAT NOT NULL,
bytes_out_used FLOAT NOT NULL,
bytes_xfer_used FLOAT NOT NULL,
files_in_used INT UNSIGNED NOT NULL,
files_out_used INT UNSIGNED NOT NULL,
files_xfer_used INT UNSIGNED NOT NULL
);




Добавляем группу и юзера для proftpd и виртуальных пользователей proftpd

pw group add ftp
pw user add ftp -s /sbin/nologin -d /dev/null -g ftp


заносим пользователей и квоты.
Если для системного пользователя, смотрим uid gid

[airo@airo /]# cat /etc/passwd |grep airo
airo:*:1005:0:User &:/home/airo:/usr/local/bin/bash

insert into users values (NULL,'airo','passwd','1005','0','/home/airo','/sbin/nologin');
insert into quotalimits values ('airo','user','false','hard','0','0','0','0','0','0');


Если для виртуального пользователя, то его файлы должны кому то
принадлежать. Это будет user ftp.

[airo@airo /]# cat /etc/passwd |grep ftp:
ftp:*:1012:1013:User &:/dev/null:/sbin/nologin

insert into users values (NULL,'uk','uk123','1012','1013','/home/vftp/uk','/sbin/nologin');


задем квоту в 150Мб

insert into quotalimits values ('airo','user','false','hard','157286400','0','0','0','0','0');


Комментарии к таблице users

username: имя виртуального пользователя
passwd: незашифрованный пароль
uid: uid пользователя которому будут принадлежать файлы
gid: gid пользователя которому будут принадлежать файлы
homedir: chroot директория пользователя.
shell: по умолчанию /sbin/nologin


Комментарии к таблице quotalimits

name: имя виртуального пользователя
quota_type: тип ограничения по (user,qroup,class или all - для всех)
per_session: true - использовать квоту только на текущую сессию, в этом случае ни куда не записывается размер использованной квоты и для каждой новой сессии используется указанная квота.
false - в этом случае использование квоты заноситься в базу данных.
limit_type: soft - возможно некоторое превышение квоты
hard - жостко заданная квота, превышение невозможно
bytes_in_avail лимит загрузки в байтах ( если 150 Мб то 157286400 байт) 0 = нет лемита
bytes_out_avail лимит скачивания в байтах. 0 = нет лимита
bytes_xfer_avail: Лимит передачи в байтах.0 = нет лимита
files_in_avail: Лимит количества загружаемых файлов. 0 = нет лимита
files_out_avail: Лимит количесва скачиваемых файлов. 0 = нет лимита
files_xfer_avail: Лимит количесва передачи файлов. 0 = нет лимита


таблицу quotatallies редактировать не нужно proftpd это делает сам.

Для виртуальных пользователей можно использовать любую папку, я например
использовал следующую

mkdir /home/vftp


только вот для каждого нового пользователя нужно обязательно создавать
домашнюю директорию и назначать владельца согласно выставленным в БД uid
и gid

mkdir /home/vftp/uk
chown ftp:ftp /home/vftp/uk


Собственно конфиг proftpd


#-------------------- proftpd.conf ---------------------------#
ServerName "FTP server for site.ru "
ServerAdmin airo@site.ru
ServerType standalone
DefaultServer on
ServerIdent on
Port 21
Umask 022
MaxClients 10 "Sorry, the maximum number of allowed users are already connected (%m)"
MaxClientsPerHost 10 "Sorry, you may not connect more than one time. %m allowed users already connected"
MaxLoginAttempts 3
User ftp
Group ftp
SyslogLevel notice
UseReverseDNS off
IdentLookups off
SystemLog /var/log/proftpd/proftpd.log
TransferLog /var/log/proftpd/proftpd-tranfer.log
ExtendedLog /var/log/proftpd/proftpd-extended.log read,write
ExtendedLog /var/log/proftpd/proftpd-auth.log AUTH auth
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"
TimeoutIdle 300
TimeoutLogin 300
TimeoutNoTransfer 360
TimeoutStalled 640
DefaultTransferMode binary
AllowForeignAddress off

DisplayConnect /etc/ftp_connect.msg
DisplayLogin /etc/ftp_login.msg
AccessDenyMsg "ATTENTION!!! ALL CONNECTIONS LOGED"
AccessGrantMsg "Now upload/download files"
DisplayGoAway "Go Away"
PersistentPasswd off
DefaultRoot ~

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

# Если нужен анонимный доступ раскомментировать.

#< Anonymous /path/to/anonymous/users> # Директория для анонимов.
# User ftp
# Group ftp
# UserAlias anonymous ftp
# MaxClients 10
# < Limit WRITE>
# DenyAll # Запрещаем писать.
# < /Limit>
#< /Anonymous>

#sql info
SQLAuthTypes Plaintext # хранить пароли в открытом тексте
SQLAuthenticate users
SQLConnectInfo proftpd@localhost proftpd password # база@хост логин пароль
SQLUserInfo users username password uid gid homedir shell # данные которые беруться из базы
RequireValidShell off # непроверять валидность шелла
#SQLLogFile /var/log/proftpd/sql.log #нужно только на время тестирования после закоментить, генерирует много инфы.

# config quotas
# ===========
QuotaEngine on # включить квоту
QuotaDirectoryTally on
QuotaDisplayUnits Mb
QuotaShowQuotas on
SQLNamedQuery get-quota-limit SELECT "name, quota_type, per_session, limit_type,
bytes_in_avail, bytes_out_avail, bytes_xfer_avail, files_in_avail, files_out_avail,
files_xfer_avail FROM quotalimits WHERE name = '%{0}' AND quota_type = '%{1}'"
SQLNamedQuery get-quota-tally SELECT "name, quota_type, bytes_in_used, bytes_out_used,
bytes_xfer_used, files_in_used, files_out_used, files_xfer_used FROM quotatallies
WHERE name = '%{0}' AND quota_type = '%{1}'"
SQLNamedQuery update-quota-tally UPDATE "bytes_in_used = bytes_in_used + %{0},
bytes_out_used = bytes_out_used + %{1}, bytes_xfer_used = bytes_xfer_used + %{2},
files_in_used = files_in_used + %{3}, files_out_used = files_out_used + %{4},
files_xfer_used = files_xfer_used + %{5} WHERE name = '%{6}' AND quota_type = '%{7}'" quotatallies
SQLNamedQuery insert-quota-tally INSERT "%{0}, %{1}, %{2}, %{3}, %{4}, %{5}, %{6}, %{7}" quotatallies
QuotaLimitTable sql:/get-quota-limit
QuotaTallyTable sql:/get-quota-tally/update-quota-tally/insert-quota-tally
QuotaLog /var/log/proftpd/quota.log

#----------------------------- end config --------------------------------#




Создаем директорию для логов

mkdir /var/log/proftpd


запросы
SQLNamedQuery get-quota-limit
SQLNamedQuery get-quota-tally
SQLNamedQuery update-quota-tally
должны быть одной строкой в конфиге. вот вродебы и все теперь можно
запусктать proftpd если не получаеться смотреть логи.

проверить работоспособность квоты можно залогинившись и набрав команду


ftp> quote site quota
200-The current quota for this session are [current/limit]:
Name: airo
Quota Type: User
Per Session: False
Limit Type: Hard
Uploaded Mb: 0.00/150.00
Downloaded Mb: unlimited
Transferred Mb: unlimited
Uploaded files: unlimited
Downloaded files: unlimited
Transferred files: unlimited
200 Please contact airo@site.ru if these entries are inaccurate



Список источников.

http://proftpd.org
http://www.castaglia.org/proftpd/doc/contrib/ProFTPD-mini-HOWTO-Quotas.html
http://www.botik.ru/doc/proftpd-doc/mod_quotatab.html#QuotaDirectoryTally
1337 Прочтений •  [proftpd + mysql + mod_qouta (ftp mysql quota)] [08.05.2012] [Комментариев: 0]
Добавил: Ukraine Vova
Ссылки
HTML: 
[BB Url]: 
Похожие статьи
Название Добавил Добавлено
• proftpd + mysql + mod_qouta (ftp my... Ukraine Vova 08.05.2012
Ни одного комментария? Будешь первым :).
Пожалуйста, авторизуйтесь для добавления комментария.

Проект входит в сеть сайтов «8Gamers Network»

Все права сохранены. 8Gamers.NET © 2011 - 2025

Статьи
Рецензия на Pressure
Рецензия на Pressure
Чтобы обратить на себя внимание, начинающие маленькие разработчики, как правило, уходят в жанры, ...
Рецензия на Lost Chronicles of Zerzura
Рецензия на Lost Chron...
Игры, сделанные без любви и старания, похожи на воздушный шар – оболочка есть, а внутри пусто. Lo...
Рецензия на The Bridge
Рецензия на The Bridge
«Верх» и «низ» в The Bridge — понятия относительные. Прогуливаясь под аркой, можно запросто перей...
Рецензия на SimCity
Рецензия на SimCity
Когда месяц назад состоялся релиз SimCity, по Сети прокатилось цунами народного гнева – глупые ош...
Рецензия на Strategy & Tactics: World War 2
Рецензия на Strategy &...
Название Strategy & Tactics: World War II вряд ли кому-то знакомо. Зато одного взгляда на ее скри...
Рецензия на игру Scribblenauts Unlimited
Рецензия на игру Scrib...
По сложившейся традиции в информационной карточке игры мы приводим в пример несколько похожих игр...
Рецензия на игру Walking Dead: Survival Instinct, The
Рецензия на игру Walki...
Зомби и продукция-по-лицензии — которые и сами по себе не лучшие представители игровой биосферы —...
Обратная связь | RSS | Донейт | Статистика | Команда | Техническая поддержка