ЛАБОРАТОРНИЙ ПРАКТИКУМ
з навчальної дисципліни
МЕРЕЖЕВІ ОПЕРАЦІЙНІ СИСТЕМИ
Методичні вказівки
для студентів базових напрямів “Інформаційна безпека”
Затверджено
на засіданні кафедри БІТ
Протокол № _____
від “___”________ 20___ р.
ЗМІСТ
1. Тематика та план виконання робіт 3
2. Методика оцінювання та зміст звіту 3
3. Лабораторні роботи 4
3.1. Лабораторна робота 1. Вступ у операцiйну систему Linux 4
3.2. Лабораторна робота 2: Основнi команди операцiйної системи Linux 6
3.3. Лабораторна робота 3: Потоковий редактор sed, утилiта обробки даних awk 8
3.4. Лабораторна робота 4: Основи Bash 11
3.5. Лабораторна робота 5: Загальне ознайомлення iз системними викликами операцiйної системи Linux. 13
3.6. Лабораторна робота 6: Функцiї opendir, readdir, closedir, rewinddir, seekdir, telldir, scandir. 17
3.7. Лабораторна робота 7: Засоби мiжпроцесної взаємодiї Linux 18
4. Додаток 1: Системнi виклики операцiйної системи Linux. 21
Тематика та план виконання робіт
Номер роботи
Назва роботи
Кількість годин
1
Вступ у операцiйну систему Linux
2
2
Основнi команди операцiйної системи Linux
2
3
Потоковий редактор sed, утилiта обробки даних awk
2
4
Основи Bash
2
5
Загальне ознайомлення iз системними викликами операцiйної системи Linux
2
6
Функцiї opendir, readdir, closedir, rewinddir, seekdir, telldir, scandir
2
7
Засоби мiжпроцесної взаємодiї Linux
2
Всього годин:
14
Методика оцінювання та зміст звіту
Лабораторні роботи є обов’язковою складовою процесу вивчення дисципліни «Мережеві операційні системи», тому для отримання допуску до складання іспиту з цієї дисципліни кожен студент повинен виконати та захистити всі передбачені викладачем лабораторні роботи. Для захисту лабораторної роботи студент надає викладачеві звіт. Звіт з кожної лабораторної роботи містить:
титульну сторінку,
завдання,
чітко викладену студентом мету роботи,
суть роботи згідно з викладеним порядком роботи,
стисло сформульовані висновки.
Звіти (у роздрукованому та зшитому вигляді) подають на захист на початку наступної лабораторної роботи. Обсяг кожного звіту – до 4-х друкованих (шрифтом 12) стандартних аркушів.
Захист лабораторної роботи відбувається у формі устної бесіди викладача зі студентом та шляхом демонстрації останнім здобутих в результаті виконання роботи навичок на комп’ютері. Викладач оцінює лабораторну роботу за п'ятибальною шкалою.
Лабораторні роботи
3.1. Лабораторна робота 1. Вступ у операцiйну систему Linux
Мета роботи
познайомитися з поняттями операцiйної системи Linux: консоль, вiддаленi термiнали, оболонка;
познайомитися з процедурою реєстрацiї користувача в системi;
познайомитися з поняттям файл та каталог, iменуванням файлiв, типами файлiв в операцiйної системи Linux, поняттям права доступу до файлiв та каталогiв;
познайомитися з поняттями операцiйної системи Linux: стандартний ввiд-вивiд, перенаправлення вводу-виводу, конвеєри, фiльтри..
Теоретичний вступ
Поняття операційної системи Linux: консоль, вiддаленi термiнали, оболонка описані у роздiлi "Консоль, виртуальные терминалы и оболочка" книжки В.Костромiна "Linux для пользователя" та роздiлi "Что такое оболочка?" [1].
Процедура реєстрацiї користувача в системі описана в роздiлi "Вход в систему" [1].
Поняття файл та правила iменування файлiв в Linux приводяться в роздiлi "Файлы и их имена" [1], а поняття каталог в роздiлi "Каталоги" [1].
Опис типiв файлiв Linux'а знаходиться в роздiлi "Типы файлов" [1], а вiдомостi про права доступу - в роздiлi "Права доступа к файлам и каталогам" [1].
Поняття стандартний ввiд-вивiд описане в роздiлi "Стандартный ввод/вывод" [1].
Поняття перенаправлення вводу-виводу, конвеєри, фiльтри описанi в роздiлi "Перенаправление ввода/вывода, каналы и фильтры" [1].
Порядок роботи
Використовуючи вище приведений "Теоретичний вступ", познайомитися з поняттями консоль, вiддаленi термiнали, оболонка, процедурою реєстрацiї користувача в системi, поняттям файл та каталог, iменуванням файлiв, типами файлiв, поняттям права доступу, з поняттями стандартний ввiд-вивiд, перенаправлення вводу-виводу, конвеєри, фiльтри..
Використовуючи login i password, зареєструватися в операцiйнiй системi.
Використовуючи вище приведений опис та утилiту man, познайомитися та потренуватися у використаннi команд w, who, pwd, ls -l, cd, ps ax.
Використовуючи вище приведений опис, приклади з роздiлу "Перенаправление ввода/вывода, каналы и фильтры" [1] та iндивiдуальне завдання вiд викладача, потренуватися у перенаправленнi вводу/виводу та використаннi конвеєрiв.
Контрольнi питання
Що розумiють пiд поняттям термiнал в операцiйнiй системi UNIX/Linux?
Що таке вiддалений термiнал?
З допомогою яких команд можна припинити роботу з термiналом?
Що розумiють пiд поняттям оболонка в операцiйнiй системi UNIX/Linux?
З допомогою якої команди можна отримати довiдку iз вбудованих команд оболонки?
Що розумiють пiд поняттям супер користувач в операцiйнiй системi UNIX/Linux?
Для чого призначена процедура реєстрацiї користувача в системi?
Яким чином в системi створюються новi користувачi?
Якi дiї виконує команда w?
Якi дiї виконує команда ?
Якi дiї виконує команда pwd?
Якi дiї виконує команда ls?
Якi дiї виконує команда ls -l?
Якi дiї виконує команда cd?
Якi дiї виконує команда ps?
Якi дiї виконує команда ps ax?
Що розумiють пiд поняттям файл в операцiйнiй системi UNIX/Linux?
Що розумiють пiд поняттям каталог в операцiйнiй системi UNIX/Linux?
Якi правила запису iмен файлiв (каталогiв) в операцiйнiй системi UNIX/Linux?
Якi iснують типи файлiв в операцiйнiй системi UNIX/Linux?
Що розумiють пiд поняттям права доступу в операцiйнiй системi UNIX/Linux?
Яким чином в системi видається iнформацiя про "права доступу"?
Якi значення приймає перший елемент ланцюжка символiв про "права доступу" i що вони означають?
Яка ще iнформацiя видається в ланцюжку символiв про "права доступу"?
Якою командою можна змiнити "права доступу"?
Чим вiдрiзняється трактування "прав доступу" для каталога у порiвняннi з трактуванням його для файлiв?
Що розумiють пiд поняттям стандартний ввiд в операцiйнiй системi UNIX/Linux?
Що розумiють пiд поняттям стандартний вивiд в операцiйнiй системi UNIX/Linux?
Що розумiють пiд поняттям стандартний потiк повiдомлень про помилки в операцiйнiй системi UNIX/Linux?
Яким чином в оболонцi здiйснюється перенаправлення стандартного вводу?
Яким чином в оболонцi здiйснюється перенаправлення стандартного виводу?
Яким чином в оболонцi здiйснюється перенаправлення стандартного потоку повiдомлень про помилки?
Для чого використовується оператор ">>" при перенаправленнi виводу?
Яким чином в оболонцi органiзовуються "конвеєри"?
Що розумiють пiд поняттям фiльтр в оболонцi операцiйної системи UNIX/Linux?
Назвiть декiлька прикладiв команд-фiльтрiв.
Вимоги до звiту
В звiтi до лабораторної роботи необхiдно привести:
Назву лабораторної роботи.
Мету лабораторної роботи.
Результати виконання команд w, who, pwd, ls -l, ps ax.
Короткий висновок.
3.2. Лабораторна робота 2: Основнi команди операцiйної системи Linux
Мета роботи
познайомитися з основними командами роботи з файлами та каталогами;
познайомитися з командами встановлення прав доступу та власника файла;
познайомитися з основними командами вiдображення вмiстимого файлiв;
познайомитися з iншими часто вживаними командами.
Теоретичний вступ
Основними командами роботи з файлами та каталогами є команди ls, pwd, touch, file, mkdir, rmdir, cp, mv, rm.
Командою змiни прав доступу є chmod, команда chown дозволяє змiнити власника файла, а команда chgrp - групи власникiв файлу.
Основними командами вiдображення вмiстимого текстових файлiв є команди cat, more, less, head, tail, nl. Взагалi, основним призначенням команди cat (скорочення вiд conatenate) є конкатенацiя декiлькох файлiв, але вона також може використовуватися для перегляду текстових файлiв. Для перегляду вмiстимого нетекстових файлiв використовується команда od.
Iншими командами, з якими будемо знайомитися у цiй лабораторнiй роботi, будуть команди tr, wc, sort.
На всi перелiченi вище команди в операцiйнiй системi є файли допомоги man. З командою chmod можна також познайомитися в роздiлi "Права доступа к файлам и каталогам" книжки В.Костромiна "Linux для пользователя" [1, Kostromin0405].
Порядок роботи
Використовуючи man ls познайомитися з командою ls та її опцiями -1, -l, -a, -F, -X, -t, -S, -R .
Використовуючи man pwd познайомитися з командою pwd.
Використовуючи man touch познайомитися з командою touch.
Використовуючи man file познайомитися з командою file.
Використовуючи man mkdir познайомитися з командою mkdir.
Використовуючи man rmdir познайомитися з командою rmdir.
Використовуючи man cp познайомитися з командою cp та її опцiями -i, -R .
Використовуючи man mv познайомитися з командою mv.
Використовуючи man rm познайомитися з командою rm та її опцiєю -i.
Використовуючи man chmod познайомитися з командою chmod.
Використовуючи man chown познайомитися з командою chown.
Використовуючи man chgrp познайомитися з командою chgrp.
Використовуючи man cat познайомитися з командою cat.
Використовуючи man more познайомитися з командою more та засобами навiгацiї i пошуку цiєї команди.
Використовуючи man less познайомитися з командою less та засобами навiгацiї i пошуку цiєї команди.
Використовуючи man head познайомитися з командою head та її опцiєю -n.
Використовуючи man tail познайомитися з командою tail та її опцiєю -n.
Використовуючи man nl познайомитися з командою nl.
Використовуючи man od познайомитися з командою od.
Використовуючи man tr познайомитися з командою tr.
Використовуючи man wc познайомитися з командою wc.
Використовуючи man sort познайомитися з командою sort.
Потренуватися у використаннi усiх цих тих команд.
Контрольнi питання
Яким чином виводиться iнформацiя командою ls при використаннi опцiї -1?
Яким чином виводиться iнформацiя командою ls при використаннi опцiї -l?
Яким чином виводиться iнформацiя командою ls при використаннi опцiї -a?
Яким чином виводиться iнформацiя командою ls при використаннi опцiї -F?
Яким чином виводиться iнформацiя командою ls при використаннi опцiї -X?
Яким чином виводиться iнформацiя командою ls при використаннi опцiї -t?
Яким чином виводиться iнформацiя командою ls при використаннi опцiї -S?
Яким чином виводиться iнформацiя командою ls при використаннi опцiї -R?
Яке призначення команди touch?
Яке призначення команди file?
Яке призначення команди mkdir?
Яке призначення команди rmdir?
Як змiниться виконання команди cp при використаннi опцiї -i?
Як змiниться виконання команди cp при використаннi опцiї -R?
Яке призначення команди mv?
Яке призначення команди rm та як змiниться виконання команди при використаннi опцiї -i?
Як виглядає команда chmod, коли використовуються символьне задання бiтiв повноважень?
Як виглядає команда chmod, коли використовуються числове задання бiтiв повноважень?
Яке призначення команди chown?
Яке призначення команди chgrp?
Яке призначення команди cat?
Якi є засоби навiгацiї в командах more та less i як ця навiгацiя здiйснюється?
Яким чином виконується пошук в командах more та less i як вiн здiйснюється?
Чим вiдрiзняється функцiонування команди less вiд команди more?
Яке призначення команди head?
Яке призначення опцiї -n команди head?
Яке призначення команди tail?
Яке призначення опцiї -n команди tail?
Яке призначення команди nl?
Яке призначення команди od?
Яке призначення команди tr?
Яке призначення команди wc?
Якi є опцiї в командиwc?
Яке призначення команди sort?
Якi є опцiї в команди sort?
Вимоги до звiту
В звiтi до лабораторної роботи необхiдно привести:
Назву лабораторної роботи.
Мету лабораторної роботи.
Результати виконання тих команд, якi були отриманi при виконаннi iндивiдуального завдання заданого викладачем.
Короткий висновок.
3.3. Лабораторна робота 3: Потоковий редактор sed, утилiта обробки даних awk
Мета роботи
познайомитися з призначенням та командами потокового текстового редактора sed;
познайомитися з призначенням утилiти awk та мовою обробки шаблонiв утилiти awk;
навчитися редагувати текстовi файли з допомогою потокового редактора sed та використовувати утилiту sed як фiльтр редагування файлiв;
навчитися записувати шаблони утилiти awk та використовувати утилiту awk як фiльтр обробки даних.
Теоретичний вступ
sed - неiнтерактивний текстовий редактор, призначений для пакетного редагування файлiв. Вiн особливо зручний для виконнання однiєї ж i тiєї функцiї редагування багато раз, а також для редагування файлiв, якщо послiдовнiсть команд редагування надто довга та складна для iнтерактивного редагування.
Основним документом для знайомства з потоковим редактором sed є man sed. Також ряд прикладiв роботи з sed є в статтi Ольги Галiної " Неинтерактивный текстовый редактор SED" [2] та в посiбнику "sed и awk (учебное пособие)" [3].
Утилiта awk - один з найпотужнiших iнструментiв для контекстного пошуку та перетворення текстiв. Завдяки гнучкiй мовi програмування awk можна створювати короткi програми, якi читають вхiднi файли, сортують данi, опрацьовують їх, виконують математичнi дiї, генерують звiти тощо.
Основним документом для знайомства з утилiтою awk є man awk. Крiм того, для знайомства з awk можна використати статтю " Язык обработки данных AWK" [4] О. Галiної та посiбник "sed и awk (учебное пособие)" [3].
Порядок роботи
Використовуючи login i password, зареєструватися в операцiйнiй системi Linux.
Використовуючи команду man sed, познайомитися з двома форматами виклику sed, опцiями редактора, з адресацiєю рядкiв редагованого тексту, iз правилами запису регулярних виразiв, з командами текстового редактора sed.
Потренуватися у використаннi sed для редагуваннi тексту. Команди редагування записати в окремий файл. Серед команд повиннi бути всi основнi команди редагування та повиннi використовуватися регулярнi вирази.
Потренуватися у використаннi sed як фiльтра
Використовуючи команду man awk, познайомитися з
форматами виклику awk
мовою програмування AWK:
структурою AWK-програми
змiнними поля
AWK-змiнними та виразами
шаблонами
регулярними виразами
дiєю виводу
дiєю присвоювання
вбудованими функцiями
керуючими структурами
Потренуватися у використаннi awk для опрацювання тексту, використовуючи рiзно манiнтнi елементи мови AWK, з якими ознайомилися у попередньому пунктi
Потренуватися у використаннi awk як фiльтра
Контрольнi питання
Яке призначення потокового редактора sed?
Який формат команди виклику потокового редактора sed?
Що означає параметр "-e script" команди виклику потокового редактора sed?
Що означає параметр "-f sfile" команди виклику потокового редактора sed?
Який формат команд редагування потокового редактора sed?
Яке призначення команди a потокового редактора sed?
Яке призначення команди c потокового редактора sed?
Яке призначення команди d потокового редактора sed?
Яке призначення команди i потокового редактора sed?
Яке призначення команди p потокового редактора sed?
Яке призначення команди q потокового редактора sed?
Яке призначення команди r потокового редактора sed?
Яке призначення команди s потокового редактора sed?
Якi є модифiкацiї команди s потокового редактора sed?
Яке призначення команди y потокового редактора sed?
Яке призначення команди !cmd потокового редактора sed?
Яке призначення команди w потокового редактора sed?
Яке призначення команди g потокового редактора sed?
Яке призначення команди G потокового редактора sed?
Яке призначення команди h потокового редактора sed?
Яке призначення команди H потокового редактора sed?
Яким чином регулярнi вирази використовуються для адресацiї в потоковому редакторi sed?
З яких символiв конструюються регулярнi вирази в потоковому редакторi sed?
Яке призначення утилiти awk?
Якi формати команди виклику утилiти awk?
Що означає параметр "-f file" команди виклику утилiти awk?
Яка структура файла з AWK-програмою?
Що означає параметр "prog" команди виклику утилiти awk?
Яка структура "програми" при використаннi параметра prog?
Що розумiють пiд поняттям "поле" в мовi програмування AWK?
Як записуються змiннi поля в awk?
Якi стандартнi змiннi використовуються в awk?
Як записуються арифметичнi вирази в awk?
Якi правила запису шаблонiв в awk?
Як задаються дiї в awk?
Вимоги до звiту
В звiтi до лабораторної роботи необхiдно привести:
Назву лабораторної роботи.
Мету лабораторної роботи.
Лiстинг файлу iз командами потокового редактора sed, якi використовувалися для редагування заданого файлу.
Лiстинги AWK-програм, якi використовувалися для обробки текстових файлiв пiд час тестування рiзних елементiв мови AWK.
Короткий висновок.
3.4. Лабораторна робота 4: Основи Bash
Мета роботи
познайомитися з призначенням та основними можливостями оболонки bash;
познайомитися з основними правилами написання сценарiїв оболонки bash;
познайомитися з середовищем оболонки bash та правилами розкривання команд оболонки.
Теоретичний вступ
Оболонка bash (як i решта програм операцiйної системи) постiйно розвивається i, тому, найбiш точною документацiєю є info bash (та man bash) конкретної системи. Досить добрим посiбником з оболонки bash є посiбник Machtelt Garrels "Bash beginners guide". Ярослав Федевич та його команда зробли переклад цього посiбника. Першi три роздiли посiбника "Bash beginners guide (1-3)" знаходяться у файлі [6].
Порядок роботи
Використовуючи login i password, зареєструватися в операцiйнiй системi Linux.
Використовуючи команду info bash (та man bash), познайомитися з призначенням оболонки bash та основними її функцiми.
Використовуючи info bash та посiбник "Bash beginners guide (1-3)" , познайомитися з:
iншими програмами-оболонками;
особливостями оболонки bash;
вбудованими командами оболонки;
виконанням команд оболонкою;
структурою сценарiю;
написанням та iменуванням сценарiїв;
запуском сценарiїв;
виконанням сценарiїв;
налагодженням сценарiїв;
файлами iнiцiалiзацiї оболонки;
конфiгурацiйними файлами оболонки;
змiнними оболонки;
створенням змiнних оболонки;
експортуванням змiнних оболонки;
зарезервованими змiнними оболонки;
позицiйними параметрами оболонки;
особливими параметрами оболонки;
символами екранування;
правилами розкривання елементiв команд сценарiїв оболонки;
створенням та видаленням псевдонiмiв;
вiдображенням та змiни опцiй оболонки.
Базуючись на отриманiй у попередньому пунктi iнформацiї, написати невеликi сценарiї та протестувати використання позицiйних параметрiв, змiнних оболонки та пiдстановкою команд.
Контрольнi питання
Яке призначення оболонки bash?
Де у файловiй системi знаходиться програма bash?
Яку послiдовнiсть дiй виконує оболонка bash, коли зчитує та виконує команду?
Що таке сценарiй оболонки?
Яким чином виконується сценарiй оболонки?
У якому випадку сценарiй не потребує прав на виконання?
Як задається оболонка, яка буде запускати сценарiй?
Якi правила запису коментарiв в сценарiях?
Якi iснують засоби вiдлагодження сценарiїв?
Якi iснують загальносистемнi файли iнiцiалiзацiї оболонки?
Якi iснують користувацькi файли налаштування оболонки?
Якi типи змiнних використовуються оболонкою bash?
З допомогою якої команди можна переглянути глобальнi змiннi оболонки?
З допомогою якої команди можна переглянути локальнi змiннi оболонки?
Як створюються користувацькi змiннi?
Яким чином здiйснюють експортування змiнних в дочiрний процес (оболонку)?
Що таке зарезервованi змiннi?
Наведiть приклади зарезервованих змiнних оболонки.
Що таке позицiйнi параметри оболонки?
Що таке особливi параметри оболонки?
Для чого в оболонцi використовуються символи екранування?
Для чого в оболонцi використовуються одинирнi лапки (апострофи)?
Для чого в оболонцi використовуються подвiйнi лапки?
Для чого в оболонцi використовуються символи екранування?
Як здiйснюється розкривання фiгурних дужок?
Яким чином розкриваються параметри та змiннi оболонки?
Яким чином виконується пiдстановка команд?
Для чого в оболонцi bash використовуються псевдонiми?
Як в оболонцi створюються та видаляються псевдонiми?
Якою командою можна переглянути опцiї оболонки?
Яким чином можна змiнити опцiї оболонки?
Вимоги до звiту
В звiтi до лабораторної роботи необхiдно привести:
Назву лабораторної роботи.
Мету лабораторної роботи.
Тексти сценарiїв оболонки, в яких тестувалися використання позицiйних параметрiв, змiнних оболонки та пiдстановка команд.
Короткий висновок.
Iндивiдуальнi завдання до лабораторних робiт з Bash знаходяться у файлі [7].
3.5. Лабораторна робота 5: Загальне ознайомлення iз системними викликами операцiйної системи Linux.
Мета роботи
Познайомитися iз повним набором системних викликiв операцiйної системи Linux та призначенням i синопсисом найвживанiших системних викликiв.
Теоретичний вступ
Ядро ОС виконується в привiлейованому режимi работи процесора. Для виконання мiжпроцесної операцiї чи операцiї,яка вимагає доступу до обладнання, програма звертається до ядра, яке, в залежносi вiд повноважень викликаючого процесу, виконує чи вiдмовляє у виконаннi такого виклику. Таке звертання до ядра ОС називають системним викликом.
Веpсiї Linux 0.99.2 налiчувала 116 системних виклики, версiя 2.2.14 має 162 найменування, а версiя 2.6.18 – 243 (див. Список системних викликів у Додатку 1. Документацiя до них можна знайти безпосpедньо в самiй документацiї по Linux.
Iснують процедури, якi дозволять встановити свiй власний системний виклик.
В Linux/UNIX системнi виклики майже один до одного вiдповiдають бiблiотечним функцiям, якi використовуються для звертання до системного виклику. Тому у цiй лабораторнiй роботi ми фактично знайомимося iз вiдповiдними бiблiотечними функцiями.
Уточнимо деякi поняття важливi при ознайомленнi iз системними викликами:
Ядро ОС Linux - програма, що забезпечує роздiлення часу центрального процесора мiж процесами, що виконуються, здiйснює управлiння пам'яттю та пристроями вводу-виводу, реалiзує файлову систему.
Системнi виклики представлять собою iнтерфейс мiж програмами користувача i ядром операцiйної системи Linux (чи UNIX). Реалiзацiя системних викликiв - одна iз функцiй ОС Linux.
Iдентифiкатор процесу (PID). Кожний активний процес в системi iдентифiкується унiкальним цiлим додатнiм числом, яке називається "iдентифiкатором процесу". Дiапазон представлення iдентифiкатора процеса - вiд 0 до PROC_MAX (значення PROC_MAX встановлюються при генерацiї системи).
Iдентифiкатор процеса-предка (PPID). Iдентифiкатор процеса, який породив даний процес (див. опис виклику fork).
Iдентифiкатор групи процесiв. Кожний активний процес є членом якої-небудь групи процесiв. Як iдентифiкатор групи процесiв використовується iднтифiкатор процеса старшого в групi (спiльно предка всiх процесiв групи). Об'єднання процесiв в групу дозволяє працювати з групою, як з одним об'єктом, наприклад , передавати сигнал всiм процесам групи.
Реальнi iдентифiкатори користувача i групи (UID i GID). Кожний користувач системи iдентифiкуєтьсяцiлим додатнiм числом, яке називається "iдентифiкатором користувача". Крiм того, користувач може бути членом однiєї чи декiлькох груп. Групи вiдрiзняються одна вiд одної специфiчними правами доступу. Додатнє цiле число, поставлене у вiдповiднiсть групi, називається "iдентифiкатором групи". Процеси мають реальнi идентифiкатори користувача i групи, значення яких рiвнi вiдповiдним iдентифiкаторам користувача, який iнiцiював даний процес. Реальнi iдентифiкактори успадковуються всiма нащадками процеса.
Ефективнi iдентифiкатори користувача i групи, список груп доступу. Доступ до системних ресурсiв визначається трьома значеннями: "ефективним iдентифiкатором користувача", "ефективним iдентифiкатором групи" i "списком груп доступу". Ефективний iдентифiкатор користувача i групи при стартi процеса переважно спiвпадають з реальними. Виняток становлять випадки, коли статус виконуваного файла мiстить ознаки set-UID i set-GID (див. опис виклику execve). Список груп доступу разом з iдентифiкатором групи використовується для визначення прав доступу до системних ресурсiв.
Привiлейований користувач i привiлейований процес. Процес вважається привiлейованим, тобто отримує винятковi права доступу, до всiх ресурсiв, якщо його єфективний iдентифiкатор користувача рiвний нулю.
Системнi процеси. Процеси з iдентифiкаторами 0, 1 вважаються системними. Це - планувальник (процес 0), який iнiцiалiзує процес, який одночасно є предком усiх решта процесiв (процес 1).
Дескриптор. Унiкальне цiле додатнє число, яке ставиться системою у вiдповiднiсть файлу, при його вiдкриттi. В процесi роботи дискриптор використовується процесом чи його нащадками при виконаннi конкретних операцiй з файлом.
Iм'я файла. Послiдовнiсть вiд одного до {FILENAME_MAX} симвлоiв, якi використовуються для iменування звичайних файлiв, директорiй чи спецiальних файлiв. В iменi файла можна використовувати будь-якi символи коду ASCII, за винятком керуючого коду 0 (NUL) i символу "/". Не рекомендується використовувати в iменах файлiв символи, якi мають спецiальне значення в мовi упрпвлiння завданнями (типу "*", "?").
Повне iм'я файла. Це послiдовнiсть iмен каталогiв роздiлених символом "/", якi передують iменi файла. Повне iм'я файла мiстить iнформацiю про положення каталогу з файлом в деревi файлiв. Якщо повне iм'я починається iз символа "/" (абсолютна адресацiя), воно вказує положення каталогу з файлом вiдносно кореня дерева файлiв. Iм'я, яке починається з будь-якого iншого символа, вказує положення каталога з файлом вiдносно поточного каталога. Довжина повного iменi файла не може перевищувати {PATHNAME_MAX} символiв.
Каталог. Спецiальний тип файла, який мiстить iнформацiю про файли, якi можуть адресуватися з даного каталога без вказання повного iменi (тобто по iменi файла). Будь-який каталог мiстить щонайменше двоє iмен "." i "..". Вони вiдповiдають даному каталогу (".") i каталогу, в який даний каталог входить (".."), так званий, батькiвський каталог.
Кореневий i поточний (робочий) каталог. Кожному процесу поставленi у вiдповiднiсть кореневий i робочий каталог, якi використовуються для пошуку конкретних файлiв за їх именем. Кореневий каталог процесу може не спiвпадати з кореневим каталогом системи.
Режим доступу до файла. Режим доступу визначає права процесу на виконання операцiй над файлом (наприклад, вiдкривання файла на запис). Режим доступу є приналежнiстю файла i встановлюється при його створеннi. Режим може перевизначатися з допомогою виклику chmod. Режим доступу мiстить iнформацiю про можливостi читання, запису та виконання файла для трьох груп користувачiв: власника файла, членiв його групи i всiх решта користувачiв. Для каталога ознака "виконання" iнтерпретується як право перегляду її вмiстимого. Процес отримує доступ до файла, якщо:
процес виконується в привiлейованому режимi;
ефективний iдентифiкатор процесу спiвпадає з iдентифiкатором власника файла i режим доступу дозволяє виконання замовленої операцiї;
ефективний iдентифiкатор процесу не спiвпадає з iдентифiкатором власника, але iдентифiкатор групи файла спiвпадає з ефективним iдентифiкатором групи процеса чи входить в список груп доступа процеса (при цьому режим доступу для групи дозволяє виконання замовленої операцiї);
якщо ефективнi iдентифiкатори i список груп доступу процеса не вiдповiдають iдентифiкаторам файла, але режим доступу файла дозволяє виконання вказаної операцiї для всiх iнших користувачiв.
В решті випадків процес не отримує доступу до файла.
Порядок роботи
Використовуючи програму Telnet i ввiвши login i password, пiд'єднатися до Linux-сервера.
Використовуючи команду man syscalls, познайомитися iз повним списком системних викликiв операцiйної системи Linux.
Використовуючи команду man, провести аналiз призначень системних викликi, розбиваючи їх на наступнi групи:
ввiд-вивiд файлiв;
робота з каталогами;
керування пам'яттю;
робота з процесами (створення, завершення, тощо);
диспетчерування процесiв;
засоби мiжпроцесних комунiкацiй;
робота з мережею;
засоби роботи iз сигналами;
служба часу;
засоби видачi iнформацiї про операцiйну систему;
забезпечення роботи iз модулями.
Використовуючи команду man, познайомитися iз синопсисом, призначення, а також i вiповiдними структурами (struct) наступних системних викликiв:
open(2), create(2), read(2), write(2), close(2),
umask(2),
stat(2), fstat(2), lstat(2),
lseek(2),
readdir(2), getdents(2),
fork(2), execve(2), wait(2), exit(2), kill(2).
Використовуючи команду man, познайомитися iз призначення наступних системних викликiв:
access(2), chmod(2), fchmod(2), chown(2),
setuid(2), getuid(2),
link(2), unlink(2), symlink(2),
mknode(2), socket(2),
fcntl(2),
rename(2),
chdir(2), fchdir(2),
mkdir(2), rmdir(2),
ioctl(2),
pause(2),
nice(2),
uname(2),
getpid(2), setpid(2),
geteuid(2), setreuid(2),
alarm(2), time(2), stime(2),
gettimeofday(2), settimeofday(2),
times(2),
create_module(2), init_module(2),
delete_module(2), get_kernel_syms(2).
Отримати iндивiдуальне завдання на наступну лабораторну роботу.
Вимоги до звiту
В звiтi до лабораторної роботи необхiдно привести:
повний список системних викликiв;
список системних викликiв iз розбиттям на групи (по 5-10 викликiв в групi);
призначення i синопсис системних викликiв перелiчених в пунктi 3; а для системних викликiв stat i readdir ще i структури stat i dirent - вiдповiдно;
призначення системних викликiв перелiчених в пунктi 4.
3.6. Лабораторна робота 6: Функцiї opendir, readdir, closedir, rewinddir, seekdir, telldir, scandir.
Мета роботи
Познайомитися i навчитися використовувати функцiї для роботи з директорiями opendir, readdir, closedir, rewinddir, seekdir, telldir, scandir операцiйної системи Linux.
Познайомитися (чи згадати i закрiпити) з механiзмом передачi параметрiв у програму.
Теоретичний вступ
В операцiйнiй системi Linux (як i в UNIX) каталог (директорiя) - це файл, який мiстить список iмен файлiв та деяку iнформацiю про те, де вони розмiщенi. "Мiсце розмiщення" - це iндекс, який запезпечує доступ в iншу таблицю, яка називається "список вузлiв inode". Для кожного файла є свiй inode, де зiбрана вся iнформацiя про файл за винятком його именi. Кожен елемен каталогу складається iз двох частин: iз именi файла та номера inode.Формат i точне вмiстиме каталогiв не одинаковi у рiзних версiях операцiйної системи. Тому операцiйна система надає вiдповiднi засоби. Цi засоби включають структуру dirent i функцiї opendir, readdir, closedir, якi забезпечують системно-незалежний доступ до iменi файла i номера вузла inode кожного елемента каталогу.
В операцiйнiй системi Linux (як i UNIX, MS DOS та iнших) використовується зручний механiзм передачi даних (параметрiв) у програму. Для отримання параметрiв з операцiйної системи заголовок програми повинен мати наступний вигляд:
int main (int argc, char **argv)
Перший параметр argc вказує на кiлькiсть параметрiв програми. Другий параметр argv є вказiвником на на масив рядкiв, якi мiстять власне параметри. Перший параметр вказує на iм'я програми, що викликається, так що значення argc нiколи не буває менше за 1. Якщо argc дорiвнює 1, то в командному рядку пiсля iменi програми iнших параметрiв нема.Так для команди
echo Hello, world!
argc рiвний 3, а вiдповiдно argv[0], argv[1], i argv[2] є рядками "echo", "Hello," i "world!" вiдповiдно.Крiм того, згiдно iз стандартом, argv[argc] є порожнiм вказiвником.
Наприклад, отримати iм'я програми можна з допомогою оператора.
program_name = argv[0];
Порядок роботи
Використовуючи програму Telnet i ввiвши login i password, пiд'єднатися до Linux-сервера.
Використовуючи команду man, познайомитися iз функцiями opendir, readdir, closedir, rewinddir, seekdir, telldir, scandir .
Ввести, вiдкомпiлювати та вiдлагодити програму, пiдготовлену згiдно iз iндивiдуальним завданням, яка використовує цi системнi виклики. Шлях до директорiї, вмiстиме якої сканується, повинен передаватися як параметр програми.
Вимоги до звiту
В звiтi до лабораторної роботи необхiдно привести:
назву лабораторної роботи.
мету лабораторної роботи.
призначення i синопсис функцiй opendir, readdir, closedir, seekdir, scandir;
призначення функцiй rewinddir, telldir;
опис структури dirent;
лiстинг вiдлагодженої програми, написаної згiдно iз iндивiдуальним завданням та результати роботи;
висновки.
3.7. Лабораторна робота 7: Засоби мiжпроцесної взаємодiї Linux
Мета роботи
Познайомитися iз принципами мiжпроцесної взаємодiї операцiйної системи Linux.
Познайомитися iз системними викликами мiжпроцесної взаємодiї операцiйної системи Linux..
Теоретичний вступ
Наявнiсть в Unix-системах простих i ефективних засобiв взаємодiї мiж процесами вплинуло на програмування в Unix не менше, ніж представлення об'єктiв системи у виглядi файлiв. Завдяки межпроцеснiй взаємодiї (Inter-Process Communication, IPC) разробник (i користувач) може розбити розв'язок складної задачi на декiлька простих операцiй, кажна з яких виконується окремою невеликою програмою.
До засобiв взаємодiї мiж процесами вiдносятся як вiдносно простi засоби - неiменованi та iменованi канали (pipes), так складнiшi - засоби передачi повiдомлень мiж процесами, спiльна (роздiлювана) пам'ять та семафори.
В операцiйнiй системi Linux засоби мiжпроцесної взаємодiї реалiзованi з допомогою вiдповiдних системних викликiв.
Простi засоби мiжпроцесної взаємодiї описанi в роздiлi 2 книжки Андрiя Боровського "Програмування для Linux", ч.2 [11], а засоби передачi повiдомлень мiж процесами, спiльна (роздiлювана) пам'ять та семафори в роздiлi 3 - "Програмування для Linux", ч.3 [12]. До цiєї книжки додається компактдиск з програмами. Ось посилання на цi тексти: "Тексти програм", ч.2 [13], "Тексти програм", ч.3 [14].
Порядок роботи
Використовуючи "Програмування для Linux", ч.2 [11] познайомитися iз особливостями використання системнимих викликiв popen i pclose та принципами побудови в Linux неiменованих та iменованих каналiв.
Використовуючи "Програмування для Linux", ч.3 [12] познайомитися iз механiзмом повiдомлень Linux, використанням спiльної (роздiлюваної) пам'ятi, використанням семафорiв як механiзму синхронiзацiї.
Використовуючи програму Telnet i ввiвши login i password, пiд'єднатися до Linux-сервера.
Використовуючи команду man, познайомитися iз призначенням, синопсисом та параметрами системних викликiв popen, pclose, pipe, mkfifo, msgget, msgsnd, msgrcv, msgctl, shmget, shmat, shmdt, shmctl, semget, semop, semctl та бiблiотечною функцiєю ftok;
Вiдкомпiлювати, вiдлагодити та дослiдити роботу програм, якi приведенi в "Тексти програм", ч.2 [13] та "Тексти програм", ч.3 [14].
Контрольнi питання
Яке призначення системних викликiв popen, pclose?
Яке призначення неiменованих каналiв?
Яке призначення iменованих каналiв?
У чому полягає вiдмiннiсть неiменованих та iменованих каналiв?
У чому суть механiзму повiдомлень Linux?
Яка структура повiдомлення?
Що таке ключ черги?
Якi ставляться вимоги до ключа черги?
Яке призначення системного виклику msgget()?
Якi є параметри у системного виклику msgget()?
Якi значення може приймати другий параметр (msgflg) системного виклику msgget()?
Яке призначення системних викликiвmsgsnd() i msgrcv()?
Якi параметри системних викликiвmsgsnd() i msgrcv()?
Яке призначення системного виклику msgctl()?
Яке значення приймає другий параметр системного виклику msgctl()?
Що розумiють пiд поняттям "спiльна (роздiлювана) пам'ять в Linux?
Яким чином використовується роздiлювана пам'ять для мiжпроцесної взаємодiї?
Яке призначення системного виклику shmget()?
Якi є параметри у системного виклику shmget()?
Яке призначення системного виклику shmat()?
Якi є параметри у системного виклику shmat()?
Яке призначення системного виклику shmdt()?
Якi є параметри у системного виклику shmdt()?
Яке призначення системного виклику shmctl()?
Якi є параметри у системного виклику shmctl()?
Яке призначення системного виклику semget()?
Якi є параметри у системного виклику semget()?
Яке призначення системного виклику semop()?
Якi є параметри у системного виклику semop()?
Яке призначення системного виклику semctl()?
Якi є параметри у системного виклику semctl()?
Вимоги до звiту
В звiтi до лабораторної роботи необхiдно привести:
назву лабораторної роботи;
мету лабораторної роботи;
призначення, синопсис та параметри системних викликiв popen, pclose, pipe, mkfifo, msgget, msgsnd, msgrcv, msgctl, shmget, shmat, shmdt, shmctl, semget, semop, semctl та бiблiотечної функцiєї ftok;
лiстинги дослiджуваних програм;
висновки.
Додаток 1: Системнi виклики операцiйної системи Linux.
Linux, Slackware Linux, Fedora
ядро 2.2.14 ядро 2.6.18
====================================================
1 _llseek(2) 1 _llseek(2)
2 _newselect(2) 2 _newselect(2)
3 _sysctl(2) 3 _sysctl(2)
4 accept(2)
4 access(2) 5 access(2)
5 acct(2) 6 acct(2)
6 adjtimex(2) 7 adjtimex(2)
7 afs_syscall 8 afs_syscall
8 alarm(2) 9 alarm(2)
9 bdflush(2) 10 bdflush(2)
11 bind(2)
10 break 12 break
11 brk(2) 13 brk(2)
14 cacheflush(2)
15 capget(2)
16 capset(2)
12 chdir(2) 17 chdir(2)
13 chmod(2) 18 chmod(2)
14 chown(2) 19 chown(2)
20 chown32
15 chroot(2) 21 chroot(2)
16 clone(2) 22 clone(2)
17 close(2) 23 close(2)
24 connect(2)
18 creat(2) 25 creat(2)
19 create_module(2) 26 create_module(2)
20 delete_module(2) 27 delete_module(2)
21 dup(2) 28 dup(2)
22 dup2(2) 29 dup2(2)
23 execve(2) 30 execve(2)
24 exit(2) 31 exit(2)
25 fchdir(2) 32 fchdir(2)
26 fchmod(2) 33 fchmod(2)
27 fchown(2) 34 fchown(2)
35 fchown32
28 fcntl(2) 36 fcntl(2)
37 fcntl64
29 fdatasync(2) 38 fdatasync(2)
30 flock(2) 39 flock(2)
31 fork(2) 40 fork(2)
32 fstat(2) 41 fstat(2)
42 fstat64
33 fstatfs(2) 43 fstatfs(2)
34 fsync(2) 44 fsync(2)
35 ftime 45 ftime
36 ftruncate(2) 46 ftruncate(2)
47 ftruncate64
37 get_kernel_syms(2) 48 get_kernel_syms(2)
49 getcwd(2)
38 getdents(2) 50 ...