Авторизация

Закрыть окно
Google ВКонтакте Facebook OpenID Яндекс Twitter


Регистрация     Сменить/востановить пароль


  • Украинский
  • Русский
СКИН JAMPO:ТемныйКрасно-зеленый с серым форумомСинийСалатовый
 Новости портала: Авария в датацентре 03.04.2012
[ 1 ]  2  ... 3  4 
Тема: [HOWTO]FTP-сервер VsFTPd с виртуальными пользователями, хранимыми в MySQL. (Прочитано 13081 раз)
Зарегистрированные пользователи не просматривают эту тему.

Модератор


pka.pka

Карма: +27/-3
Сообщений: 1403

Откуда: Дарница

Офлайн Офлайн
[HOWTO]FTP-сервер VsFTPd с виртуальными пользователями,...
В статье рассматривается настройка FTP-сервера на базе VsFTPd под управлением Ubuntu Linux 9.04. Вход на сервер осуществляется как анонимно, так и с помощью авторизации. Все виртуальные пользователи имеют разграниченые права доступа. Статистика посещений и закачек ведется через Web-интерфейс.

Установим сам FTP-сервер.
# aptitude install vsftpd

Установим СУБД MySQL:
# aptitude install mysql-server mysql-client

Назначим пароль суперпользователя для СУБД:
# mysqladmin -u root password root_password

Создадим базу данных для вируальных пользователей. Я назову ее vsftpd. Пользователь БД будет vsftpd c таким же паролем.
# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 51
Server version: 5.0.67-0ubuntu6 (Ubuntu)

Type «help;» or «\h» for help. Type «\c» to clear the buffer.


Создаем БД
mysql> CREATE DATABASE vsftpd;

Даем нужные права пользователю vsftpd
mysql> GRANT ALL ON vsftpd.* TO «vsftpd»@"localhost» IDENTIFIED BY «vsftpd»;

Применяем новые привелегии
mysql> FLUSH PRIVILEGES;

Делаем текущей нашу БД
mysql> USE vsftpd;

Создаем необходимые таблицы
mysql> CREATE TABLE `accounts` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`username` VARCHAR( 30 ) NOT NULL ,
`password` VARCHAR( 50 ) NOT NULL ,
UNIQUE ( `username` )
)
ENGINE = MYISAM ;

Выходим из консоли MySQL
mysql> quit;

Cоздадим пользователя vsftpd, от имени которого будут работать наши виртуальные пользователи:
# useradd --home /home/vsftpd --gid nogroup -m --shell /bin/false vsftpd

Отредактируем конфигурационный файл /etc/vsftpd.conf:
# Разрешать анонимный доступ
anonymous_enable=YES
# Корненая директория анонимного пользователя, где хранятся директории incoming и pub
anon_root=/home/ftp/
# Не требуется пароль для анонимного пользователя
no_anon_password=YES
# Включить локальных пользователей. В качестве них будут виртуальные пользователи. Чтобы системные пользователи имели доступ
# на ftp, необходимо их внести в базу, как будет указано ниже.
local_enable=YES
# Разрешить запись для анонимного пользователя в incoming
write_enable=YES
# Разрешить заливать файлы анонимным пользователям в incoming
anon_upload_enable=YES
# Разрешить создавать директории анонимным пользователям в incoming
anon_mkdir_write_enable=YES
# Разрешить запись в другие директории анонимному пользователю
anon_other_write_enable=YES
# Маска локального пользователя (rwxr-xr-x)
local_umask=0022
# Маска анонимного пользователя (rwxrwx---)
anon_umask=0007
# Режим для открытия файлов
file_open_mode=0777
# Если запускается самостоятельно. Если спользуется inetd или xinetd, необходимо установить значение listen=NO
listen=YES
# Порт, который будет слушать демон
listen_port=21
# Минимальный пассивный порт
pasv_min_port=30000
# Максимальный пассивный порт
pasv_max_port=30999
# Формат лога
xferlog_std_format=YES
# Файл лога
xferlog_file=/var/log/vsftpd.log
# Включить сообщения, которые выдаются при входе в определенную директорию
dirmessage_enable=YES
# Баннер, который выводится при подключении к фтп-серверу
ftpd_banner=Welcome to my FTP Service
# Пользователь, от имени которого будут вестись все действия на фтп
ftp_username=ftp
# Просмотр с помощью ls -R, рекомендую оставить, поскольку некоторые клиенты именно так и просматривают
ls_recurse_enable=YES
# Активируем виртуальных пользователей
guest_enable=YES
# Действия для виртуальных пользователей ведутся от имени пользователя vsftpd
guest_username=vsftpd
# Виртуальные пользователи имеют права локальных пользователей
virtual_use_local_privs=YES
# Файл, который используется для аутентификации виртуальных пользователей
pam_service_name=vsftpd
# Домашнии директории для каждого виртуального пользователя
user_sub_token=$USER
local_root=/home/vsftpd/$USER
# Привязать локального пользователя к замкнутой среде
chroot_local_user=YES
# Директория, которая используется для замкнутой среды
secure_chroot_dir=/var/run/vsftpd
# Отображает «ftp» вместо ID польователя при просмотре с помощью ls -l
hide_ids=YES
# Имя файл в /etc/pam.d/, где хранятся необходимые настройки vsftpd
pam_service_name=vsftpd
# Дадим скорость 1Mbit/s на скачку и закачку для анонимных пользователей
anon_max_rate=65536
# Дадим скорость 10Mbit/s на скачку и закачку для виртуальных пользователей
local_max_rate=655360
# Лог запросов для сервера. Может быть понадобится для ведения статистики. Если нет — можно отключить
log_ftp_protocol=YES
# Максимальное число клиентов:
max_clients=50
# Максимальное число клиентов для одного уникального IP адресса. Используется для предотвращения многопотоковых закачек,
# которые забивают канал
max_per_ip=1


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

Cоздадим необходимые директории:
# mkdir -p /home/ftp/incoming
# mkdir -p /home/ftp/pub

Выставим на них необходимые права:
# chmod 4775 /home/ftp/pub
# chmod 3773 /home/ftp/incoming

Устанавливаем пакет libpam-mysql, который является связующим звеном между VsFTPd и MySQL:
# aptitude install libpam-mysql

Отредактируем файл /etc/pam.d/vsftpd. Закоментируем или удалим все строки, оставив только эти:
# For VsFTPd virtual users:
auth required pam_mysql.so user=vsftpd passwd=vsftpd host=localhost db=vsftpd table=accounts usercolumn=username passwdcolumn=password crypt=2
account required pam_mysql.so user=vsftpd passwd=vsftpd host=localhost db=vsftpd table=accounts usercolumn=username passwdcolumn=password crypt=2

Перезапустим демон, чтобы он загрузил библиотеку pam_mysql.so:
# /etc/init.d/vsftpd restart
* Stopping FTP server: vsftpd [ OK ]
* Starting FTP server: vsftpd [ OK ]

Создадим виртуального пользователя «user1» c паролем «password1»:
# mysql vsftpd -u vsftpd -pvsftpd
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 52
Server version: 5.0.67-0ubuntu6 (Ubuntu)

Type «help;» or «\h» for help. Type «\c» to clear the buffer.

mysql> INSERT INTO accounts (username, password) VALUES(«user1», PASSWORD («password1»));
mysql> quit;

Создадим домашнюю директорию виртуального пользователя:
# mkdir /home/vsftpd/user1

Выставим на нее необходимые права:
# chown vsftpd:nogroup /home/vsftpd/user1


Тестируем:
# ftp localhost
Connected to localhost.
220 Welcome to my FTP Service
Name (localhost:root): anonymous
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
drwxrws-wt 2 ftp ftp 4096 Mar 29 14:40 incoming
drwsrwxr-x 2 ftp ftp 4096 Mar 29 14:41 pub
226 Directory send OK.
ftp> quit
221 Goodbye.

# ftp localhost
Connected to localhost.
220 Welcome to my FTP Service
Name (localhost:root): user1
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
226 Directory send OK.
ftp> quit
221 Goodbye.


Сейчас я покажу на примере, как сделать, чтобы:
1) виртуальный пользователь porno-downloader мог скачивать содержимое директории /home/dim3dro1/Video/Porno/.
2) виртуальный пользователь cisco мог пополнять коллекцию литературы в /home/dim3dro1/Documents/Cisco/.
Создадим этих пользователей:
# mysql vsftpd -u vsftpd -pvsftpd
mysql> INSERT INTO accounts (username, password) VALUES(«porno-downloader», PASSWORD («porno»));
mysql> INSERT INTO accounts (username, password) VALUES(«cisco», PASSWORD («cisco»));
mysql> quit;

Создадим домашние директории этих пользователей:
# mkdir /home/vsftpd/porno-downloader
# mkdir /home/vsftpd/cisco

Выставим на них необходимые права:
# chown vsftpd:nogroup /home/vsftpd/porno-downloader
# chown vsftpd:nogroup /home/vsftpd/cisco

Теперь будем монтировать в домашние директории пользователей вышеуказаное содержимое. Для этого воспользуемся параметром --bind, который позволяет перемонтировать дерево в другом месте, так, что его содержимое доступно в обоих местах. Открываем файл /etc/fstab и добавляем в конец следующие строки:
# Mounts for user «porno-downloader»
/home/dim3dro1/Video/Porno /home/vsftpd/porno-downloader none ro,bind 0 0
# Mounts for user «cisco»
/home/dim3dro1/Documents/Cisco /home/vsftpd/cisco none rw,bind 0 0

Перемонтируем все точки монтирования, указанные в /etc/fstab:
# mount -a

В результате было получено:
1) пользователь porno-downloader имеет доступ к директории /home/dim3dro1/Video/Porno с правами только для чтения;
2) пользователь cisco имеет доступ к директории /home/dim3dro1/Documents/Cisco с правами на запись.

Снимать статистику FTP-траффика будем с помощью AWStats. Установим его:
# aptitude install awstats

Создаем конфигурационный файл для FTP-сервера:
# touch /etc/awstats/awstats.localhost.conf

Добавляем в него следующие строки:
SiteDomain="localhost»
LogFile="/var/log/vsftpd.log»
LogType=F
LogFormat=»%time3 %other %host %bytesd %url %other %other %method %other %logname %other %code %other %other»
LogSeparator=»\s»
NotPageList=»»
LevelForBrowsersDetection=0
LevelForOSDetection=0
LevelForRefererAnalyze=0
LevelForRobotsDetection=0
LevelForWormsDetection=0
LevelForSearchEnginesDetection=0
ShowLinksOnUrl=0
ShowMenu=1
ShowSummary=UVHB
ShowMonthStats=UVHB
ShowDaysOfMonthStats=HB
ShowDaysOfWeekStats=HB
ShowHoursStats=HB
ShowDomainsStats=HB
ShowHostsStats=HBL
ShowAuthenticatedUsers=HBL
ShowRobotsStats=0
ShowEMailSenders=0
ShowEMailReceivers=0
ShowSessionsStats=1
ShowPagesStats=PBEX
ShowFileTypesStats=HB
ShowFileSizesStats=0
ShowBrowsersStats=0
ShowOSStats=0
ShowOriginStats=0
ShowKeyphrasesStats=0
ShowKeywordsStats=0
ShowMiscStats=0
ShowHTTPErrorsStats=0
ShowSMTPErrorsStats=0

Устанавливаем Web-сервер apache2:
# aptitude install apache2

Создаем конфигурационный файл для AWStats:
# touch /etc/apache2/awstats.conf

Добавляем в него следующие строки:
Alias /awstatsclasses «/usr/share/awstats/lib/»
Alias /awstats-icon/ «/usr/share/awstats/icon/»
Alias /awstatscss «/usr/share/doc/awstats/examples/css»
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
ScriptAlias /awstats/ /usr/lib/cgi-bin/
Options ExecCGI -MultiViews +SymLinksIfOwnerMatch

Добавляем в конец файла /etc/apache2/apache2.conf такую строку:
Include /etc/apache2/awstats.conf

И перезапустим Web-сервер:
# /etc/init.d/apache2 restart
* Restarting web server apache2 [ OK ]

Сгенерируем статистику:
# sudo -u www-data /usr/bin/perl /usr/lib/cgi-bin/awstats.pl -update -config=localhost
Create/Update database for config «/etc/awstats/awstats.localhost.conf» by AWStats version 6.7 (build 1.892)
From data in log file «/var/log/vsftpd.log»...
Warning: HostAliases parameter is not defined, awstats choose «localhost localhost 127.0.0.1».
Phase 1 : First bypass old records, searching new record...
Searching new records from beginning of log file...
Jumped lines in file: 0
Parsed lines in file: 4
Found 0 dropped records,
Found 0 corrupted records,
Found 4 old records,
Found 0 new qualified records.

Редактируем файл /etc/cron.d/awstats. Удаляем все и добавляем эту строку:
0,10,20,30,40,50 * * * * www-data [ -x /usr/lib/cgi-bin/awstats.pl -a -f /etc/awstats/awstats.localhost.conf -a -r /var/log/vsftpd.log ] && /usr/lib/cgi-bin/awstats.pl -config=localhost -update >/dev/null

Посмотреть на результаты работы можно, открыв в браузере страницу:
localhost/awstats/awstats.pl

БОНУС: VsFTPD + Active Directory.
Предполагается, что доменное имя — «example.com.ua».
Устанавливаем аутентификационные сервисы для АД:
# aptitude install likewise-open

Присоединим машинку к домену (для этого необходимо знать пароль Администратора домена):
# domainjoin-cli join example.com.ua Administrator

Запустим демона:
# /etc/init.d/likewise-open start
* Starting the Likewise-open auth daemon [ OK ]

Далее редактируем файл /etc/pam.d/vsftpd. Удаляем все и добавляем следующие строки:
###
# Active Directory
###
auth required pam_nologin.so no_warn
auth sufficient pam_winbind.so krb5_auth
auth required pam_unix.so no_warn try_first_pass
account required pam_nologin.so no_warn
account sufficient pam_winbind.so krb5_auth
account required pam_unix.so
session required pam_permit.so
###
# MySQL
###
auth requisite pam_mysql.so user=vsftpd passwd=vsftpd host=localhost db=vsftpd table=accounts usercolumn=username passwdcolumn=password crypt=2
account requisite pam_mysql.so user=vsftpd passwd=vsftpd host=localhost db=vsftpd table=accounts usercolumn=username passwdcolumn=password crypt=2


Проверяем:
# ftp localhost
Connected to localhost.
220 Welcome to my FTP Service
Name (localhost:root): Administrator
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
226 Directory send OK.
ftp> quit
221 Goodbye.


Литература для прочтения:
1. VsFTPd и виртуальные пользователи в MySQL для FreeBSD www.lissyara.su/?id=1614
2. Установка и настройка VSFTPD + MYSQL (Ubuntu & Debian) sudouser.com/ustanovka-i-nastrojka-vsftpd-mysql-ubuntu-debian
3. Virtual Hosting With vsftpd And MySQL On Debian Etch howtoforge.com/vsftpd_mysql_debian_etch
4. Возможности vsftpd и примеры их использования. www.opennet.ru/base/net/vsftpd_overview.txt.html
5. Chroot Mount Trick. www.vinno.net/linux/server/chroot-mount-trick/
6. Setting up awstats with apache2 on debian-ubuntu. www.debuntu.org/2006/04/21/33-how-to-setting-up-awstats-with-apache-2-on-debianubuntu/
7. Vsftpd + AD && Vsftpd + MySQL. www.lissyara.su/?id=1916
8. ActiveDirectoryWinbindHowto. https://help.ubuntu.com/community/ActiveDirectoryWinbindHowto




« Последний раз изменено: 24 июня 2009, 15:51:50 dim3dro1 »

30 марта 2009, 19:07:14

селёдка



Карма: +2/-0
Сообщений: 111

Откуда: RTF-15

Офлайн Офлайн

Re: [HOWTO]FTP-сервер VsFTPd с виртуальными пользователями,...
отличная статья




30 марта 2009, 21:28:23

тюлень


Сойди с ума, сука.

Карма: +74/-15
Сообщений: 1683

Откуда: Страна победившего
Дебутстрапа

Офлайн Офлайн

Re: [HOWTO]FTP-сервер VsFTPd с виртуальными пользователями,...
vsftpd LDAP умеет?




Der Ruhm den Robotern! Alle Menschen zu töten!
9 апреля 2009, 09:24:46

селёдка



Карма: +2/-0
Сообщений: 111

Откуда: RTF-15

Офлайн Офлайн

Re: [HOWTO]FTP-сервер VsFTPd с виртуальными пользователями,...
да




9 апреля 2009, 09:40:40

щука


[team LiNuX] Kubuntu
Телефони існують
аби повідомляти
ними різні
неприємності.

Карма: +22/-2
Сообщений: 1364

Откуда: top7

Офлайн Офлайн

Re: [HOWTO]FTP-сервер VsFTPd с виртуальными пользователями,...
порадьте фтп сервер, щоб при заходженні вінди на нього можна було бачити кирилицю. а то так тотал командер бачить кракозябри, бо не шарить утф8.




ipeacocks.blogspot.com/
НЕ ПОП!!! mymusic-opinion.blogspot.com/
9 апреля 2009, 16:26:46

селёдка



Карма: +2/-0
Сообщений: 111

Откуда: RTF-15

Офлайн Офлайн

Re: [HOWTO]FTP-сервер VsFTPd с виртуальными пользователями,...
тут надо фтп-клиент советовать, а не сервер.
сервер не должен делать никаких изменений в файлах и их именах.




9 апреля 2009, 17:19:22

щука


[team LiNuX] Kubuntu
Телефони існують
аби повідомляти
ними різні
неприємності.

Карма: +22/-2
Сообщений: 1364

Откуда: top7

Офлайн Офлайн

Re: [HOWTO]FTP-сервер VsFTPd с виртуальными пользователями,...
vortex
тут надо фтп-клиент советовать, а не сервер.
сервер не должен делать никаких изменений в файлах и их именах.


я розумію. мій друг говорив, що є плагіни на pure ftp що таке роблять і на профтпд тож подібне є.
імен він не змінює, він просто дозволяє віндузятникам то бачити...




« Последний раз изменено: 9 апреля 2009, 18:19:55 Depeche »

ipeacocks.blogspot.com/
НЕ ПОП!!! mymusic-opinion.blogspot.com/
9 апреля 2009, 18:19:16

селёдка



Карма: +1/-0
Сообщений: 181

Откуда: Trinity

Офлайн Офлайн

Re: [HOWTO]FTP-сервер VsFTPd с виртуальными пользователями,...
Тот патч просто выставляет кодировку для клиентов cp1251, а локальная остаеться utf-8 например. Сам патчил, когда ставил proftpd .

Кстати, если надо — есть готовые пакеты на Debian/Ubuntu amd64




« Последний раз изменено: 9 апреля 2009, 18:38:18 SkeLLLa »

9 апреля 2009, 18:35:47

селёдка



Карма: +1/-0
Сообщений: 189

Откуда: Тернопіль | RTF-15

Офлайн Офлайн

Re: [HOWTO]FTP-сервер VsFTPd с виртуальными пользователями,...
То хай заходить з броузера, в якому можна кодування вибирати.




[team LiNuX] — Gentoo — Registered Linux user #456367
9 апреля 2009, 18:46:00

щука


[team LiNuX] Kubuntu
Телефони існують
аби повідомляти
ними різні
неприємності.

Карма: +22/-2
Сообщений: 1364

Откуда: top7

Офлайн Офлайн

Re: [HOWTO]FTP-сервер VsFTPd с виртуальными пользователями,...
SkeLLLa
Тот патч просто выставляет кодировку для клиентов cp1251, а локальная остаеться utf-8 например. Сам патчил, когда ставил proftpd .

Кстати, если надо — есть готовые пакеты на Debian/Ubuntu amd64


а для х32 немає? чи десь скачати можна? ссилкани, коли можеш.

Romio
То хай заходить з броузера, в якому можна кодування вибирати.

та віндузятники ж вони не дуже то і шарять...




« Последний раз изменено: 9 апреля 2009, 18:51:23 Depeche »

ipeacocks.blogspot.com/
НЕ ПОП!!! mymusic-opinion.blogspot.com/
9 апреля 2009, 18:47:15

Модератор


pka.pka

Карма: +27/-3
Сообщений: 1403

Откуда: Дарница

Офлайн Офлайн

Re: [HOWTO]FTP-сервер VsFTPd с виртуальными пользователями,...
remote_charset=WIN1251
local_charset=UTF8
Никого патчить не надо. Надо маны читать




10 апреля 2009, 00:05:29

щука


[team LiNuX] Kubuntu
Телефони існують
аби повідомляти
ними різні
неприємності.

Карма: +22/-2
Сообщений: 1364

Откуда: top7

Офлайн Офлайн

Re: [HOWTO]FTP-сервер VsFTPd с виртуальными пользователями,...
а що треба додати в профтпд?




ipeacocks.blogspot.com/
НЕ ПОП!!! mymusic-opinion.blogspot.com/
10 апреля 2009, 12:27:23

селёдка



Карма: +1/-0
Сообщений: 181

Откуда: Trinity

Офлайн Офлайн

Re: [HOWTO]FTP-сервер VsFTPd с виртуальными пользователями,...
Хз де это ты в манах вычитал, но у меня без патча он не прохавал эти настройки. Тем более пропатчить — одна строка в консоли .
Может, просто в новой версии профиксили .
А то что написал dim3dro1 добавляешь в proftpd.conf




10 апреля 2009, 14:56:40

Модератор


pka.pka

Карма: +27/-3
Сообщений: 1403

Откуда: Дарница

Офлайн Офлайн

Re: [HOWTO]FTP-сервер VsFTPd с виртуальными пользователями,...
Вообще-то жто надо в vsftpd.conf. Для ProFTPd ничего не нашел, кроме патча на iconv (наверное плохо искал). Если не важно, какой ФТП сервер, тогда используй информацию из данной статьи и будет тебе счастье.




10 апреля 2009, 15:39:53

тюлень


Сойди с ума, сука.

Карма: +74/-15
Сообщений: 1683

Откуда: Страна победившего
Дебутстрапа

Офлайн Офлайн

Re: [HOWTO]FTP-сервер VsFTPd с виртуальными пользователями,...
С профтпд у меня все было просто. Файлы заливались из винды, люди с виндой на сервер заходили и нормально видели кирилицу. А с самого сервера оно нафиг никому не надо было файлы читать. Хотя я старался все писать транслитом.




Der Ruhm den Robotern! Alle Menschen zu töten!
11 апреля 2009, 09:39:43

щука


[team LiNuX] Kubuntu
Телефони існують
аби повідомляти
ними різні
неприємності.

Карма: +22/-2
Сообщений: 1364

Откуда: top7

Офлайн Офлайн

Re: [HOWTO]FTP-сервер VsFTPd с виртуальными пользователями,...
nishtiak
С профтпд у меня все было просто. Файлы заливались из винды, люди с виндой на сервер заходили и нормально видели кирилицу. А с самого сервера оно нафиг никому не надо было файлы читать. Хотя я старался все писать транслитом.

ну дивись в мене назви музики в кирилиці в утф8, в вінді відображається крякозябрами. тепер ні.




ipeacocks.blogspot.com/
НЕ ПОП!!! mymusic-opinion.blogspot.com/
11 апреля 2009, 13:22:19
[ 1 ]  2  ... 3  4 

Перейти к

Комментировать могут только авторизированные пользователи. Пожалуйста, войдите или зарегистрируйтесь!