LINUX-сервер пошаговые инструкции инсталляции и настройки - Бруй В. В. , Карлов С. В.
.pdfГлава 31. MySQL – сервер баз данных |
461 |
Шаг 2
Для создания пользователя, например, drwalbr, обладающего всеми привилегиями по отношению к базе friends_book, добавьте соответствующие записи в таблицы привилегий user и db базы данных
mysql:
mysql> USE mysql;
Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A
Database changed
mysql> INSERT INTO user SET
-> Host='localhost', User='drwalbr', Password=PASSWORD('Walbr_$_W0rd');
Query OK, 1 row affected (0.01 sec)
mysql> INSERT INTO db
-> VALUES ('localhost','friends_book', 'drwalbr', -> 'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');
Query OK, 1 row affected (0.00 sec)
Для вступления изменений в силу наберите: mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
Завершите соединение с сервером баз данных: mysql> \quit
Bye
Шаг 3
Для создания таблицы friends, содержащей имена и соответствующие им адреса электронной почты, установите соединение с сервером баз данных от имени пользователя drwalbr и подключитесь к базе данных friends_book:
[drwalbr@drwalbr /]$ mysql -u drwalbr -h localhost –p friends_book Enter password: Dr_Walbr_$_W0rd
Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 1 to server version: 4.0.13
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
Создайте таблицу:
mysql> CREATE TABLE friends -> (Name VARCHAR(20), -> Email VARCHAR(20));
Query OK, 0 rows affected (0.00 sec)
Шаг 4 Если необходимо можете добавить соответствующие записи в таблицу. Для построчного добавления
записей выполните:
mysql> INSERT INTO friends
-> VALUES ('Андрусенко Ю.В.', 'andrysenco@domen.ru');
Query OK, 1 row affected (0.00 sec)
Для добавления нескольких записей одновременно выполните:
mysql> |
INSERT INTO friends VALUES |
||
-> |
('Карлов С.В.', 'karlnext@domen.ru'), |
||
-> |
('Поляков |
А.В.', |
'polyakov@domen.ru'), |
-> |
('Урбанов |
В.К.', |
'urbanoffff@domen.ru'); |
Query OK, 3 rows affected (0.01 sec)
Records: 3 Duplicates: 0 Warnings: 0
Шаг 5
Проверьте правильность внесенных в таблицу friends данных: mysql> SELECT * FROM friends;
+----------------- |
+--------------------- |
+ |
462 |
Часть 8. Программное обеспечение для сервера баз данных |
|
| Name |
| |
|
+----------------- |
+--------------------- |
+ |
| Андрусенко Ю.В. | andrysenco@domen.ru | |
||
| Карлов С.В. |
| karlnext@domen.ru |
| |
| Поляков А.В. |
| polyakoff@domen.ru |
| |
| Урбанов В.К. |
| urbanoffff@domen.ru | |
|
+----------------- |
+--------------------- |
+ |
4 rows in set (0.00 sec)
Завершите соединение с сервером баз данных: mysql> \quit
Bye
Глава 32. ProFTPD – FTP-сервер |
463 |
Часть 9
Программное обеспечение для организации службы
FTP-сервера
464 |
Часть 9. Программное обеспечение для организации службы FTP-сервера |
Глава 32
ProFTPD – FTP-cервер
В этой главе:
1. Ограничения и допущения
2.Пакеты
3.Компиляция, оптимизация и инсталляция ProFTPD
4.Конфигурирование ProFTPD
5.Конфигурирование ProFTPD c аутентификацией пользователей
6.Конфигурационный файл /etc/proftpd.conf
7.Конфигурационный файл /etc/sysconfig/proftpd
8.Конфигурационный файл /etc/pam.d/ftp
9.Конфигурационный файл /etc/ftpusers
10. Файл инициализации /etc/init.d/proftpd
11. Создание учетной записи FTP-клиента для соединения с FTP-сервером 12. Тестирование ProFTPD
13. Конфигурирование ProFTPD с поддержкой протокола SSL
14. Конфигурирование ProFTPD в режиме анонимного FTP-сервера
Глава 32. ProFTPD – FTP-сервер |
465 |
Протокол передачи файлов (File Transfer Protocol, FTP) остается одним из самых популярных способов передачи файлов по сети с одной системы на другую. В настоящее время для каждой операционной системы существуют клиентские и серверные программы.
ProFTPD – относительно безопасный и легко адаптируемый для решения практически любых задач FTP-сервер для Linux-систем. ProFTPD использует ту же схему построения, что и популярный Web-сервер Apache, имеет аналогичный формат конфигурационных файлов, модульную схему построения и т. д.
Ограничения и допущения
Исходные коды находятся в каталоге /var/tmp.
Все операции выполняются пользователем с учетной записью root. Используется дистрибутив ASPLinux 7.3 (Vostok).
Перекомпиляция ядра не требуется.
Процедуры, описанные в этой главе, вполне могут оказаться применимыми для других версий ядра и дистрибутивов Linux, но авторы этого не проверяли.
Пакеты
Последующие рекомендации основаны на информации, полученной с домашней страницы проекта ProFTPD по состоянию на 07.07.2003. Регулярно посещайте домашнюю страницу проекта http://www.proftp.org/ и отслеживайте обновления.
Исходные коды ProFTPD содержатся в архиве proftpd-version.tar.gz (последняя доступная на момент написания главы стабильная версия proftpd-1.2.8.tar.gz). Для использования ProFTPD c поддержкой протокола TSL/SSL обязательным условием является наличие установленной программы
OpenSSL.
Компиляция, оптимизация и инсталляция ProFTPD
Для инсталляции ProFTPD из исходных кодов необходимо выполнить следующие операции.
Шаг 1 Осуществите проверку подлинности имеющегося в вашем распоряжении архива с исходными кода-
ми. Для этого можно воспользоваться процедурой, описанной в шаге 1 радела «Компиляция, оптимизация и инсталляция OpenSSL» главы 12.
Шаг 2
Распакуйте архивы с исходными кодами ProFTPD в каталоге /var/tmp:
[root@test tmp]# tar xzpf proftpd-1.2.8.tar.gz
Шаг 3
Создайте специального пользователя ftp, от имени которого будет выполняться ProFTPD:
[root@test tmp]# groupadd -g 24 ftp > /dev/null 2>&1 || :
[root@test tmp]# useradd -u 24 -g 24 -s /bin/false -M -r -d /home/ftp ftp
> /dev/null 2>&1 || :
Шаг 4
Для добавления несуществующего командного интерпретатора, «используемого» пользователем ftp, добавьте (проверьте наличие) в файл /etc/shells строку:
/bin/false/
Шаг 5 Попробуйте увеличить заданное по умолчанию максимально допустимое число открытых дескрипто-
ров файлов, используемых для передачи FTP-данных и выполнения некоторых других задач. К сожалению, эта операция допустима не для всех дистрибутивов. Выполните команду:
[root@test tmp]# cd proftpd-1.2.8/
[root@test proftpd-1.2.8]# ulimit -n 8192
Если не выводится сообщения вида:
bash: ulimit: cannot modify open files limit: Operation not permitted
то вам удалось увеличить максимально допустимое число открытых дескрипторов файлов.
466 |
|
Часть 9. Программное обеспечение для организации службы FTP-сервера |
|||||
Если |
предыдущая |
операция |
прошла |
удачно, |
в |
файле |
/tmp/proftpd- |
1.2.8./include/options.h замените строку: |
|
|
|
|
|||
#define TUNABLE_BUFFER_SIZE |
1024 |
|
|
|
|
||
на: |
|
|
8192 |
|
|
|
|
#define TUNABLE BUFFER SIZE |
|
|
|
|
|||
Шаг 6
Отконфигурируйте исходные коды ProFTPD:
[root@test proftpd-1.2.8]# CFLAGS="-O2 -march=i686 -funroll-loops"; export CFLAGS
./configure \ --prefix=/usr \ --sysconfdir=/etc \ --localstatedir=/var/run \ --mandir=/usr/share/man \ --enable-pam \
--with-openssl-dir=/usr/share/ssl \ --with-modules=mod_readme:mod_tls\
В рассматриваемом примере исходные коды ProFTPD сконфигурированы с поддержкой стандартных модулей аутентификации PAM и поддержкой подключения модулей mod_readme и mod_tls. Использо-
вание опции --with-openssl-dir=/usr/share/ssl и подключение модуля mod_tls необходимо только в случае, если вы собираетесь использовать ProFTPD с поддержкой протокола TSL/SSL.
Шаг 7
Откомпилируйте, проинсталлируйте ProFTPD, создайте и сохраните в надежном месте список установленных файлов:
[root@test proftpd-1.2.8]# make
[root@test proftpd-1.2.8]# find /* > /root/proftpd1 [root@test proftpd-1.2.8]# make install
[root@test proftpd-1.2.8]# strip /usr/sbin/proftpd [root@test proftpd-1.2.8]# strip /usr/sbin/ftpshut [root@test proftpd-1.2.8]# strip /usr/bin/ftpcount [root@test proftpd-1.2.8]# strip /usr/bin/ftpwho [root@test proftpd-1.2.8]# find /* > /root/proftpd2
[root@test proftpd-1.2.8]# diff /root/proftpd1 /root/proftpd2 >
/root/proftpd.installed
[root@test proftpd-1.2.8]# mv /root/proftpd.installed
/very_reliable_place/proftpd.installed.YYYYMMDD
Шаг 8 Удалите архив и каталог с исходными кодами:
[root@test proftpd-1.2.8]# cd /var/tmp/
[root@test tmp]# rm -rf proftpd-1.2.8/ [root@test tmp]# rm -f proftpd-1.2.8.tar.gz
Конфигурирование ProFTPD
Конфигурирование ProFTPD осуществляется с использованием следующих файлов:
•главного конфигурационного файла /etc/proftpd.conf;
•системного конфигурационного файла /etc/sysconfig/proftpd;
•файла поддержки аутентификации пользователей с использованием модулей PAM
/etc/pam.d/ftp;
•файла /etc/ftpusers, содержащего список пользователей, которым запрещен доступ к FTP-
серверу;
•файла инициализации /etc/rc.d/init.d/proftpd;
•файлов .ftpaccess.
Глава 32. ProFTPD – FTP-сервер |
467 |
Конфигурирование ProFTPD c аутентификацией пользователей
Конфигурационный файл /etc/proftpd.conf
Для конфигурации ProFTPD используется метод директив и контекстов. В настоящее время ProFTPD имеет семь различных контекстов конфигурации: <General>, <Global>, <Limit>, <Anonymous>, <Directory>, <VirtualHost>. В главном конфигурационном файле могут содержаться следующие разделы:
• |
раздел общей конфигурации FTP-сервера – General server context; |
• |
раздел глобальной конфигурации FTPсервера – Global Server context; |
• |
раздел конфигурации ограничений FTP-сервера – Limit Server context; |
• |
раздел анонимной конфигурации FTP-сервера – Anonymous Server Context. |
Шаг 1
Создайте файл /etc/proftpd.conf, руководствуясь приведенными ниже рекомендациями и вашими потребностями:
# General Server Context. |
|
ServerName |
"Test FTPD BRUY.INFO" |
ServerAdmin |
ftpadmin@bruy.info |
ServerType |
standalone |
DefaultServer |
on |
Port |
21 |
tcpBackLog |
10 |
MaxInstances |
30 |
CommandBufferSize |
50 |
UseReverseDNS |
off |
IdentLookups |
off |
User |
ftp |
Group |
ftp |
AccessDenyMsg |
"Access for %u has been denied" |
AuthPAMAuthoritative |
on |
DeferWelcome |
on |
MultilineRFC2228 |
on |
AllowFilter |
"^[a-zA-Z0-9 ,.,-]*$" |
DefaultRoot |
~ users |
# Global Server Context. |
|
<Global> |
|
DeleteAbortedStores |
on |
MaxClients |
3 |
MaxLoginAttempts |
3 |
TransferRate |
APPE,RETR,STOR,STOU 56.4:256000 |
ServerIdent |
on "Ok, Test FTPD BRUY.INFO!" |
Umask |
022 |
</Global> |
|
#Limit normal user logins, because we only want to allow Guest logins. <Limit LOGIN>
DenyAll </Limit>
#Anonymous Server Context.
#
<Anonymous /home/karl_next>
User |
karlnext |
Group |
users |
AnonRequirePassword |
on |
468 |
Часть 9. Программное обеспечение для организации службы FTP-сервера |
<Limit LOGIN> |
|
AllowAll |
|
</Limit> |
|
HideUser |
root |
HideGroup |
root |
<Directory /*> AllowOverwrite on
</Directory>
</Anonymous>
Раздел General Server Contex.
В разделе General Server Context содержатся наиболее общие (не переопределяемые в других разделах) директивы.
Директива: |
|
ServerName |
"Test FTPD BRUY.INFO" |
используется для определения строкового сообщения, отображаемого пользователям FTP-сервера при под- |
|
ключении. |
|
Директива: |
|
ServerAdmin |
ftpadmin@bruy.info |
используется для определения адреса электронной почты администратора сервера. |
|
Директива: |
|
ServerType |
standalone |
используется для определения режима работы сервера. В рассматриваемом примере сервер работает в режиме автономного сервера без задействования суперсервера xinetd. Это, по мнению авторов, более безопасный режим, обеспечивающий наилучшую производительность.
Директива: |
|
DefaultServer |
on |
используется для выбора конфигурации сервера, выполняемой по умолчанию, т. е. когда входящее FTP соединение предназначено для IP-адреса, не являющегося IP-адресом обычного или виртуального FTPсервера.
Директива: |
|
Port |
21 |
используется для определения номера порта, на котором FTP-сервер ожидает подключений. |
|
Директива: |
|
tcpBackLog |
10 |
используется для управления размером неудовлетворенной очереди (backlog queue) TCP соединений при работе ProFTPD в автономном режиме. Другими словами, когда TCP соединение установлено, существует некоторый промежуток времени между моментом фактической установки соединения и началом обработки соединения непосредственно пользовательской программой. Продолжительность этого периода может изменяться в зависимости от различных факторов (конфигурации системы, на которой установлен FTP-сервер, загрузки системы, числа виртуальных хостов и т. п.). В некоторых случаях это может привести к получению пользователями сообщений об отказе подключения (Connection refused). Для устранения этого эффекта осуществляется перераспределение ресурсов, выделяемых для различных модулей FTP-сервера. Чем больше значение параметра, определяемое директивой tcpBackLog, тем больше подключений может быть установлено в единицу времени.
Директива: |
|
MaxInstances |
30 |
используется для управления максимальным числом одновременно открытых соединений. Это позволяет предотвращать атаки, типа отказа в обслуживании.
Директива: |
|
CommandBufferSize |
50 |
используется для управления максимальной длиной команды, которая может быть передана для исполнения FTP-серверу. Ограничение длины команды позволяет предотвращать различные атаки, основанные на отказе в обслуживании.
Директива: |
|
UseReverseDNS |
off |
используется для запрета определения имен систем, с которых осуществляется подключение к FTP-серверу с использованием службы DNS, что, в конечном счете, позволяет несколько повысить производительность сервера.
Директива: |
|
IdentLookups |
off |
470 |
Часть 9. Программное обеспечение для организации службы FTP-сервера |
используется для определения строкового сообщения, получаемого пользователем при соединении с FTPсервером.
Директива:
Umask |
022 |
используется для задаваемых по умолчанию прав доступа к вновь создаваемым файлам и каталогам. |
|
Раздел Limit Server Context. |
|
В разделе Limit Server |
Context определяются различные ограничения. С использованием ди- |
ректив:
<Limit LOGIN> DenyAll
</Limit>
запрещается любой доступ всем пользователям к FTP-серверу, ниже он будет разрешен только специально определенным пользователям.
Раздел Anonymous Server context.
В разделе Anonymous Server context можно разрешить доступ пользователям к определенным каталогам сервера. Некоторых читателей может дезориентировать название раздела, из которого можно сделать ошибочный вывод, что в нем настраивается анонимный доступ к FTP-серверу. Оставим название раздела на совести разработчиков и перейдем к настройке доступа с аутентификацией пользователей путем использования стандартных модулей PAM.
Директивы:
<Anonymous /home/karl_next>
и
</Anonymous>
определяют блок в конфигурационном файле, содержащий все настройки, касающиеся пользователя karl_next.
Директивы: |
|
User |
karlnext |
Group |
users |
AnonRequirePassword |
on |
<Limit LOGIN> |
|
AllowAll |
|
</Limit>
разрешают доступ к каталогу /home/karl_next пользователю karlnext из группы users после удачной аутентификации с использованием пароля.
Директивы:
HideUser |
root |
HideGroup |
root |
используются для скрытия от пользователя каталогов и файлов, владельцами которых являются соответствующий пользователь и группа пользователей, в рассматриваемом примере – root.
Директивы
<Directory /*> AllowOverwrite on
</Directory>
</Anonymous>
разрешают пользователю karlnext осуществлять перезапись файлов в своем домашнем каталоге.
Шаг 2
Установите права доступа к файлу /etc/proftpd.conf и назначьте его владельцем пользователя
root:
[root@test /]# chmod 640 /etc/proftpd.conf [root@test /]# chown 0.0 /etc/proftpd.conf
Конфигурационный файл /etc/sysconfig/proftpd
Шаг 1
Создайте файл /etc/sysconfig/proftpd и добавьте строки:
#Uncomment the following line if you want to debug ProFTPD. All
#log or debug messages will be send to the syslog mechanism.
#
#OPTIONS="-d 5"
