Файл: Методические рекомендации к лабораторным работам для студентов направления подготовки.pdf

ВУЗ: Не указан

Категория: Методичка

Дисциплина: Не указана

Добавлен: 24.11.2023

Просмотров: 75

Скачиваний: 6

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.


ГОСУДАРСТВЕННОЕ УЧРЕЖДЕНИЕ
ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ
«БЕЛОРУССКО-РОССИЙСКИЙ УНИВЕРСИТЕТ»
Кафедра «Автоматизированные системы управления»
АДМИНИСТРИРОВАНИЕ
LINUX-СЕРВЕРОВ
Методические рекомендации к лабораторным работам
для студентов направления подготовки
09.03.04 «Программная инженерия»
дневной формы обучения
Могилев 2018

УДК 004.4
ББК 32.973.202
А 31
Рекомендовано к изданию учебно-методическим отделом
Белорусско-Российского университета
Одобрено кафедрой «Автоматизированные системы управления»
«13» марта 2018 г., протокол № 11
Составитель канд. техн. наук, доц. И. А. Евсеенко
Рецензент канд. техн. наук, доц. И. В. Лесковец
Методические рекомендации предназначены для студентов направления подготовки 09.03.04 «Программная инженерия» дневной формы обучения.
Учебно-методическое издание
АДМИНИСТРИРОВАНИЕ LINUX-СЕРВЕРОВ
Ответственный за выпуск
А. И. Якимов
Технический редактор
С. Н. Красовская
Компьютерная верстка
Н. П. Полевничая
Подписано в печать . Формат 60×84/16. Бумага офсетная. Гарнитура Таймс.
Печать трафаретная. Усл. печ. л. . Уч.-изд. л . Тираж 16 экз. Заказ №
Издатель и полиграфическое исполнение:
Государственное учреждение высшего профессионального образования
«Белорусско-Российский университет».
Свидетельство о государственной регистрации издателя, изготовителя, распространителя печатных изданий
№ 1/156 от 24.01.2014.
Пр. Мира, 43, 212000, Могилев.
© ГУ ВПО «Белорусско-Российский университет», 2018

3
Содержание
Введение…………………………………………………………………. 4 1 Лабораторная работа № 1. Установка операционной системы
Linux. Основные принципы функционирования ОС Linux ……….............
5 2 Лабораторная работа № 2. Терминал и командная оболочка операционной системы Linux ………………………………………………..
7 3 Лабораторная работа № 3. Изучение файловой системы и функций по обработке и управлению данными.…..……………………….. 10 4 Лабораторная работа № 4. Процессы в операционной системе Linux ……………………………………………………………..…. 12 5 Лабораторная работа № 5 Организация ввода-вывода в ОС
Linux………………..……….…..……………………………………...…….... 14 6 Лабораторная работа № 6. Создание и выполнение командных файлов в пользовательской среде ОС Linux……………………………….... 16 7 Лабораторная работа № 7. Удаленный доступ в Linux…………..…. 17 8 Лабораторная работа № 8. Управление пользователями и обеспечение безопасности в ОС Linux ……………………………………... 19 9 Лабораторная работа № 9. Администрирование DNS-сервера в ОС Linux.......................................................................................................... 21 10 Лабораторная работа № 10. Маршрутизация в ОС Linux.
Межсетевое экранирование в Linux ……………………………………….... 24 11 Лабораторная работа № 11. Обеспечение доступа в сеть Интернет……………………………………………………………….. 27 12 Требования к отчетам и защите лабораторных работ……………... 31
Список литературы……………….………………..………..………....... 33

4
Введение
Основной материал в приведенных методических рекомендациях посвящен серверным операционным системам семейства Linux.
Целью методических рекомендаций является предоставление возмож- ности самостоятельного освоения студентами основных методов админист- рирования локальных сетей на основе серверных операционных систем Linux, получения практических навыков администрирования, а также изучения перспективных направлений в развитии современных серверных опера- ционных систем Linux.
Целью дисциплины является изучение проблем администрирования Linux серверов, классификации операционных систем и применяемого программного обеспечения для администрирования серверов Linux, а также теоретических и практических основ администрирования локальных сетей на основе операционных систем Linux.
При освоении данной дисциплины студент приобретает практические навыки работы с серверными и клиентскими опрерационными система- ми Linux, создания клиент-серверных приложений, выбора и настройки операционных систем и программного обеспечения для них, диагностирования и устранения неполадок в локальных сетях, инсталлирования, тестирования и настройки конкретных конфигураций операционных систем, работы с различными операционными системами и их администрирования, а также настройка удаленного доступа к серверу и Интернету подключения.

5
1 Лабораторная работа № 1. Установка операционной
системы Linux. Основные принципы функционирования
ОС Linux
Цель работы: изучение архитектуры и принципов функционирования многопользовательской многозадачной операционной системы Linux, особенности ее использования в качестве сервера и рабочей станции.
Система Linux включает следующие основные компоненты.
Ядро. Выполняет функции управления памятью, процессорами. Осуществ- ляет диспетчеризацию выполнения всех программ и обслуживание внешних устройств. Все действия, связанные с вводом/выводом и выполнением системных операций, выполняются с помощью системных вызовов. Системные вызовы реализуют программный интерфейс между программами и ядром.
Имеется возможность динамического конфигурирования ядра.
Диспетчер процессов Init. Активизирует процессы, необходимые для нормальной работы системы и производит их начальную инициализацию.
Обеспечивает завершение работы системы, организует сеансы работы пользователей, в том числе для удаленных терминалов.
Интерпретатор команд Shell. Анализирует команды, вводимые с терминала либо из командного файла, и передает их для выполнения в ядро системы. Команды обычно имеют аргументы и параметры, которые обеспечивают модернизацию выполняемых действий. Shell является также языком программирования, на котором можно создавать командные файлы
(shell-файлы). При входе в ОС пользователь получает копию интерпретатора shell в качестве родительского процесса. Далее, после ввода команды пользователем создается порожденный процесс, называемый процессом- потомком. То есть после запуска ОС каждый новый процесс функционирует только как процесс-потомок уже существующего процесса. В ОС Linux имеется возможность динамического порождения и управления процессами.
Shell-интерпретатор в соответствии с требованиями стандарта POSIX поддерживает графический экранный интерфейс, реализованный средствами языка программирования Tcl/Tk.
Обязательным в системе является интерпретатор Bash, полностью соответствующий стандарту POSIX. В качестве Shell может быть использована оболочка mc с интерфейсом, подобным Norton Commander.
Сетевой графический интерфейс X-сервер (X-Windows). Обеспечивает поддержку графических оболочек.
Графические оболочки KDE, Gnome. Отличительными свойствами KDE являются: минимальные требования к аппаратуре, высокая надежность, интерна- ционализация. Базовые библиотеки KDE (qt, kde-libs) признаны одними из лучших продуктов по созданию графического интерфейса, обеспечивают простое напи- сание программ с использованием передовых технологий. Gnome имеет развитые графические возможности, но более требователен к аппаратным средствам.

6
Сетевая поддержка NFS, SMB, TCP/IP. NFS – программный комплекс
РС-NFS (Network File System) для выполнения сетевых функций. РС-NFS ориентирован для конкретной ОС персонального компьютера (PC) и включает драйверы для работы в сети и дополнительные утилиты. SMB – сетевая файловая система, совместимая с Windows NT. TCP/IP – протокол контроля передачи данных (Transfer Control Protocol/Internet Protocol). Сеть по прото- колам TCP/IP является неотъемлемой частью ОС семейства UNIX. Под- держиваются любые сети, от локальных до Интернета, с использованием только встроенных сетевых средств.
Инструментальные средства программирования. Основой средств программирования является компилятор GCC или его экспериментальные версии EGCS и PGCC для языка С++; модули поддержки других языков программирования (Obective C, Java и др.); интегрированные среды и средства визуального проектирования: Kdevelop, Xwpe; средства адаптации привязки программ AUTOCONFIG, AUTOMAKE.
Задание
1 Загрузите виртуальную машину, используя указанный препода- вателем образ, и выполните настройку компонентов сетевых подклю- чений для работы в сети.
2 Запустите установку операционной системы Linux.
3 Создайте разметку жесткого диска и выберите раздел для установки.
4 Настройте время и дату.
5 Установите поддержку сети.
6 Настройте
Главное меню, регистрацию компонентов и сохраните настройки.
7 Установите драйверы устройств. В процессе установки могут потребо- ваться драйверы для устройств, для которых в БД драйверов системы нет соответствующего драйвера. Если вы занимаетесь в группе под руководством преподавателя, то он предоставит все необходимые драйверы. Если вы занимаетесь индивидуально, то сами позаботьтесь о необходимых драйверах для ваших компьютеров.
Контрольные вопросы
1 Перечислите основные функции и назначение многопользовательской многозадачной операционной системы Linux и ее отличительные особенности от однопрограммной системы DOS.
2 Какое назначение имеет ядро системы и интерпретатор команд?
3 В чем заключается понятие «процесс» и какие операции можно выполнить над процессами?
4 Как задаются и выполняются простые и сложные команды?
5 Какие функции выполняет командный интерпретатор Shell?

7
2 Лабораторная работа № 2. Терминал и командная оболочка
операционной системы Linux
Цель работы: приобрести опыт работы с командной строкой ОС Linux, изучить основные команды (рабочая станция, рабочая директория, пользователи, дата, календарь, список процессов, завершение работы), освоить навыки работы в терминале Linux, научиться создавать новых пользователей при помощи терминала Linux.
Стандартные команды в Linux отличаются от команд DOS и Windows – обычно они короче. При работе с командной строкой как обычно мигающий курсор обозначает позицию ввода текста, командная строка начинается с теку- щего пути и имени компьютера, за которым следует символ $, % или #. Послед- ний означает, что команды будут выполняться от имени суперпользователя root.
Символ означает путь к текущей домашней директории пользователя.
Большинство команд в Linux, не требующих вывода информации пользователю, в случае успешного завершения вообще ничего не выводят на экран. Выводятся только ошибки и предупреждения в случае нарушения нормального выполнения команды. То есть в Linux действует общий принцип
«молчит, значит работает».
В любом терминале Linux стрелками вверх/вниз на клавиатуре можно листать историю команд, которая сохраняется между сеансами работы и разли- чается для разных пользователей и хостов. Набранное частично команда или имя файла или каталога в текущей директории может быть автоматически допи- сано клавишей TAB. Если найдено более одного варианта и однозначно продол- жить команду по TAB невозможно, то выводятся все подходящие варианты.
При работе в графической среде удобны эмуляторы терминала. Как правило они поддерживают закладки – несколько терминалов в одном окне, поддерживают цветовые схемы. Наиболее распространены эмуляторы терминала Gnome Terminal, Konsole, XFCE Terminal.
Терминал – эмулятор консоли. Именно в терминале мы будем работать с
CLI (интерфейсом командной строки). Терминал часто также называют консолью или шеллом (от англ. «shell» – оболочка).
Многие пользователи и в особенности администраторы серверов под Linux в работе используют именно консоль, а не графическую оболочку, это связано с тем, что настройка и конфигурация Linux в основном заключается в редактировании текстовых конфигурационных файлов. Даже если вы являетесь простым пользователем ОС Linux, большинство инструкций по настройке написаны с использованием консоли и необходимо знать основные команды.
Стоит обратить внимание на системные каталоги ОС, в которых находятся файлы, необходимые для управления и сопровождения системы, а также стандартные программы. Их имена, расположение и содержание одинаковы почти во всех ОС Linux, поэтому эти каталоги называют также стандартными.
Впрочем, на данный момент эпитет «стандартные» отражает скорее благие

8 пожелания, чем действительность: иерархия каталогов одинакова только для дистрибутивов, связанных единством происхождения, а исторически сложив- шиеся различия создают опасность несовместимости разных дистрибутивов.
Краткое описание основных каталогов сведено в таблицу 1.
Таблица 1 – Краткое опис а
ние основных каталогов
Каталог
Назначение
/bin
Основные программы, необходимые для работы в системе: командные оболочки, файловые утилиты и т. п.
/sbin
Команды для системного администрирования, а также программы, выпол- няемые в процессе загрузки
/boot
Файлы, необходимые для загрузки системы (образ ядра)
/home
Домашние каталоги пользователей, кроме root
/dev
Файлы устройств
/etc
Файлы настроек: стартовые сценарии, конфигурационные файлы графической системы и различных приложений
/lib
Системные библиотеки, необходимые для основных программ, и модули ядра
/lost+found Восстановленные после аварийного размонтирования части файловой системы
/media
Сюда обычно монтируются съемные носители: компакт-диски, flash- накопители
/mnt
Временные точки монтирования жестких дисков. Использовать этот каталог необязательно: подмонтировать файловую систему можно к любому другому каталогу
/opt
Дополнительные пакеты программ. Если программа, установленная сюда, больше не нужна, то достаточно удалить ее каталог без обычной процедуры деинсталляции
/proc
Виртуальная файловая система, дающая доступ к информации ядра (например, выведите на экран файл/proc/cpuinfo). Другие файлы в этом каталоге в каждый момент времени содержат информацию о выполняющихся в этот момент программах
/root
Домашний каталог суперпользователя. Домашние каталоги всех остальных могут находиться в отдельном разделе, но /root должен быть в корневой файло- вой системе, чтобы администратор всегда мог войти в систему для ремонтных работ
/tmp
Временные файлы
/var
Часто меняющиеся данные: системные журналы и протоколы приложений, замки, почтовые ящики, очереди печати и т. п.
/usr
Практически все остальное: программы, исходные коды, документация. Сюда по умолчанию устанавливаются новые программы
С точки зрения UNIX-подобных ОС, файл представляет собой поток или последовательность байтов. Такой подход позволяет распространить понятие файла на множество ресурсов не только локального компьютера, но и удаленного, связанного с локальной сетью любого рода. Доступ к любому такому ресурсу осуществляется через универсальный интерфейс, благодаря чему запись данных в файл, отправка их на физическое устройство или обмен

9 ими с другой работающей программой происходят аналогично. Это очень упрощает организацию данных и обмен ими.
В ОС Linux можно выделить следующие типы файлов:
– обычные файлы – последовательность байтов (текстовые документы, исполняемые программы, библиотеки и т. п.);
– каталоги – именованные наборы ссылок на другие файлы;
– файлы физических устройств, подразделяющиеся на: а) файлы блочных устройств, драйверы которых буферизуют ввод- вывод с помощью ядра и файлы байт-ориентированных, или символьных устройств, позволяющих связанным с ними драйверам выполнять буферизацию собственными средствами; б) символические ссылки (symlink, symbolic link); в) именованные каналы (named pipes); г) гнезда (sockets).
Задание
1 Для выполнения данной работы будем использовать ранее установ- ленный Linux Ubuntu. Запускаем Linux. После прохождения идентифи- кации включаем терминал.
2 Для ра боты в терминале Ubuntu требуются права пользователя root, но, к сожалению, по умолчанию, он недоступен, поэтому для выполнения некоторых (не всех) команд надо писать sudo <команда>, и подтверждать свои права вводом пароля. И не пугайтесь того, что его не видно в терминале.
3 Для получении справки о дополнительных возможностях некоторых программ следует набрать <команда> --help.
4 Выполните следующие команды:
– date;
– hwclock;
– uname;
– history;
– clear;
– ls.
5 Создайте нового пользователя, при помощи терминала Ubuntu, и введите его в группу admin. Создайте пароль пользователю. Войдите под ним в систему.
Процесс создания и ввода в группу внесите в отчет.
Контрольные вопросы
1 Что такое терминал?
2 Перечислите основные системные каталоги.
3 Расскажите о типах файлов в ОС Linux.

10
3 Лабораторная работа № 3. Изучение файловой системы
и функций по обработке и управлению данными
Цель работы: изучение структуры файловой системы OC Linux, изучение команд создания, удаления, модификации файлов и каталогов, функций манипулирования данными.
Файловая структура системы Linux. В операционной системе Linux файлами считаются обычные файлы, каталоги, а также специальные файлы, соответствующие периферийным устройствам (каждое устройство представ- ляется в виде файла). Доступ ко всем файлам однотипный, в том числе, и к файлам периферийных устройств. Такой подход обеспечивает независимость программы пользователя от особенностей ввода/вывода на конкретное внешнее устройство.
Файловая структура Linux имеет иерархическую древовидную структуру.
В корневом каталоге размещаются другие каталоги и файлы, включая пять основных каталогов:
1) bin – большинство выполняемых командных программ и shell-процедур;
2) tmp – временные файлы;
3) usr – каталоги пользователей (условное обозначение);
4) etc – преимущественно административные утилиты и файлы;
5) dev – специальные файлы, представляющие периферийные устройства; при добавлении периферийного устройства в каталог /dev должен быть добавлен соответствующий файл (черта / означает принадлежность корневому каталогу).
Текущий каталог – это каталог, в котором в данный момент находится пользователь. При наличии прав доступа, пользователь может перейти после входа в систему в другой каталог. Текущий каталог обозначается точкой (.); родительский каталог, которому принадлежит текущий, обозначается двумя точками (..).
Полное имя файла может включать имена каталогов, включая корневой, разделенных косой чертой, например: /home/student/file.txt. Первая косая черта обозначает корневой каталог, и поиск файла будет начинаться с него, а затем в каталоге home, затем в каталоге student.
Один файл можно сделать принадлежащим нескольким каталогам. Для этого используется команда ln (link): ln <имя файла 1> <имя файла 2>.
Имя первого файла – это полное составное имя файла, с которым устанавливается связь; имя второго файла – это полное имя файла в новом каталоге, где будет использоваться эта связь. Новое имя может не отличаться от старого. Каждый файл может иметь несколько связей, т. е. он может использоваться в разных каталогах под разными именами. Команда ln с аргументом -s создает символическую связь:

11 ln -s <имя файла 1> <имя файла 2>.
Здесь имя второго файла является именем символической связи. Символи- ческая связь является особым видом файла, в котором хранится имя файла, на который символическая связь ссылается. Linux работает с символической связью не так, как с обычным файлом – например, при выводе на экран содержимого символической связи появятся данные файла, на который эта символическая связь ссылается.
В Linux различаются 3 уровня доступа к файлам и каталогам:
1) доступ владельца файла;
2) доступ группы пользователей, к которой принадлежит владелец файла;
3) остальные пользователи.
Для каждого уровня существуют свои байты атрибутов, значение которых расшифровывается следующим образом: r – разрешение на чтение; w – разрешение на запись; x – разрешение на выполнение;
– – отсутствие разрешения.
В домашнем каталоге пользователь имеет полный доступ к файлам (READ,
WRITE, EXECUTE; r, w, x).
Атрибуты файла и доступ к нему можно изменить командой chmod <коды защиты> <имя файла>.
Коды защиты могут быть заданы в числовом или символьном виде. Для символьного кода используются: знак плюс (+) – добавить права доступа; знак минус (–) – отменить права доступа; r, w, x – доступ на чтение, запись, выполнение.
Коды защиты в числовом виде могут быть заданы в восьмеричной форме.
Для контроля установленного доступа к своему файлу после каждого измене- ния кода защиты нужно проверять свои действия с помощью команды ls -l.
  1   2   3   4


Задание
1 Ознакомтесь с файловой структурой ОС. Изучите команды работы с файлами.
2 Используя команды ОС, создайте два текстовых файла.
3 Полученные файлы объедините в один файл и его содержимое выведите на экран.
4 Создайте новую директорию и переместите в нее полученные файлы.
5 Выведите полную информацию обо всех файлах и проанализи- руйте уровни доступа.
6 Добавьте для всех трех файлов право выполнения членам группы и остальным пользователям.
7 Просмотрите атрибуты файлов.

12 8 Создайте еще один каталог.
9 Установите дополнительную связь объединенного файла с новым каталогом, но под другим именем.
10 Создайте символическую связь.
11 Сделайте текущим новый каталог и выведите на экран расширенный список информации о его файлах.
12 Произведите поиск заданной последовательности символов в файлах текущей директории и получите перечень соответствующих файлов.
13 Получите информацию об активных процессах и имена других пользователей.
Контрольные вопросы
1 Что считается файлами в OC Linux?
2 Объясните назначение связей с файлами и способы их создания.
3 Что определяет атрибуты файлов и каким образом их можно просмот- реть и изменить?
4 Какие методы создания и удаления файлов, каталогов вы знаете?
5 В чем заключается поиск по шаблону?
6 Какой командой можно получить список работающих пользователей и сохранить его в файле?
4 Лабораторная работа № 4. Процессы в операционной
системе Linux
Цель работы: изучение процессов в операционной системе Linux.
Лабораторная работа посвящена процессам операционной системы Linux.
Поскольку администрирование операционной системы в конечном счете сво- дится к управлению процессами. Каждый раз при запуске программы на выпол- нение создается процесс. Процессом называется выполняемая в данный момент программа или ее потомки. Каждый процесс запускается от имени какого-то пользователя. Процессы, которые стартовали при загрузке, обычно выполняются от имени пользователей root или nobody.
Каждый пользователь может управлять поведением процессов, им запущен- ных. При этом пользователь root может управлять всеми процессами – как запу- щенными от его имени, так и процессами, порожденными другими пользовате- лями операционной системы. Управление процессами осуществляется с помощью утилит, а также посредством некоторых команд командной оболочки shell.
Каждый процесс в системе имеет уникальный номер – идентификационный номер процесса (Process Identification, PID). Этот номер используется ядром опера- ционной системы, а также некоторыми утилитами для управления процессами.
Выполнение процесса на переднем плане и в фоновом режиме.

13
Процессы могут выполняться на переднем плане (foreground) — режим по умолчанию и в фоновом режиме (background). На переднем плане в каждый момент для текущего терминала может выполняться только один процесс.
Однако пользователь может перейти в другой виртуальный терминал и запус- тить на выполнение еще один процесс, а на другом терминале еще один и т. д. Процесс переднего плана – это процесс, с которым взаимодействует пользователь. Этот процесс получает информацию с клавиатуры (стандартный ввод) и посылает результаты на экран (стандартный вывод).
Фоновый процесс после своего запуска благодаря использованию спе- циальной команды командной оболочки отключается от клавиатуры и экрана, т. е. не ожидает ввода данных со стандартного ввода и не выводит информацию на стандартный вывод, а командная оболочка не ожидает окончания запущенного процесса, что позволяет пользователю немедленно запустить еще один процесс.
Обычно фоновые процессы требуют очень большого времени для своего завершения и не требуют вмешательства пользователя во время существования процесса. К примеру, компиляция программ или архивирование большого объема информации – кандидаты номер один для перевода процесса в фоновый режим.
Процессы могут быть отложенными. Отложенный процесс – это процесс, который в данный момент не выполняется и временно остановлен. После того как процесс остановлен, он может быть продолжен как на переднем плане, так и в фоновом режиме. Возобновление приостановленного процесса не изменит его состояния – при возобновлении он начнется с того места, на котором был приостановлен.
Для выполнения программы в режиме переднего плана достаточно просто набрать имя программы в командной строке и запустить ее на выполнение.
После этого вы можете работать с программой.
Для запуска программы в качестве фонового процесса достаточно набрать в командной строке имя программы и в конце добавить знак амперсанта (&), отделенный пробелом от имени программы и ее параметров командной строки, если таковые имеются. Затем программа запускается на выполнение.
Задание
1
Запустите программу shell в фоновом режиме с подавлением потока вывода.
2 Запустите программу shell на переднем плане с подавлением потока вывода. Приостановите выполнение программы. Заново запустите программу shell с теми же параметрами и завершите ее выполнение.
3 Запустите программу shell на переднем плане без подавления потока вывода. Приостановите выполнение программы. Заново запустите программу shell с теми же параметрами, и завершите ее выполнение.
4 Проверьте состояния процессов, воспользовавшись командой jobs.
5 Переведите процесс, который у вас выполняется в фоновом режиме на передний план и остановите его.
6 Переведите любой ваш процесс с подавлением потока вывода в фоновый режим.

14 7 Проверьте состояния процессов, воспользовавшись командой jobs. Обра- тите внимание, что процесс стал выполняющемся (Running) в фоновом режиме.
8 Запустите процесс в фоновом режиме таким образом, чтобы он продол- жил свою работу даже после отключения от терминала.
9 Закройте окно и заново запустите консоль. Убедитесь, что про- цесс продолжил свою работу.
Контрольные вопросы
1 Объясните, что произойдет, если запустить программу в фоновом режиме без подавления потока вывода.
2 Объясните разницу между действием сочетаний клавиш ^Z и ^C.
3 Опишите, что значит каждое поле вывода команды jobs.
4 Назовите главное отличие утилиты top от ps.
5 Лабораторная работа № 5. Организация ввода-вывода
в ОС Linux
Цель
работы: изучение средств управления потоками ввода/вывода в ОС Linux.
Работа со стандартными потоками ввода, вывода и ошибок. Любая программа – это «автомат», предназначенный для обработки данных: получая на входе одну информацию, она в результате работы выдает другую. Хотя входящая и/или выходящая информация может быть и нулевой, т. е. попросту отсутствовать. Те данные, которые передаются программе для обработки – это ее ввод, то, что она выдает в результате работы, – вывод. Организация ввода и вывода для каждой программы – это задача операционной системы.
Каждая программа работает с данными определенного типа: текстовыми, графическими, звуковыми и т. п. Как, наверное, уже стало понятно, основной интерфейс управления системой в Linux – это терминал, который предназначен для передачи текстовой информации от пользователя системе и обратно.
Поскольку ввести с терминала и вывести на терминал можно только текстовую информацию, то ввод и вывод программ, связанных с терминалом, тоже должен быть текстовым. Однако необходимость оперировать с текстовыми данными не ограничивает возможности управления системой, а, наоборот, расширяет их.
Человек может прочитать вывод любой программы и разобраться, что проис- ходит в системе, а разные программы оказываются совместимыми между собой, поскольку используют один и тот же вид представления данных – текстовый.
Команды и сценарии могут получать входные данные двумя способами: из стандартного входного потока (связан с клавиатурой) или из файла. Анало- гичное разделение существует и при выводе данных: результаты работы команды или сценария по умолчанию направляются на экран терминала, но можно перенаправить их в файл. Если в процессе работы возникают ошибки,

15 сообщения о них тоже отображаются на экране, поток ошибок также можно перенаправить в файл.
Рассмотрим сначала пару команд, с помощью которых можно организовать ввод/вывод.
Команды вывода на стандартное устройство вывода. Linux предоставляет несколько команд для вывода сообщений в стан- дартный поток вывода: echo – вывести строку в стандартный поток вывода; printf – вывести форматированный текст в стандартный поток вывода; yes – выводить повторяющийся текст в стандартный поток вывода; seq – вывести последовательность чисел в стандартный поток вывода; clear – очистить экран или окно.
Например, при использовании команды echo, если указать управляющий символ \с, то по завершении вывода не будет осуществлен переход в новую строку:
$ echo "Как вас зовут?\c"
В строке также можно вычислять значения переменных интерпретатора shell и даже других команд.
Большое число утилит используют только стандартные потоки. Для таких программ оболочка позволяет независимо перенаправлять потоки ввода/вывода.
Например, можно подавить вывод сообщений об ошибках, установить ввод или вывод из файла.
То есть при вызове команд можно указывать, откуда следует принимать входные данные и куда необходимо направлять выходные данные, а также сообщения об ошибках. По умолчанию, если не указано иное, подразумевается работа с терминалом: данные вводятся с клавиатуры и выводятся на экран. Но интерпретатор shell располагает механизмом переадресации, позволяющим ассоциировать стандартные потоки с различными файлами. При этом во время перенаправления стандартного потока ошибок следует указывать дескриптор файла. Для потоков ввода и вывода делать это не обязательно.
Однако, в отличие от DOS при создании программного канала между двумя процессами ОС UNIX/Linux запускает оба процесса одновременно и осуществ- ляет передачу информации через системный буфер (без промежуточной записи на жесткий диск). Таким образом, программные каналы в ОС UNIX/Linux являются весьма эффективным способом обмена. В случае переполнения системного буфера (например, если «передающая» программа выдает инфор- мацию в канал быстрее, чем ее может обработать «принимающая» программа)
ОС автоматически приостанавливает тот процесс, который осуществляет запись в канал до освобождения буфера.
Задание
Разработать скрипт вычисления суммы двух чисел. Исходные данные запрашивать у пользователя, запустившего скрипт на выполнение. Результаты работы скрипта вывести на консоль.

16
Примечание – Скрипт – исполняемый файл, содержащий последовательность команд и операторов. Запуск скрипта с именем name_script в консоли выполняется одним из двух способов: с помощью команды sh - $ sh name_script; путем назначения файлу права выполнения и запуска, например, из текущей директории - $ ./name_script.
Контрольные вопросы
1 Что такое скрипт?
2 Опишите способы запуска скриптов.
3 Объясните следующую команду sh - $ sh name_script.
4 Что такое назначение файлу права выполнения и запуска?
6 Лабораторная работа № 6. Создание и выполнение
командных файлов в пользовательской среде ОС Linux
Цель работы: изучение методов создания и выполнения командных файлов на языке Shell-интерпретатора.
Shell является языком программирования, который применяется для написания командных файлов (shell-файлов). Командные файлы также называются скриптами и сценариями. Shell-файл содержит одну или несколько выполняемых команд (процедур), а имя файла в этом случае используется как имя команды.
Для обозначения переменных Shell используется последовательность букв, цифр и символов подчеркивания; переменные не могут начинаться с цифры.
Присваивание значений переменным проводится с использованием знака = , например, РS2 = '<' . Для обращения к значению переменной перед ее именем ставится знак $.
Переменные -; ?; #; $; ! устанавливаются только Shell. Они позволяют с помощью команды echo получить следующую информацию:
– – текущие флаги интерпретатора (установка флагов может быть изменена командой set);
# – число аргументов, которое было сохранено интерпретатором при выполнении какой-либо команды;
? – код возврата последней выполняемой команды;
$ – числовой идентификатор текущего процесса PID;
! – PID последнего фонового процесса.
Задание
Составьте и выполните shell-программы, включающие следующие действия:
1) вывод на экран списка параметров командной строки с указанием номера каждого параметра;
2) присвоение переменным А, В и С значений 10, 100 и 200, вычисление и вывод результатов по формуле D = (A*2 + B/3)*C;
3) формирование файла со списком файлов в домашнем каталоге, вывод на

17 экран этого списка в алфавитном порядке и общего количества файлов;
4) переход в другой каталог, формирование файла с листингом каталога и возвращение в исходный каталог;
5) запрос и ввод имени пользователя, сравнение с текущим логическим именем пользователя и вывод сообщения: верно/неверно;
6) запрос и ввод имени файла в текущем каталоге и вывод сообщения о типе файла;
7) циклическое чтение системного времени и очистка экрана в заданный момент;
8) циклический просмотр списка файлов и выдача сообщения при появлении заданного имени в списке.
Контрольные вопросы
1 Какое назначение имеют shell-файлы?
2 Как создать shell-файл и сделать его выполняемым?
3 Какие типы переменных используются в shell-файлах?
4 В чем заключае тся анализ цепочки символов?
5 Какие встроенные команды используются в shell-файлах?
6 Как производится управление программами?
7 Назовите операторы создания циклов.
7 Лабораторная работа № 7. Удаленный доступ в Linux
Цель работы: получить начальные навыки работы с удаленным хос- том по протоколу ssh.
Средства удаленного управления серверами широко используются как в локальных, так и в глобальных сетях. Основное назначение таких средств – организация канала передачи (в общем случае – через шлюз) команд управ- ления сервером и возврат клиенту результата выполнения этих команд. Поэтому одними из основных требований к программам удаленного управления явля- ются прозрачность для пользователя и небольшой трафик. Это позволяет централизованно управлять территориально распределенными узлами с одного рабочего места или представлять доступ удаленным терминальным клиентам по медленным линиям связи.
Сетевые шлюзы. Подключение локальных сетей к Интернет обычно реализуется через коммуникационный сервер – шлюз (gateway). Такой сервер обычно работает под управлением какой-нибудь версии UNIX (FreeBSD, Debian
GNU/Linux, RHEL и т. п.) и имеет как минимум два сетевых интерфейса: один внутренний, к которому подключена ЛВС, второй – внешний, обращенный в
Интернет. На шлюзе настроена маршрутизация, подняты сервисы NAT и прокси.
Для управления используются как символьные протоколы (telnet, rlogin, ssh), так и бинарные, поддерживающие графические возможности. Для выде-

18 ленных серверов графические средства как правило не используются, поскольку такие серверы не подразумевают использование их как рабочих стан- ций. Это означает, что нет необходимости выделять ресурсы для графического пользовательского интерфейса.
Текстовые протоколы tenet и rlogin просты и функциональны, но небезопасны. Исходя из указанных соображений в текущей работе предпо- лагается освоение удаленного управления UNIX-сервером по протоколу ssh.
Следует отметить, что протокол ssh поддерживает и работу с графическим режимом (тунеллирование X-сервера). Более того, протокол ssh позволяет туннеллировать любой сетевой трафик, использующий в качестве транспорта протокол TCP.
Для управления сервером по протоколу ssh необходима его поддержка сервером и клиентское ssh-приложение. UNIX-серверы стандартно поддержи- вают протокол ssh. В качестве клиента, как правило, используется OpenSSH
(вызывается командой ssh). Для Windows имеются клиенты разных производи- телей, наиболее популярные PuTTY и SecureCRT. В лабораторной работе предполагается использование клиента OpenSSH.
Подключение к серверу. Для подключения к серверу необходимо выполнить команду ssh, указав в качестве параметров имя пользователя и имя или сетевой адрес сервера: aag@stilo:> ssh -l student edu.asoiu // -l student - логин; edu.asoiu - ssh- сервер
Или так: aag@stilo:> ssh student@edu.asoiu
Если вы выполните ssh, не задав имя пользователя, то серверу будет отправлено имя текущего локального пользователя.
При первом ssh подключении к удалённой машине, вы увидите подобное сообщение:
The authenticity of host 'edu.asoiu' can't be established.
DSA key fingerprint is 94:68:3a:3a:bc:f3:9a:9b:01:5d:b3:07:38:e2:11:0c.
Are you sure you want to continue connecting (yes/no)?
Введите yes для продолжения. При этом сервер будет добавлен в ваш список известных серверов, о чём говорит следующее сообщение:
Warning: Permanently added 'edu.asoiu' (DSA) to the list of known hosts.
Затем будет выведено приглашение для ввода пароля удалённого компьютера. После авторизации на сервере пользователь попадает в оболочку
UNIX (как правило это одна из версий shell, зависит от настроек сервера) и может приступать к вводу команд.
Задание
С помощью команды ssh определите тип операционной системы, аппарат- ную платформу и версию ядра сервера (команда uname с соответствующими

19 параметрами) без загрузки оболочки сервера.
С помощью ssh-клиента подключитесь к серверу edu.asoi c учетной записью student.
Определите, какой каталог является текущим на удаленном сервере. Если он отличается от /home/student, то выполните переход в /home/student.
Определите, какие пользователи, в каких терминалах и с каких IP-адресов подключены к серверу (команда who).
В текущем каталоге создайте каталог (например, ivanov).
Запустите файловый менеджер mc, просмотрите содержимое текущего каталога.
Завершите работу с файловым менеджером mc.
Завершите сеанс ssh.
Не входя в сеанс ssh, загрузите в ранее созданный вами на сервере каталог произвольный файл (команда scp).
Не входя в сеанс ssh, просмотрите содержимое серверного каталога /home/student .
1   2   3   4


Контрольные вопросы
1 Назначение команды ssh.
2 Опишите способ подключения к серверу с помощью ssh-клиента.
3 Как определить, какой каталог является текущим на удаленном сервере?
4 Назначение команды who.
8 Лабораторная работа № 8. Управление пользователями
и обеспечение безопасности в ОС Linux
Цель работы: приобрести опыт запуска и настройки общесистемных сервисов (конфигурирования системы), управления пользователями и обеспечения безопасности.
Для создания группы используется команда addgroup, напри- мер, addgroup g301.
Для создания пользования используется команда adduser, например, adduser anton passwd anton. При создании группы, пользователя в файлы passwd, group каталога /etc вносится информация о пользователе и группе. Одна учетная запись соответствует одному пользователю и одной группе. Учетная запись пользователя содержит следующую информацию:
– имя пользователя;
– пароль в закодированном виде;
– целочисленный идентификатор пользователя;
– целочисленный идентификатор группы;
– комментарий;

20
– каталог пользователя;
– интерпретатор команд. Например, anton:*:100:1000::/home/usr:/bin/bash.
Учетная запись группы содержит следующую информацию: имя группы; пароль в закодированном виде; целочисленный идентификатор группы; список имен пользователей группы. Например, g301:*:1000: anton.
Чтобы удалить пользователя или группу используются команды: userdel, delgroup соответственно.
Чтобы изменить пользовательскую, групповую принадлежность, исполь- зуются команды chown, chgrp. Например, chown user file1 chgrp it402 file1.
Изменение пароля осуществляется командой passwd, например, passwd anton. Введите пароль, повторите пароль, тем самым вы измените пароль указанному пользователю.
Права доступа к файлам и каталогам. Права доступа к файлам разделяются на три категории: права владельца файла, права группы, связанной с файлом, и права всех остальных пользователей. Каждая категория имеет свой набор прав доступа к файлу, которые обеспечивают возможность чтения из файла, записи в файл и его выполнения (или, наоборот, запрещают эти действия). Права доступа называются также режимом доступа к файлу. Режимы доступа к файлу устанавливаются с помощью команды chmod.
Задание
1 Добавьте в систему нового пользователя.
2 Войдите в систему под пользователем root.
3 Добавьте в систему пользователя с именем student (используйте команды useradd и passwd):
Useradd student Passwd student
4 После ввода команды passwd student, на экране появится сообщение:
Enter new password:
Вы должны задать пароль для пользователя (не менее 5 символов) и нажать
. Обратите внимание, что при вводе пароля, он не отображается на экране. После этого выведется сообщение:
Re-enter new password:
Вы должны ещё раз ввести тот же самый пароль, который был вами задан для пользователя student. После нажатия на клавишу на экран выведется: Password changed.
Итак, вы зарегистрировали нового пользователя в системе и задали ему пароль, теперь можно зайти под этим пользователем, воспользовавшись командой login: [home/dsl]# login Box login: student Password:
После ввода пароля вы увидите приглашение: student@tty0[/]$
Введите команду whoami и убедитесь в том, что вы зашли в систему под пользователем student. Для завершения работы с пользователем воспользуйтесь командой logout.


21
Контрольные вопросы
1 Какие основные каталоги содержатся в корневом каталоге в Linux?
2 Какую команду необходимо использовать, чтобы просмотреть содержимое каталога?
3 Как обозначаются родительский каталог и домашний каталог пользова- теля? Какая команда используется для навигации по файловой системе?
4 Как запустить текстовый редактор vi? Какие клавиши нужно нажать, чтобы начать вводить текст в этом текстовом редакторе? Как сохранить текст и выйти из программы vi?
5 Как удалить всю строку целиком в текстовом редакторе vi? Какие ещё команды vi для работы с текстом вы знаете?
6 Как просмотреть содержимое текстового файла?
7 Какой командой осуществляется поиск в файле и вывод на экран строк, содержащих заданный текст?
8 Какие существуют права доступа к файлам и каталогам? Как задать права для файла, чтобы он был доступен только для чтения для всех пользователей?
9 Как войти в систему Linux? Как добавить, удалить нового пользователя?
10 Как завершить работу с системой Linux?
11 Для чего предназначена программа Midnight Commander?
12 Почему нужно быть особенно осторожным при работе в системе Linux под пользователем root?
13 Что означают права доступа к файлу, обозначенные числом 762? Какие команды нужно знать, чтобы добавить пользователя в систему? Как удалить пользователя в Linux?
9
Лабораторная
работа
№ 9. Администрирование
DNS-сервера в ОС Linux
Цель работы: изучить понятие доменных имен, разобраться c назначением и принципом функционирования службы доменных имен (DNS), ознакомиться с базовыми понятиями протокола DNS, научиться устанавливать и настраивать простейший вариант DNS сервера.
Домен – область (ветвь) иерархического пространства доменных имён сети
Интернет, которая обозначается уникальным доменным именем.
Доменное имя – символьное имя домена. Должно быть уникальным в рам- ках одного домена. Полное имя домена состоит из имён всех доменов, в которые он входит, разделённых точками. Например, полное имя www.tu-bryansk.ru. (с точкой в конце) обозначает домен третьего уровня www, который входит в домен второго уровня tu-bryansk, который входит в домен .ru, который входит в корневой домен. Доменное имя служит для адресации узлов

22 сети Интернет и расположенных на них сетевых ресурсов (веб-сайтов, серверов электронной почты, сетевых сервисов) в удобной для человека форме.
Доменная зона – совокупность доменных имён определённого уровня, входящих в конкретный домен. Например, зона ctam.tu-bryansk.ru. означает все доменные имена третьего уровня в этом домене. Термин «доменная зона» в основном применяется в технической сфере, при настройке DNS-серверов
(поддержание зоны, делегирование зоны, трансфер зоны).
Для обеспечения уникальности и защиты прав владельцев доменные имена
1-го и 2-го (в отдельных случаях и 3-го) уровней можно использовать только после их регистрации, которая производится уполномоченными на то регист- раторами. Сведения о владельце (администраторе) того или иного регистрируе- мого домена общедоступны. Их можно узнать, воспользовавшись службой
«whois» – например, http://www.ripn.net:8080/nic/whois.
Домены верхнего уровня общего назначения:
.aero – для субъектов авиатранспортной индустрии;
.biz
– только коммерческие организации;
.cat
– для использования каталанским языковым и культур- ным сообществом;
.com – коммерческие организации (без ограничений);
.coop – кооперативы;
.edu – высшие учебные заведения, признаваемые в качестве таковых
Департаментом образования США;
.info – информационные ресурсы (без ограничений);
.jobs – кадровые агентства;
.mobi – для продавцов и поставщиков мобильного контента и услуг, связанных с мобильной связью;
.museum – музеи;
.name – физические лица;
.net – организации, имеющие отношение к функционированию Интернета
(без ограничений);
.org – некоммерческие организации (без ограничений);
.pro – сертифицированные профессионалы и смежные темы;
.travel – для субъектов туристического бизнеса.
Домены верхнего уровня, назначаемые странам.
Для удобства распределения и назначения доменных имен для каждой из стран были выделены собственные (в основном двухсимвольные) домены верхнего уровня. Правда, это вовсе не означает обязательную привязку серверов в данных доменах к их географическому расположению. Примеры доменов первого уровня для стран:
.au –
Australia
(Австралия);
.be
– Belgium (Бельгия);
.ru
– Russia (Россия);
.ua –
Ukraine
(Украина);
.uk
– United Kingdom (Англия).
Служба трансляции имен в Интернете.


23
Первоначально преобразование между доменными и IP-адресами производилось с использованием специального текстового файла
DHOSTS.TXT, который составлялся централизованно и обновлялся на каждой из машин сети вручную. С ростом Сети возникла необходимость в эффективном, автоматизированном механизме, которым и стала DNS (Domain
Name System) – система доменных имен.
Примечание – На самом деле на каждой сетевой машине имеется текстовый файл hosts
(Windows – %windir%\system32\drivers\etc\hosts; *nix – /etc/hosts), в котором можно самостоя- тельно сопоставлять с некоторым IP-адресом доменные имена. Правда, эти действия валидны только для текущей машины.
Функции DNS. Существуют два принципиально разных способа идентификации хостов: с помощью имен и с помощью IP-адресов. Имя хоста удобно для людей в силу своей мнемоничности, а IP-адрес, являющийся компактной числовой величиной фиксированного размера, проще обрабатывать прикладными программами и маршрутизаторами. Для того чтобы установить связь между этими двумя идентификаторами, используется система доменных имен. DNS представляет собой, с одной стороны, базу данных, распределенную между иерархически структурированными серверами имен, и, с другой сторо- ны, протокол прикладного уровня, организующий взаимодействие между хостами и серверами имен для выполнения операций преобразования.
DNS функционирует на принципе делегирования полномочий. Каждая машина либо знает ответ на вопрос, либо знает кого спросить. При правильном функционировании система замкнута, т. е. если запрошенная информация имеется у кого-либо, то она будет найдена и сообщена клиенту, либо, если вопрос не имеет ответа, клиент получит сообщение о невозможности получения ответа на вопрос.
Обратный DNS-запрос (Reverce DNS). DNS используется в первую очередь для преобразования символьных имён в IP-адреса, но он также может выполнять обратный процесс. Для этого используются уже имеющиеся средства DNS. Дело в том, что с записью DNS могут быть сопоставлены раз- личные данные, в том числе и какое-либо символьное имя. Существует спе- циальный домен in-addr.arpa., записи в котором используются для преобразования IP-адресов в символьные имена. Например, для получения
DNS-имени для адреса 192.168.128.5 можно запросить у DNS-сервера запись
5.128.168.192.in-addr.arpa, и тот вернёт соответствующее символьное имя.
Обратный порядок записи частей IP-адреса объясняется тем, что в IP-адресах старшие биты расположены в начале, а в символьных DNS-именах старшие
(находящиеся ближе к корню) части расположены в конце.
Одна из проблем состоит в том, что обратную зону можно выделить только на сетях класса A, B или C (на 16777216, 65536 или 256 адресов соответст- венно) и никак иначе (маски здесь не работают).
Установка и настройка DNS сервера Ubuntu. Для начала нужно установить самые последние обновления системы: sudo apt-get update sudo apt-get upgrade.