Возможно вы искали: 'Chushaki: Hirasawa Nur...'

May 15 2025 18:45:05
  • Как сделать 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
Главная » Статьи » Разное » Виртуальный ftp сервер на базе proftpd с пользователями в MySQL (virtual ftp proftpd quote linux debian)

Виртуальный ftp сервер на базе proftpd с пользователями в MySQL (virtual ftp proftpd quote linux debian)

Ключевые слова: virtual, ftp, proftpd, quote, linux, debian, (найти похожие документы)

From: Денисенко Руслан <ruslan [at] black-soft [dot] com>
Date: Sun, 23 Feb 2008 17:02:14 +0000 (UTC)
Subject: Виртуальный ftp сервер на базе proftpd с пользователями в MySQL

Оригинал: http://howtoforge.org.ua/?q=node/22
Автор : Falko Timme <ft [at] falkotimme [dot] com>
Перевод : Денисенко Руслан <ruslan [at] black-soft [dot] com>
Оригинал на английском: http://www.howtoforge.com/proftpd_mysql_virtual_hosting

Этот документ описывает, как установить сервер Proftpd, который
использует виртуальных пользователей из базы данных MySQL, вместо
настоящих системных пользователей. Это является гораздо больше
производительние и позволяет иметь тысячи пользователей ftp на единой
машине. В добавление к тому, я покажу как использовать квоты с этой
конфигурацией.

Для администрации базы данных MySQL вы можете использовать веб
инструменты подобные phpMyAdmin, которые также будут установлены в
этом howto. phpMyAdmin - это удобный графический интерфейс
администирования базы данных MySql, это означает, что вам не придется
возиться с командной строкой.

Эта howto основана на Debian Sarge (Debian 3.1). Вы должны уже
установить основную систему Debian, как описано здесь:
- http://www.howtoforge.com/perfect_setup_debian_sarge
- http://www.howtoforge.com/perfect_setup_debian_sarge_p2

Это должно примениться и к другим Debian-based дистибудивам, подобно
Ubuntu, Knoppix, и т.п.. На других дистрибудивах подобно SuSE, Fedora,
Mandriva, и т.п. только инсталляция Proftpd другая; конфигурация
Proftpd должна примениться к этим дистибудивам также.

Этот howto подразумевается как практическое руководство; и не
открывает теоритическу часть. Теория рассматривается во многих других
документах в Web.

Этот документ не дает гарантии какого-нибудь вида! Я хочу сказать, что
это не единственный путь установки такой системы. Есть много путей
достижения этой цели, но это путь, который вабрал я. Я не даю никакой
гарантии, что данная конфигурация будет работать у вас!


1. Устанавливаем MySQL и phpMyAdmin


Это все может быть установлено целиком одной единой командой

apt-get install mysql-server mysql-client libmysqlclient12-dev phpmyadmin


Вам буде заданно несколько вопросов

Enable suExec? <-- Yes

Configuring mysql-server (Install Hints) <-- OK

Which web server would you like to reconfigure automatically? <-- apache, apache2

Do you want me to restart apache now? <-- Yes


Создайте пароль для root пользователя MySql (замените
yourrootsqlpassword паролем, который вы хотите использовать):

mysqladmin -u root password yourrootsqlpassword


2. Установка Proftpd с поддержкой MySQL


Для Debian доступен заранее сконфигурированный пакет proftpd-mysql.
Установите его как standalone daemon, подобно этому:

apt-get install proftpd-mysql
Run proftpd from inetd or standalone? <-- standalone

Then we create an ftp group ("ftpgroup") and user ("ftpuser") that all
our virtual users will be mapped to. Replace the group- and userid
2001 with a number that is free on your system:

groupadd -g 2001 ftpgroup

useradd -u 2001 -s /bin/false -d /bin/null -c "proftpd user" -g ftpgroup ftpuser


Затем создадим ftp группу ("ftpgroup") и пользователя ("ftpuser"), под
которыми будут работать все виртуальные пользователи. Замените group-
и userid 2001 на номер который свободен в вашей системе.

groupadd -g 2001 ftpgroup

useradd -u 2001 -s /bin/false -d /bin/null -c "proftpd user" -g ftpgroup ftpuser


3. Создание MySQL базы для Proftpd


Сейчас мы создадим базу данных ftp и пользователя MySql, назовем его
proftpd, daemon proftpd будет использовать его позже, чтобы
соединиться с базой данных ftp.

mysql -u root -p
create database ftp;
GRANT SELECT, INSERT, UPDATE, DELETE ON ftp.* TO 'proftpd'@'localhost' IDENTIFIED BY 'password';
GRANT SELECT, INSERT, UPDATE, DELETE ON ftp.* TO 'proftpd'@'localhost.localdomain' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;


Замените строку password на пароль который вы хотели бы использовать
для пользователя MySQL proftpd. Еще в оболочке MySQL, мы создаем
таблицы базы данных, которые нам нужны:

USE ftp;
CREATE TABLE ftpgroup (
groupname varchar(16) NOT NULL default '',
gid smallint(6) NOT NULL default '5500',
members varchar(16) NOT NULL default '',
KEY groupname (groupname)
) TYPE=MyISAM COMMENT='ProFTP group table';

CREATE TABLE ftpquotalimits (
name varchar(30) default NULL,
quota_type enum('user','group','class','all') NOT NULL default 'user',
per_session enum('false','true') NOT NULL default 'false',
limit_type enum('soft','hard') NOT NULL default 'soft',
bytes_in_avail int(10) unsigned NOT NULL default '0',
bytes_out_avail int(10) unsigned NOT NULL default '0',
bytes_xfer_avail int(10) unsigned NOT NULL default '0',
files_in_avail int(10) unsigned NOT NULL default '0',
files_out_avail int(10) unsigned NOT NULL default '0',
files_xfer_avail int(10) unsigned NOT NULL default '0'
) TYPE=MyISAM;

CREATE TABLE ftpquotatallies (
name varchar(30) NOT NULL default '',
quota_type enum('user','group','class','all') NOT NULL default 'user',
bytes_in_used int(10) unsigned NOT NULL default '0',
bytes_out_used int(10) unsigned NOT NULL default '0',
bytes_xfer_used int(10) unsigned NOT NULL default '0',
files_in_used int(10) unsigned NOT NULL default '0',
files_out_used int(10) unsigned NOT NULL default '0',
files_xfer_used int(10) unsigned NOT NULL default '0'
) TYPE=MyISAM;

CREATE TABLE ftpuser (
id int(10) unsigned NOT NULL auto_increment,
userid varchar(32) NOT NULL default '',
passwd varchar(32) NOT NULL default '',
uid smallint(6) NOT NULL default '5500',
gid smallint(6) NOT NULL default '5500',
homedir varchar(255) NOT NULL default '',
shell varchar(16) NOT NULL default '/sbin/nologin',
count int(11) NOT NULL default '0',
accessed datetime NOT NULL default '0000-00-00 00:00:00',
modified datetime NOT NULL default '0000-00-00 00:00:00',
PRIMARY KEY (id),
UNIQUE KEY userid (userid)
) TYPE=MyISAM COMMENT='ProFTP user table';
quit;


Как вы возможно заметили по команде quit мы покинули оболочку MySQL и
вернулись к оболочке Linux.

Я буду считать, что имя хоста вашей системы сервера ftp - это
server1.example.com) вы можете обратиться к phpMyAdmin по
http://server1.example.com/phpmyadmin/ (вы можете использовать IP
адрес вместо server1.example.com) в браузере пройдите регистрацию как
пользователь proftpd. Позже вы можете использовать phpMyAdmin чтобы
контролировать ваш сервер Proftpd.


4. Конфигурация Proftpd


Откройте /etc/proftpd.conf и добавьте следующие строки:

DefaultRoot ~
# The passwords in MySQL are encrypted using CRYPT
SQLAuthTypes Plaintext Crypt
SQLAuthenticate users* groups*

# used to connect to the database
# databasename@host database_user user_password
SQLConnectInfo ftp@localhost proftpd password

# Here we tell ProFTPd the names of the database columns in the "usertable"
# we want it to interact with. Match the names with those in the db
SQLUserInfo ftpuser userid passwd uid gid homedir shell

# Here we tell ProFTPd the names of the database columns in the "grouptable"
# we want it to interact with. Again the names match with those in the db
SQLGroupInfo ftpgroup groupname gid members

# set min UID and GID - otherwise these are 999
eachSQLMinID 500

# create a user's home directory on demand if it doesn't exist
CreateHome on

# Update count every time user logs in
SQLLog PASS updatecount
SQLNamedQuery updatecount UPDATE "count=count+1, accessed=now() WHERE userid='%u'" ftpuser

# Update modified everytime user uploads or deletes a file
SQLLog STOR,DELE modified
SQLNamedQuery modified UPDATE "modified=now() WHERE userid='%u'" ftpuser

# User 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 ftpquotalimits 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 ftpquotatallies 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}'" ftpquotatallies
SQLNamedQuery insert-quota-tally INSERT "%{0}, %{1}, %{2}, %{3}, %{4}, %{5}, %{6}, %{7}" ftpquotatallies
QuotaLimitTable sql:/get-quota-limitQuotaTallyTable sql:/get-quota-tally/update-quota-tally/insert-quota-tally
RootLogin off
RequireValidShell off


Убедитесь в том что вы заменили строку password, на реальный пароль
для MySQL пользователя proftpd в строке SQLConnectInfo!

Перезапускаем Proftpd:

/etc/init.d/proftpd restart


5. Заполнение базы данных и тестирование

Для заполнения базы данных вы можете использовать оболочку MySql

mysql -u root -p
USE ftp;


Для начала мы добавим запись в таблицу ftpgroup. Она содержит поля
groupname, groupid и username. Группу/пользователя ftp мы создали в
конце шага два (замените groupid, на тот который вы указанный при
создании пользователя):

INSERT INTO `ftpgroup` (`groupname`, `gid`, `members`) VALUES
('ftpgroup', 2001, 'ftpuser');


Сейчас мы закончили с таблицей ftpgroup. Нам не придется создавать
дальнейших записей здесь. Каждый раз, когда вы создаете нового
виртуального пользователя ftp, вы делаете это в таблицах
ftpquotalimits и ftpuser. Так что давайте создавать нашего первого
пользователя (мы все еще находимся в оболочке MySQL):

INSERT INTO `ftpquotalimits` (`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`) VALUES ('exampleuser', 'user', 'true', 'hard', 15728640, 0, 0, 0, 0, 0);
INSERT INTO `ftpuser` (`id`, `userid`, `passwd`, `uid`, `gid`, `homedir`, `shell`, `count`, `accessed`, `modified`)
VALUES (1, 'exampleuser', 'secret', 2001, 2001, '/home/www.example.com', '/sbin/nologin', 0, '', '');
quit;

(Не забывайте заменить groud- и userid 2001 на укзанные в последнем
INSERT, если вы используете другие значения, чем используемые в этой
howto!)


Сейчас откройте свою программу клиента FTP на вашей рабочей станции
(что-нибудь подобно WS_FTP или SmartFTP, если вы работаете на системе
Windows) и пробуйте соединиться. Имя хоста вы используете
server1.example.com (или IP адрес системы), имя пользователя -
exampleuser, и пароль секретен.

Если вы соединились - поздравления! В противном случае, что-нибудь
прошло неправильно.

Сейчас, если вы выполните

ls -l /home


вы должны увидеть, что директория /home/www.example.com (начальный
каталог exampleuser's) автоматически создана, и она принадлежит
ftpuser и ftpgroup (пользователя/группу мы создали в конце шага два).

Чтобы покинуть оболочку MySQL, наберите

quit;


5.1 Администрация Базы данных


Для большинства людей администрация базы легче, если они имеют
графический интерфейс к MySQL; таким образом вы можете использовать
phpMyAdmin (в этом примере http://server1.example.com/phpmyadmin/),
чтобы контролировать базу данных ftp.

Каждый раз, когда вы создаете нового пользователя, вам придется
создать только записи в таблицах ftpquotalimits и ftpuser, так что я
объясню столбики этих таблиц здесь:

Таблица ftpuser:

userid: Имя виртуального пользователя Proftpd (напр. exampleuser).

passwd: Незашифрованный (т.е., clear-text) пароль пользователя.

uid: Userid пользователя ftp, вы создали в конце шага два (напр. 2001).

gid: Groupid группы ftp, вы создали в конце шага два (напр. 2001).

homedir: Начальный каталог виртуального пользователя Proftpd (напр.
/home/www.example.com). Если его не существует, он будет создан, когда
новый пользователь пройдет первую авторизацию через FTP. Виртуальный
пользователь будет заключен в chroot окружение начального каталога,
т.е., он не может обращаться к другим директориям за пределами его
начального каталога.

shell: Установите /sbin/nologin по умолчанию.

Таблица ftpquotalimits:

name: Имя виртуального пользователя Proftpd (напр. exampleuser).

quota_type: Ограничить quota по пользователю или группе. Мы используем
здесь пользователя.

per_session: true или false. True лимиты квоты действительны только
для сессии. Например, если пользователь имеет квоту 15 МБ, и он
переслал 15 МБ в течение текущей сессии, затем он не может пересылать
что-либо еще. Но если он регистрируется опять, то он опять имеет
доступных 15 МБ. false, пользователь имеет 15 МБ и безразлично если он
регистрируется опять.

limit_type: hard или soft. Hard лимит квоты - это лимит
never-to-exceed, в то время как мягкая квота может быть временно
превышена. Нормально вы используете hard здесь.

bytes_in_avail: Лимит в байтах (напр. 15728640 для 15 МБ). 0 означает
безграничным.

bytes_out_avail: Лимит загрузки в байтах. 0 означает безграничным.

bytes_xfer_avail: Лимит передачи в байтах.0 означает безграничным.

files_in_avail: Upload лимит в файлах. 0 означает безграничным.

files_out_avail: Download лимит в файлах. 0 означает безграничным.

files_xfer_avail: Лимит Tranfer в файлах. 0 означает безграничным.

Таблица ftpquotatallies используется Proftpd внутри, чтобы управлять
квотами, так что вам не придется делать записей там!

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

Для начала мы создаем пользователя и группу с именем anonymous_ftp.
Пользователь имеет начальный каталог /home/anonymous_ftp:

groupadd -g 2002 anonymous_ftp
useradd -u 2002 -s /bin/false -d /home/anonymous_ftp -m -c "Anonymous FTP User" -g anonymous_ftp anonymous_ftp


(Замените 2002 с group-/userid, который свободен на вашей системе.)

Затем мы создаем директорию /home/anonymous_ftp/incoming, которая
позволит анонимному пользователю переслать файлы:

mkdir /home/anonymous_ftp/incoming
chown anonymous_ftp:nogroup /home/anonymous_ftp/incoming


И завершающий этап, открыть /etc/proftpd.conf и добавить следующие
директивы к нему:

# Limit WRITE everywhere in the anonymous chroot
<Directory *>
<Limit WRITE>
DenyAll
</Limit>
</Directory>

# Uncomment this if you're brave.
<Directory incoming>
# Umask 022 is a good standard umask to prevent new files and dirs
# (second parm) from being group and world writable.
Umask 022 022
<Limit READ WRITE>
DenyAll
</Limit>

<Limit STOR>
AllowAll
</Limit>
</Directory>
</Anonymous>


Перезапустите Proftpd:

/etc/init.d/proftpd restart


Сейчас анонимные пользователи могут входить на сервер, и они могут
загрузить файлы с /home/anonymous_ftp, но upload ограничен в
/home/anonymous_ftp/incoming (и как только файл загруже в
/home/anonymous_ftp/incoming, он не может быть ни прочитан ни
загруженный оттуда; администратору придется переместить его в
/home/anonymous_ftp сразу, чтобы сделать фаил доступным другим).

(Заметьте: Вы можете создать только один анонимный ftp акаунт на один
IP адрес !)

Ссылки:

Proftpd: http://www.proftpd.org/
MySQL: http://www.mysql.com/
phpMyAdmin: http://www.phpmyadmin.net/
1332 Прочтений •  [Виртуальный ftp сервер на базе proftpd с пользователями в MySQL (virtual ftp proftpd quote linux debian)] [08.05.2012] [Комментариев: 0]
Добавил: Ukraine Vova
Ссылки
HTML: 
[BB Url]: 
Похожие статьи
Название Добавил Добавлено
• Виртуальный ftp сервер на базе prof... 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 | Донейт | Статистика | Команда | Техническая поддержка