
- •Тема 1. Основы Unix
- •Структура unix
- •Сравнение Windows 2000 и Unix
- •Сравнение FreeBsd и Linux
- •Командные интерпретаторы Unix
- •Тема 2. Команды интерпретатора
- •2.1 Команды работы с файловой системой
- •2.2 Создание ссылок
- •2.3 Конвейеры и перенаправление ввода-вывода
- •Тема 3. Сценарии
- •3.1 Редактирование исходных файлов
- •3.2 Работа с командным интерпретатором
- •3.3 Переменные
- •3.4 Взаимодействие с пользователем
- •3.5 Арифметические операции в сценариях
- •Тема 4. Операторы сценариев
- •4.1 Операторы цикла
- •4.2 Другие операторы
- •4.3 Арифметические операторы and и or
- •Код завершения
- •Файловые дескрипторы
- •Отладка сценариев
- •4.7 Запись команд
- •Использование специальных символов
- •Тема 5. Файловая система FreeBsd
- •Разделы жесткого диска
- •5.2 Файловые системы
- •Монтирование файловых систем
- •Блоки и индексные дескрипторы
- •5.5 Пользователи и группы
- •5.6 Права доступа к файлам и каталогам
- •5.7 Добавление и удаление учетных записей пользователей
- •5.8 Управление процессами
- •Тема 6. Работа с файлами в Unix
- •6.2 Файловые функции Unix
- •6.3 Пример программы для обработки файла
- •Тема 7. Межмашинное взаимодействие
- •7.1 Сокеты
- •7.2 Функции для программирования сокетов
- •Тема 8. Программирование процессов
- •8.1 Информация о процессах
- •8.2 Создание порожденного процесса
- •8.3 Программные каналы
- •Тема 9. Web и Ftp сервисы
- •9.1 Конфигурирование Web-сервера
- •9.2 Конфигурирование ftp-сервера
- •Подключение к Internet
8.3 Программные каналы
Функция pipe создает прогаммный канал между двумя взаимосвязанными процессами. В частности эта функция создает файл канала, который служит в качестве временного буфера и используется для того, чтобы вызывающий процесс мог записывать и считывать данные другого процесса. Файлу канала имя не присваивается, поэтому он называется неименованным каналом. Прототип функции:
int pipe (int fifo[2]).
Аргумент fifo является массивом, состоящим из двух целых чисел, присваиваемых ему интерфейсом pipe. В большинстве систем Unix канал является однонаправленным, т. е. для чтения данных из канала процесс использует дескриптор файла fifo[0], а для записи данных в канал – другой дескриптор файла fifo[1].
Ниже приводится пример, в котором вызывающий процесс передает другому процессу через канал вещественное число, которое обрабатывается другим процессом и передается обратно.
#include <iostream.h>
#include <stdio.h>
#include <sys/wait.h>
#include <unistd.h>
int main()
{
int child_pid;
int fifo[2], status;
int sf=sizeof(float);
float buf1=2;
pipe(fifo);
write(fifo[1],&buf1,sf);
child_pid=fork();
if (child_pid==0)
{ float buf2;
read(fifo[0],&buf2,sf);
buf2=buf2+1;
write(fifo[1],&buf2,sf);
exit(0);
};
wait(&status);
read(fifo[0],&buf1,sf);
cout << "buf1=" << buf1;
}
Тема 9. Web и Ftp сервисы
9.1 Конфигурирование Web-сервера
В качестве Web-сервера в Unix чаще всего используется Apache (90%). Он может работать с базами данных и выполнять обработку сценариев на Perl.
В отличие от SMTP и FTP протокол HTTP не поддерживает сеансы. Когда клиент соединяется с сервером, позволяет выполнить только один запрос, а потом закрывает соединение.
Если на компьютере с Unix работает Telnet, можно, например, передать запрос на Web-сервер:
имя или адрес
telnet localhost 80
корневой каталог Web- сервера
GET / HTTP/1.0
- завершение тела запроса, в данном случае
тело отсутствует
Здесь будет выдана информация о сервере и файл index.html,
<HTML><BODY> Test</BODY></HTML>
Можно запустить тестовый браузер lynx
lynx localhost
Будет выдано
INDEX OF/
* Parent directopy
* index. html
Далее можно выбрать и открыть файл браузера типа index. html.
Можно также запустить полноценный браузер типа Netscape Communicator, который сразу выдает экран со словом «Test».
Инсталляция сервера выполняется обычно из порта, либо из исходных файлов. Главный файл конфигурации Apache называется httpd.conf. После инсталляции сервер запускается автоматически.
Проверить, запущен ли в системе сервер httpd, можно командой
информация о процессах,
относительно от терминала
ps - x
При этом на экране будет несколько серверов httpd. Так происходит потому, что Apache использует модель порожденных процессов. Главный процесс, владельцем которого является root, прослушивает порт 80 и при поступлении запроса порождает свою копию, владельцем которой является nobody, не обладающий никакими правами.
В ситуации, когда на компьютере запущено более десятка httpd, остановку или перезагрузку нужно применять к главному процессу. Однако лучше для этого использовать команду
apachectl start
apachectl stop
Для определенных частей Web-сайта доступ можно сделать ограниченным.
Допустим, что доступ к определенным файлам или каталогам должен быть ограничен списком фиксированых IP-адресов. Выполнить эту операцию можно на глобальном уровне файлом httpd.conf. Однако гораздо эффективнее воспользоваться файлом .htacces в каталоге, элементы которого нужно защитить.
Пример содержимого файла .htaccess:
Order deny, allow
Deny from all
allow from 100.1.3.4
allow from company.com
Можно также организовать доступ к ресурсам по паролю. Это также делается с помощью .htaccess , но несколько сложнее. Для доступа по паролю еще нужен дополнительный файл .htpassword с именами и паролями пользователей.