- •Тема 1. Мережеві операційні системи, ос FreeBsd
- •Контрольні питання
- •Література
- •Тема 2. Ядро ос FreeBsd і управління програмним забезпеченням
- •Література
- •Тема 3. Мережева підсистема FreeBsd
- •Література
- •Тема 4. Маршрутизація трафіку в ос FreeBsd
- •Література
- •Тема 5. Динамічне налаштування мережевих інтерфейсів
- •Література
- •Тема 6. Засоби фільтрації трафіку
- •Література
- •Тема 7. Трансляція мережевих адрес
- •Література
- •Тема 8. Служба доменних імен
- •Література
- •Тема 9. Поштові служби. Протоколи smtp, pop3
- •Література
- •Тема 10. Протокол imap
- •Література
- •Тема 11. Обмін файлами у мережах. Протокол ftp
- •Література
- •Тема 12. Обмін файлами у мережах. Nfs, smb, BitTorrent
- •Література
- •Тема 13. Веб-сервер на основі ос FreeBsd
- •Література
- •Тема 14. Проксі –сервер. Сервіси моніторингу
- •Література
- •Тема 15. Захищені віртуальні канали. Стек протоколів ipSec
- •Література
Контрольні питання
На що необхідно звертати увагу при виборі мережевої операційної системи?
Чим FreeBSD відрізняється від дистрибутивів Linux?
Сфери застосування FreeBSD.
За допомогою якої утиліти проводиться розмітка диску при встановлення FreeBSD?
Які два основні розділи файлової системи FreeBSD?
Якою командою можна перезавантажити систему і які для цього повинні бути права?
Що таке ZFS?
Яка структура мережевої ОС?
Чи можливо в операційній системі FreeBSD використовувати графічний режим, і якщо так що для цього потрібно?
Загальні риси Unix систем.
Література
FreeBSD HandBook.
Корниенко К.А. "FreeBSD 9. Корпоративный Интернет-сервер", Киев-2013, ISBN 966-8637-57-7.
Christopher Negus, Francois Caen, BSD UNIX Toolbox: 1000+ Commands for FreeBSD, OpenBSD and NetBSD, Wiley, May 5 2008, 309 стр., ISBN 0-470-37603-1.
Babak Farrokhi, Network Administration with FreeBSD 7: Building, securing, and maintaining networks with the FreeBSD operating system, Packt Publishing, April 14 2008, 280 стр., ISBN 1-84719-264-5.
Bryan J. Hong, Building a Server with FreeBSD 7, No Starch Press, April 1 2008, 288 стр., ISBN 5-8459-0741-1.
Joseph Kong, Designing BSD Rootkits: An Introduction to Kernel Hacking, No Starch Press, April 10 2007, 144 стр., ISBN 1-59327-142-5.
Брайан Таймэн. FreeBSD 6. Полное руководство = FreeBSD 6 Unleashed. — М.: «Вильямс», 2007. — 1056 с. — ISBN 5-8459-0741-1.
Harald Zisler, FreeBSD, Franzis Verlag GmbH, August 31 2006, 381 стр., ISBN 3-7723-6538-8.
Родерик Смит. Полный справочник по FreeBSD = FreeBSD: The Complete Reference. — М.: «Вильямс», 2005. — 672 с. — ISBN 5-8459-0576-1
Yanek Korff, Paco Hope, Bruce Potter., Mastering FreeBSD and OpenBSD Security, O’Reilly, March 2005. ISBN 0-596-00626-8.
Майкл Лукас. FreeBSD. Подробное руководство = Absolute BSD. The Ultimate Guide to FreeBSD. — СПб.: Символ-Плюс, 2004. — 616 с. — ISBN 5-93286-066-9
Dru Lavigne. BSD Hacks, 100 Industrial-Strength tips for BSD users and administrators. O’Reilly, May 2004. ISBN 0-596-00679-9.
Michael Urban, Brian Tiemann. FreeBSD Unleashed, Second Edition. Sams Publishing, April 2003. ISBN 0-672-32456-3.
Greg Lehey. The Complete FreeBSD, 4th Edition, Documentation from the Source. O’Reilly, April 2003. ISBN 0-596-00516-4.
Marshall Kirk McKusick, George V. Neville-Neil. The Design and Implementation of the FreeBSD Operating System. Addison Wesley Professional, August, 2004. ISBN 0-201-70245-2.
Ted Mittelstaedt. The FreeBSD Corporate Networkers Guide. Addison-Wesley, December 2000. Paperback, book & CD edition, 401 pages. ISBN 0-201-70481-1.
The FreeBSD Handbook, Volume 1: User Guide, 3rd Edition. FreeBSD Documentation Project. FreeBSD Mall, November 2003. ISBN 1-57176-327-9.
The FreeBSD Handbook, Volume 2: Admin Guide, 3rd Edition. FreeBSD Documentation Project. FreeBSD Mall, September 2004. ISBN 1-57176-328-7.
Тема 2. Ядро ос FreeBsd і управління програмним забезпеченням
Визначення «ядра» в ОС *nіx
Ядро (англ. Kernel) – базова компонента операційної системи (див. рисунок 2.1), що реалізує інтерфейс між прикладними процесами та обладнанням комп'ютера. Завантажується в оперативну пам'ять комп'ютера і безпосередньо взаємодіє з апаратурою, забезпечуючи керування апаратними засобами (при цьому використовуються драйвери (модулі ядра) підключеного в систему обладнання), підтримку одночасної роботи багатьох користувачів (багатокористувацький режим), підтримку паралельного виконання багатьох процесів в системі (багатозадачність). Зазвичай ядро робить ці об'єкти доступними для прикладних процесів через механізми міжпроцесної взаємодії і системних викликів.
Рисунок 2.1 – Схема взаємодії
Основне завдання ядра – управління ресурсами комп'ютера та керування їхньою доступністю іншим програмам для запуску і використання. Як правило, основними ресурсами ядра є:
ЦП. Це – центральна частина комп'ютерної системи, відповідає за функціонування та виконання програм. Ядро бере на себе відповідальність за прийняття рішень про кількість процесорного часу, який виділяється для запущених програм.
Пам’ять комп’ютера. Пам'ять використовується для зберігання команд і даних програмного забезпечення. Як правило, обидва ці елементи повинні бути в пам'яті для можливості виконання програми. Часто кілька програм запитують доступ до пам'яті, іноді вони вимагають більше пам'яті, ніж є у комп'ютера. Саме ядро відповідає за рішення про надання відповідної кількості пам’яті кожному процесу і що робити, коли пам’яті не достатньо.
Будь-які пристрої вводу/виведення (I/O), підключені до комп'ютера, такі як клавіатура, миша, дисководи, принтери, монітори тощо. Ядро виділяє можливість запиту від додатків для виконання операцій вводу/виводу відповідного пристрою і надає користувачеві зручні абстракції основних функцій пристрою.
Ключові аспекти, необхідні для управління ресурсами є визначення домену виконання (адресного простору), а також механізму захисту, який використовується для роботи з доступом до ресурсів домену. Ядра також зазвичай надають методи для синхронізації і взаємодія між процесами (так механізм міжпроцесної взаємодії або IPC). Ядро може виконувати ці функції самостійно або покладатися на деякі процеси, які запускаються ним забезпечення умов для інших процесів, хоча у цьому випадку ядро повинне надати деякі засоби IPC, щоб дозволити цим спеціальним процесам доступ до внутрішньої структури прикладних процесів. Нарешті, ядро має забезпечити запущені програми методами, які дозволяють робити запити на доступ до цих об'єктів.
Особливості ядра в FreeBSD, його складові
Ядро FreeBSD розповсюджується під ліцензією GNU General Public License (GPL), і розробляється людьми з усього світу, що дозволило йому стати одним із найвидатніших прикладів відкритого програмного забезпечення. Особливістю ядра FreeBSD є те, що її розробляються разом з операційною системою, на відміну від дистрибутивів Linux, де версія ядра і версія дистрибутива це зовсім різні поняття.
Ядро FreeBSD складається з додаткових модулів і основного модуля ядра (/boot/kernel/kernel), які збираються з вихідного коду на основі файлу конфігурації ядра (за замовченням GENERIC). Майже всі додаткові модулі ядра можна скомпілювати в основний модуль (виключенням є специфічні модулі такі як модуль файлової системи ZFS які фізично мають завантажуватись до основного модуля). Модуль ядра в процесі роботи може виводити певні повідомлення, для перегляду яких існує спеціальна команда: dmesg, використання якої досить зручно при пошуку неполадок при нестабільній роботі системи.
Модулі ядра
Деякі модулі ядра Freebsd можна завантажувати, вимикати і вивантажувати під час роботи системи. Наявність системи, в якій служби ядра можуть завантажуватися і розвантажуватися під час роботи, має ряд переваг перед системою, в якій всі служби ядра повинні компонуватися під час побудови.
Для системних програмістів можливість завантажувати і вивантажувати модулі в ході роботи означає, що вони можуть швидше розробляти свій код. Безпосередньо компонувати з ядром потрібно лише ті модулі, які абсолютно необхідні для системи, такі, як управління пам'яттю або планувальник. Модуль ядра ОС можна відкомпілювати, завантажити, налагодити, вивантажити, змінити, відкомпілювати і знову завантажити без необхідності компонувати його безпосередньо з ядром або необхідності перезавантажувати систему.
При роботі на місці використання модулів ядра робить можливим оновлення лише обраних частин системи в міру необхідності. Оновлення на місці абсолютно необхідно у вбудованих (embedded) додатках, коли система може бути фізично недоступною, але це зручно також в більш традиційних середовищах, коли потрібно змінити безліч систем в один і той же час (наприклад, у великій групі серверів).
Однією з проблем при потребі завантаження і вивантаження модулів під час роботи є безпека. У версіях BSD до FreeBSD ядро було цільним і повністю захищеним від зміни користувачем під час роботи. Єдиним способом взаємодії з працюючим ядром був інтерфейс syscall (системних викликів). Системні виклики визначалися під час побудови ядра і надавали лише вузький канал комунікації. Цей щільно контрольований інтерфейс надавав рівень безпеки.
Хоча користувачі могли викликати збої своїх власних програм, за відсутності серйозної помилки в ядрі вони не могли б викликати збій операційної системи або процесів інших користувачів. З введенням для модулів ядра будь-який користувач, який може отримати повноваження супер (root), може змінити ядро. Певні служби не можна вивантажити, що є різновидом захисту, але всі служби, створені належним чином, можуть бути завантажені, включаючи зловмисні. Після завантаження зловмисного модуля в ядро немає захисту проти зловмисних руйнувань. Серйозним недоглядом в системі модулів ядра є те, що вона не підтримує цифрові підписи модулів. Якщо розробник хоче надати всім бажаючим службу через завантажуваний модуль ядра – наприклад, у вигляді частини великого додатку, - для клієнтів програми було б корисно, якби ядро могло перевірити, що модуль насправді надійшов від заявленого розробника. На даний момент підписування модулів і перевірка служби не є частиною системи для модулів ядра.
Всі стандартні модулі знаходяться в каталозі /boot/kernel/ з розширенням *.ko. При кожній перезборці ядра всі модулі в цьому каталозі знищуються і створюються заново. При використанні сторонніх модулів бажано їх зберігати в інший каталог /boot/modules/, який створений спеціально для них. Для динамічного завантаження або вивантажування існує спеціальна команда kldload або kldunload після якої відповідно вказується назва модуля (можна без розширення), щоб переглянути всі завантажені модулі використовується команда kldstat. Щоб необхідний модуль завантажувався автоматично при старті системи необхідно задати строку назва_модуля_load="YES" в файлі /boot/loader.conf або включити в саме ядро при перезборці.
Налаштування ядра FreeBSD з використанням утиліти sysctl
sysctl – це інтерфейс, що дозволяє вам вносити зміни в працюючу систему FreeBSD. Ці зміни стосуються багатьох опцій стека TCP/IP і віртуальної пам'яті; досвідчений системний адміністратор може використовувати їх для істотного збільшення продуктивності високозавантажених серверних станцій. Більше п'яти тисяч системних змінних ядра можуть бути прочитані і записані за допомогою sysctl. За своєю суттю, sysctl виконує дві функції: читання і зміна налаштувань системи.
Для перегляду всіх доступних для читання змінних:
% sysctl -a
Щоб прочитати певну змінну, наприклад, kern.maxproc, введіть:
% Sysctl kern.maxproc
kern.maxproc: 1044
Для присвоєння значення змінної, використовуйте вираз виду змінна = значення:
# sysctl kern.maxfiles = 5000
kern.maxfiles: 2088 -> 5000
Змінювані за допомогою sysctl змінні звичайно приймають значення або строкового, або цілого, або булевого типу. Змінні булевого типу можуть приймати два значення (1 (істина) і 0 (ложь)).
Якщо ви хочете встановлювати деякі змінні автоматично при кожному завантаженні комп'ютера, додайте їх у файл /etc/sysctl.conf. За додатковою інформацією звертайтеся до сторінки довідника man sysctl.
sysctl.conf дуже схожий на rc.conf. Значення встановлюються у вигляді variable = value. Зазначені значення встановлюються після переведення системи в багатокористувацький режим. Однак не всі змінні можуть бути встановлені в цьому режимі.
Приклад sysctl.conf, налаштованого для виключення протоколювання фатальних помилок програм та дозволи Linux-програмам визначати, що вони запускаються під FreeBSD:
kern.logsigexit = 0 # Do not log fatal signal exits (eg sig 11)
compat.linux.osname = FreeBSD
compat.linux.osrelease = 4.3-STABLE
У деяких випадках бажано змінити змінні sysctl тільки для читання. Іноді іншого способу вирішити проблему немає; при цьому, результат може бути досягнутий тільки на етапі початкового завантаження.
Наприклад, на деяких моделях лептопів діапазон пам'яті пристрою cardbus не визначається і видається приблизно така помилка:
cbb0: Could not map register memory
device_probe_and_attach: cbb0 attach returned 12
Ситуації, схожі на цю, вимагають зміни деяких значень sysctl, модифікація яких заборонена. Для вирішення цієї ситуації користувач може помістити sysctl «OID» у файл /boot/loader.conf. Значення за замовчуванням зберігаються у файлі /boot/defaults/loader.conf.
Рішення проблеми, наведеної вище, вимагає задання рядка hw.pci.allow_unsupported_io_range = 1 у вищезазначений файл. Тепер cardbus працюватиме нормально.
Підготовка до компіляції, конфігурування і компіляція ядра
Зробимо короткий огляд каталогу, в якому відбуватиметься збірка ядра. Всі каталоги, які будуть згадуватися, будуть відносними по відношенню до основного каталогу /usr/src/sys, який також доступний як каталог /sys. Цей каталог містить безліч підкаталогів, що представляють собою різні частини ядра, але найбільш важливим для нас буде каталог arch/conf, в якому ви будете редагувати конфігураційний файл ядра і в якому знаходиться каталог compile, де буде збиратися ваше ядро. arch може бути i386, amd64, ia64, powerpc, sparc64 або pc98 (альтернативна гілка апаратного забезпечення, популярна в Японії). Все, що знаходиться всередині каталогу певної архітектури, відноситься тільки до цієї архітектурі; решті код є машинно-незалежним і загальним для всіх платформ, на які FreeBSD може бути потенційно портована. Зверніть увагу на логічну структуру каталогів, в якій кожне підтримуване пристрій, кожна файлова система і кожна опція розміщується у своєму власному каталозі.
Приклади нижче наведено для архітектури i386. Якщо архітектура вашої системи відрізняється від використовуваної в прикладах, то вам необхідно буде відповідно змінити імена каталогів.
Якщо каталог /usr/src/ відсутній у вашій системі (або цей каталог порожній), то це означає, що вихідні тексти не були встановлені. Найбільш простий спосіб встановити їх – скористатися subversion пр. svn co http://svn.freebsd.org/base/release/7.4.0/ /usr/src або встановити з інсталяційного диску системи за допомогою sysinstall. Далі, створіть символічну посилання на /usr/src/sys/:
# ln -s /usr/src/sys /sys
Потім, перейдіть в каталог arch/conf і скопіюйте файл конфігурації GENERIC у файл з обраним вами ім'ям. Наприклад:
# cd /usr/src/sys/i386/conf
# cp GENERIC MYKERNEL
За традицією ім'я складається з літер у верхньому регістрі, і якщо ви підтримуєте кілька комп'ютерів FreeBSD на різному устаткуванні, хороша ідея додавати це ім'я до імені хоста. Використаємо ім’я MYKERNEL для цього прикладу.
Поміщення файлу конфігурації ядра в /usr/src може бути поганою ідеєю. Якщо ви відчуваєте проблеми, їх можна вирішити видаливши /usr/src і почавши все з початку. Після цього зазвичай потрібно кілька секунд, щоб зрозуміти, що ви видалили власний файл налаштування ядра. Чи не редагуйте безпосередньо GENERIC, він може бути також перезаписаний і при наступному оновленні дерева вихідних текстів, і зміни ядра будуть втрачені. Ви можете зберегти файл конфігурації ядра в іншому місці, а потім створити символічне посилання на цей файл у каталозі i386. Приклад:
# cd /usr/src/sys/i386/conf
# mkdir /root/kernels
# cp GENERIC /root/kernels/MYKERNEL
# ln -s /root/kernels/MYKERNEL
Тепер відредагуйте файл MYKERNEL в своєму улюбленому текстовому редакторі. Якщо ви тільки починаєте, єдиним доступним редактором скоріш за все буде vi, який дуже складний для того, щоб описати його тут, але в бібліографії перераховано безліч книг, в яких його використання добре освітлене. Однак FreeBSD надає більш простий редактор ee, який, якщо ви - новачок, підійде вам найкраще.
При синхронізації дерева вихідних текстів з деревом проекту FreeBSD, не забудьте звіритися з файлом /usr/src/UPDATING перед оновленням. У цьому файлі описані всі важливі питання і області вихідного коду, що вимагають особливої уваги. /usr/src/UPDATING завжди відповідає версії ваших початкових текстів FreeBSD, тому є більш актуальним джерелом інформації. Тепер можна скомпілювати ядро.
Перейдіть в каталог /usr/src:
# cd /usr/src
Зберіть ядро:
# make buildkernel KERNCONF=MYKERNEL
Встановіть нове ядро:
# make installkernel KERNCONF=MYKERNEL
За замовчуванням, при побудові ядра, всі модулі ядра так само будуть перезібрані. Якщо ви хочете оновити ядро швидше або побудувати тільки певні модулі, то вам потрібно відредагувати файл /etc/make.conf перед початком процесу складання ядра:
MODULES_OVERRIDE = linux acpi sound/sound sound/driver/ds1 ntfs
Ця змінна встановлює перелік модулів, які потрібно побудувати замість побудови всіх модулів.
WITHOUT_MODULES = linux acpi sound ntfs
У цієї змінної перераховуються основні модулі, які необхідно виключити з процесу складання. За іншими змінними, які ви можете порахувати корисними в процесі збірки ядра, звертайтеся до сторінки довідника make.conf.
Нове ядро буде скопійовано в каталог /boot/kernel як /boot/kernel/kernel, а старе ядро буде переміщено в /boot/kernel.old/kernel. Тепер перезавантажте систему для того, щоб використовувати нове ядро.
Інші файли, що відносяться до процесу завантаження, такі як завантажувач (loader) і його конфігураційні файли, розміщуються в /boot. Модулі сторонніх виробників можуть бути поміщені в /boot/kernel, хоча користувачі повинні знати, що дуже важливо, щоб модулі були синхронізовані з зібраним ядром. Модулі, не розраховані на роботу із зібраним ядром, можуть викликати нестабільність і некоректність роботи.
Якщо ваше нове ядро не завантажується або йому не вдається виявити ваші пристрою – це легко виправити, зовсім не обов’язково встановлювати систему заново. В FreeBSD існує відмінний механізм для відновлення після установки несумісного ядра. Просто виберіть ядро, яке хочете завантажити, в завантажувачі FreeBSD. Доступ до нього ви можете отримати, коли система знаходиться в стартовому меню. Виберіть шостий пункт («Escape to a loader prompt»), введіть команду boot kernel.old, або використовуйте будь-яке інше ядро, яке завантажиться без проблем. Під час переконфігурування ядра завжди корисно залишати копію ядра, про який відомо, що воно робоче.
Способи інсталяції програмного забезпечення: з вихідних кодів, система портів, пакети
Разом з FreeBSD у складі базового комплекту системи поставляється багатий набір системний утиліт. Однак для виконання якоїсь реальної роботи дуже скоро виникає необхідність в установці додаткових додатків сторонніх розробників. FreeBSD дає дві взаємодоповнюючих технології для установки програмного забезпечення сторонніх розробників: Колекція Портів FreeBSD (для установки з вихідних кодів) і пакети (для установки з відкомпілювалися двійкових файлів). Будь-яка з цих систем може бути використана для встановлення програм з локальних носіїв або прямо з мережі.
Стандартна процедура встановлення програмного забезпечення сторонніх розробників на UNIX ®-систему виглядає приблизно так:
завантаження програмного забезпечення, яке може поширюватися у формі вихідних текстів чи двійкових файлів;
розпакування програмного забезпечення з дистрибутивного формату (зазвичай tar-архіву, стисненого за допомогою compress, gzip або bzip2);
пошук документації у файлах INSTALL, README або в якомусь файлі з підкаталогу doc/ і її читання в пошуку опису установки програмного забезпечення.
якщо програмне забезпечення поширювалося у формі вихідних текстів, його компіляція, сюди ж може бути включено редагування файлу Makefile, запуск скрипта configure та інші роботи;
тестування та встановлення програмного забезпечення.
Якщо ви встановлюєте програмний пакет, який не був спеціально перенесено на FreeBSD, то вам може навіть знадобитися редагувати код для того, щоб він нормально запрацював.
FreeBSD надає дві технології, які виконують цю роботу за вас. На момент написання таким чином доступно більше 24,000 сторонніх додатків.
Кожен пакет містить уже відкомпілювалися копії всіх команд програми, а також всі конфігураційні файли і документацію. З файлом пакета можна працювати командами управління пакетами FreeBSD, такими як pkg_add, pkg_delete, pkg_info і так далі.
Кожен порт FreeBSD є набором файлів, призначених для автоматизації процесу компіляції програми з вихідного коду. Файли, з яких складається порт, містять всю необхідну інформацію для виконання автоматичного завантаження, вилучення, застосування патчів, компіляції та установки програми. Також система портів може використовуватися для генерації пакетів, які надалі стають об'єктом роботи для команд управління пакетами FreeBSD.
Як пакети, так і порти приймають до уваги залежності. Якщо при інсталяції програми за допомогою pkg_add або Колекції Портів буде виявлено, що необхідна бібліотека не була встановлена, то першим ділом буде виконана установка бібліотеки. Незважаючи на те, що обидві технології досить схожі, і пакети, і порти мають свої переваги. Виберіть технологію, яка відповідає вашим вимогам до установки конкретного додатка.
Переваги пакетів:
стиснутий tar-архів пакету зазвичай менше, ніж стиснене tar-архів, що містить вихідний код програми;
пакети не вимагають часу на компіляцію, для великих програм, таких як Mozilla, KDE або GNOME, це може бути важливо, особливо при роботі на повільній системі;
пакети не вимагають розуміння процесу компіляції програмного забезпечення під FreeBSD.
Переваги портів:
пакети зазвичай компілюються з консервативними параметрами, тому що вони повинні працювати на максимальній кількості систем, при установці з порту стає можливим зміна опцій компіляції;
деякі програми мають опції часу компіляції, що дозволяють визначати необхідні функціональні можливості, наприклад, Apache може бути налаштований з широким набором різних опцій;
у деяких випадках для одного і того ж додатка будуть матися кілька пакетів з різними попередніми налаштуваннями, наприклад, Ghostscript доступний як пакет ghostscript і як пакет ghostscript-nox11 - залежно від того, чи встановлений сервер X11, створення декількох пакетів одного додатку швидко стає безглуздим, якщо програма має більше одного-двох параметрів компіляції;
умови ліцензування деякого програмного забезпечення забороняють поширення в двійковому вигляді, воно повинно поширюватися у вигляді вихідного коду і компілюватися кінцевим користувачем;
деякі користувачі не довіряють дистрибутивам в двійковому вигляді або воліють прочитати вихідний код і спробувати знайти потенційні проблеми;
якщо у вас є власні патчі, вам потрібен вихідний код для того, щоб їх застосовувати.
Попередження: Перед установкою будь-якого додатку необхідно зайти на http://vuxml.freebsd.org/, де знаходиться інформація з питань безпеки програм, або встановити ports-mgmt/portaudit. Після установки наберіть portaudit -F-a для перевірки всіх встановлених додатків на наявність відомих вразливостей.
Список наявних для FreeBSD додатків постійно зростає. Існує кілька способів знайти те, що потрібно:
На сайті FreeBSD за адресою http://www.FreeBSD.org/ports/ підтримується оновлюваний список всіх наявних програм для FreeBSD, в якому можна виконувати пошук. Пошук порту можна виконати або по імені програми, або за назвою категорії.
Dan Langille підтримує сайт FreshPorts, на якому є зручний пошук, а також на ньому відслідковуються зміни в додатках з Колекції Портів. Зареєстрованим користувачам доступна можливість створювати власні списки спостережуваних портів і автоматично отримувати сповіщення про їх оновленнях електронною поштою.
Якщо ви не знаєте назви потрібного вам програми, спробуйте скористатися сайтом типу Freecode (http://www.freecode.com/) для пошуку програми, а потім поверніться на сайт FreeBSD, щоб перевірити, чи є порт для цього додатка.
Якщо вам необхідно визначити, в якій категорії знаходиться порт, наберіть whereis file, де file - програма, яку ви хочете встановити:
# whereis lsof
lsof: /usr/ports/sysutils/lsof
Як варіант, можна скористатися echo:
# echo /usr/ports/*/*lsof*
/usr/ports/sysutils/lsof
Врахуйте, що у відповіді також будуть присутні збігаються з шаблоном імена файлів, збережені в /usr/ports/distfiles.
Ще одним способом пошуку програмного забезпечення є використання вбудованої можливості пошуку в Колекції Портів. Щоб нею скористатися, зайдіть в /usr/ports і виконайте команду make search name = program-name, де program-name - це назва програми, яку ви хочете знайти. Наприклад, якщо ви шукаєте lsof:
# cd /usr/ports
# make search name=lsof
Port: lsof-4.56.4
Path: /usr/ports/sysutils/lsof
Info: Lists information about open files (similar to fstat(1))
Maint: obrien@FreeBSD.org
Index: sysutils
B-deps:
R-deps:
Рядок «Path:» вказує, де знаходиться порт. Щоб отримати лаконічну відповідь, задайте мету quicksearch:
# cd /usr/ports
# make quicksearch name=lsof
Port: lsof-4.87.a,7
Path: /usr/ports/sysutils/lsof
Info: Lists information about open files (similar to fstat(1))
Для виконання більш глибокого пошуку використовуйте make search key = string або make quicksearch key = string, де string являє собою деякий текст, що відноситься до шуканого порту. В якості тексту можуть бути вказані коментарі, опису або залежності. Цей спосіб можна використовувати для пошуку портів, пов'язаних з деякою темою, коли назва програми невідомо. В обох випадках (search і quicksearch) рядок пошуку нечутлива до регістру. Пошук «LSOF» призводить до того ж самого результату, що й пошук «lsof».
Для установки бінарного пакету FreeBSD з локального файлу або з сервера в мережі використовуйте pkg_add. Завантаження пакета вручну і його локальна установка:
# ftp -a ftp2.FreeBSD.org
Connected to ftp2.FreeBSD.org.
220 ftp2.FreeBSD.org FTP server (Version 6.00LS) ready.
331 Guest login ok, send your email address as password.
230-
230- This machine is in Vienna, VA, USA, hosted by Verio.
230- Questions? E-mail freebsd@vienna.verio.net.
230-
230-
230 Guest login ok, access restrictions apply.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> cd /pub/FreeBSD/ports/packages/sysutils/
250 CWD command successful.
ftp> get lsof-4.56.4.tgz
local: lsof-4.56.4.tgz remote: lsof-4.56.4.tgz
200 PORT command successful.
150 Opening BINARY mode data connection for 'lsof-4.56.4.tgz' (92375 bytes).
100% |**************************************************| 92375 00:00 ETA
226 Transfer complete.
92375 bytes received in 5.60 seconds (16.11 KB/s)
ftp> exit
# pkg_add lsof-4.56.4.tgz
Якщо у вас немає джерела пакетів, наприклад, такого як набір CD-ROM дисків з FreeBSD, то додайте опцію -r для pkg_add. Утиліта автоматично визначить правильний формат об'єктних файлів і реліз, а потім завантажить і встановить пакет з сервера FTP без будь-якого додаткового взаємодії з користувачем.
pkg_add -r lsof
Для видалення раніше встановлених пакетів з програмним забезпеченням використовуйте утиліту pkg_delete.
# pkg_delete xchat-1.7.1
Слід зазначити, що для pkg_delete потрібно повне ім'я пакету і номер версії; вищенаведена команда не спрацювала б, якщо б їй було вказано xchat замість xchat-1.7.1. Для знаходження версії встановленого пакета задійте утиліту pkg_version. Або ж, задайте груповий символ (wildcard) замість номера версії:
# pkg_delete xchat\*
В цьому випадку будуть видалені всі пакети, імена яких починаються на xchat.
Колекція Портів – це набір файлів, що складається з Makefile, патчів і файлів описів, збережених в /usr/ports. Цей набір файлів призначений для побудови та встановлення програм під FreeBSD.
Для отримання (якщо вони не були встановлені під час інсталяції системи) або оновлення колекції портів існує кілька способів:
Метод Portsnap
Portsnap це швидкий і зручний інструмент для отримання Колекції Портів, і в той же час – бажаний вибір більшості користувачів. За докладним описом всіх можливостей Portsnap зверніться до Using Portsnap.
Скачайте стиснене снепшот Колекції Портів в /var/db/portsnap.
# portsnap fetch
Якщо ви запускаєте Portsnap вперше, витягніть снепшот в /usr/ports:
# portsnap extract
По завершенні першого запуску Portsnap, як було показано вище, /usr/ports може бути оновлений за допомогою:
# portsnap fetch
# portsnap update
Метод Subversion
Якщо необхідний контроль за деревом портів (наприклад, для підтримки локальних змін), то для отримання Колекції Портів може бути задіяний Subversion. Зверніться до Subversion Primer за детальним описом Subversion. Для створення робочої копії дерева портів необхідно мати встановлений Subversion. Якщо порти є в наявності, то встановіть Subversion виконавши наступне:
# cd /usr/ports/devel/subversion
# make install clean
Якщо портів немає, то Subversion може бути встановлений за допомогою системи пакетів:
# pkg_add -r subversion
Якщо ж для управління пакетами використовується pkgng, то Subversion встановлюється за допомогою наступної команди:
# pkg install subversion
Створіть робочу копію дерева портів. Для прискорення процесу замість svn0.us-east.FreeBSD.org вкажіть найближче до вас дзеркало Subversion. Коментаторам необхідно спочатку прочитати Subversion Primer, щоб упевнитися, що обраний коректний протокол.
# svn checkout https://svn0.us-east.FreeBSD.org/ports/head /usr/ports
За наявності робочої копії /usr/ports всі подальші оновлення виконуються просто:
# svn update /usr/ports
Метод з використанням Sysinstall
Цей метод передбачає використання sysinstall для установки Колекції Портів з інсталяційного носія. Врахуйте, що в підсумку буде встановлена стара копія Колекції Портів, яка була актуальна на момент створення релізу. Якщо у вас є підключення до Інтернет, то вам необхідно користуватися одним з вищезазначених методів.
Працюючи як користувач root, запустіть sysinstall так, як це показано нижче:
# sysinstall
Опустіться вниз і виберіть Configure, натисніть Enter
Опустіться вниз і виберіть Distributions, потім натисніть Enter
Опустіться вниз до пункту ports, натисніть клавішу Пропуск
Підніміться вгору до Exit, натисніть Enter
Виберіть бажаний носій для встановлення, наприклад, CDROM, FTP і так далі.
Перейдіть на пункт меню Exit і натисніть Enter.
Натисніть X для виходу з sysinstall.
Портом є набір файлів, який вказує вашій системі FreeBSD, як відкомпілювати і встановити програму. Скелет кожного порту включає:
Makefile: цей файл містить різні директиви, які визначають, як додаток повинен бути відкомпілювати і куди у вашій системі воно повинно бути встановлено.
distinfo: цей файл містить інформацію про файли, які повинні бути завантажені для збірки порту, а також їх контрольні суми (sha256) для перевірки того, що файли не було пошкоджено в процесі завантаження.
files: цей каталог містить патчі, потрібні для збирання та установки програми у вашій системі FreeBSD. Цей каталог також може містити інші файли, використовувані для побудови порту.
pkg-descr: цей файл містить більш докладний опис програми.
pkg-plist: це список всіх файлів, які будуть встановлені портом. У ньому також містяться вказівки системі портів на видалення певних файлів під час видалення порту.
У деяких портах присутні й інші файли, такі, як pkg-message. Система портів використовує ці файли для обробки особливих ситуацій. Порт не містить власне вихідного коду, також відомого як «дистрибутивний файл» (distfile). Спосіб поширення вихідного коду визначається перевагами учасника програми. Нижче описані два способи установки порту FreeBSD.
Для установки портів ви повинні увійти в систему як користувач root. Перед установкою будь-якого порту необхідно переконатися в наявності свіжої Колекції Портів і заглянути на http://vuxml.freebsd.org/, де можуть висвітлюватися питання безпеки, пов'язані з конкретним портом. Якщо у вас встановлений ports-mgmt/portaudit, то перед установкою нового порту запустіть portaudit -F для завантаження свіжої бази даних вразливостей. Перевірка безпеки і оновлення бази даних будуть виконуватися при щоденній перевірці безпеки системи. За подальшою інформацією зверніться до сторінок довідника portaudit і periodic.
Використання Колекції Портів припускає наявність працюючого підключення до Інтернет. В іншому випадку вам доведеться роздобути і помістити копію дистрибутивного файлу в каталог /usr/ports/distfiles вручну.
Насамперед переміститеся в каталог встановлюваного порту:
# cd /usr/ports/sysutils/lsof
Для компіляції (або побудови - «build») порту наберіть команду make. Ви повинні побачити висновок команди, подібний наступного:
# make
>> Lsof_4.57D.freebsd.tar.gz doesn't seem to exist in /usr/ports/distfiles/.
>> Attempting to fetch from ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof/.
===> Extracting for lsof-4.57
...
[Висновок команди при розпакуванні опущений]
...
>> Checksum OK for lsof_4.57D.freebsd.tar.gz.
===> Patching for lsof-4.57
===> Applying FreeBSD patches for lsof-4.57
===> Configuring for lsof-4.57
...
[Висновок команди при конфігурації опущений]
...
===> Building for lsof-4.57
...
[Висновок команди при компіляції опущений]
...
#
По завершенні компіляції ви знову повернетеся до запрошення командного процесора. Наступним кроком є установка порту за допомогою make install:
# make install
===> Installing for lsof-4.57
...
[Висновок команди при установці опущений]
...
===> Generating temporary packing list
===> Compressing manual pages for lsof-4.57
===> Registering installation for lsof-4.57
===> SECURITY NOTE:
This port has installed the following binaries which execute with
increased privileges.
#
На цьому етапі, отримавши запрошення оболонки, ви вже можете запустити встановлену програму. Так як lsof є програмою, яка запускається з підвищеними правами, видається попередження про безпеку. Під час побудови й установки портів слід звертати увагу на будь-які виникаючі попередження.
Хорошою ідеєю є видалення робочого підкаталогу, що містить тимчасові файли, що використовувались під час компіляції. Така дія допомагає берегти дисковий простір і мінімізує ймовірність виникнення проблем надалі, при оновленні до більш нової версії порту.
# make clean
===> Cleaning for lsof-4.57
#
Ви можете заощадити два зайвих кроку, просто видавши команду make install clean замість make, make install і подальшої make clean в трьох окремих кроках. Установка порту єдиною командою make install чревата можливими частими зупинками процесу інсталяції через очікування втручання користувача: деяким портам потрібне введення опцій. Щоб уникнути витрати часу, особливо для портів з багатьма залежностями, запустіть спочатку make config-recursive щоб виконати конфігурування всіх опцій за один захід. Далі, запустіть make install [clean]. Коли використовується config-recursive, перелік які підлягають настройці портів збирається метою all-depends-list команди make. Часто рекомендується повторювати запуск make config-recursive до тих пір, поки не будуть визначені всі опції залежних портів, а меню dialog вибору опцій портів з'являтися перестануть. При цьому можна бути впевненим, що всі опції були налаштовані як і мало намір.
Деякі командні процесори для прискорення пошуку виконуваних файлів і команд кешують імена програм, доступних для виклику з каталогів, перерахованих у змінній оточення PATH. Якщо ви використовуєте tcsh, то вам може знадобитися набрати rehash, після чого встановлену програму можна буде викликати без вказівки повного шляху. Для командного інтерпретатора sh виконайте hash -r. Додаткову інформацію можна знайти в документації до вашого командному процесору.
Для завантаження файлів система портів використовує утиліту fetch, яка перевіряє значення деяких змінних оточення, включаючи FTP_PASSIVE_MODE, FTP_PROXY і FTP_PASSWORD. Якщо ви перебуваєте за мережевим екраном або для роботи з FTP/HTTP вам необхідно використовувати проксі, то визначте відповідні змінні. Зверніться до довідкової сторінці по fetch для отримання повного списку змінних.
Користувачам, які не можуть бути постійно підключені до мережі, допоможе команда make fetch. Запустіть цю команду в каталозі /usr/ports, і необхідні файли будуть завантажені. Ця команда також працює і з вкладеними категоріями, наприклад: /usr/ports/net. Зауважте, що якщо порт має залежності від бібліотек або інших портів, то команда не буде завантажувати дистрибутивні файли для залежних портів. Для завантаження всіх залежних дистрибутивних файлів задійте команду make fetch-recursive.
Ви можете побудувати всі порти в категорії за раз, запустивши команду make в каталозі верхнього рівня. Однак це небезпечно, так як деякі порти не можуть співіснувати. В інших випадках деякі порти можуть встановлювати два різних файлу з одним і тим же ім'ям. У деяких рідкісних випадках користувачам необхідно отримати tar-архіви з сайтів, що відрізняються від зазначених за умовчанням в MASTER_SITES. Ви можете перевизначити значення MASTER_SITES допомогою наступної команди:
# cd /usr/ports/directory
# make MASTER_SITE_OVERRIDE = \
ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/ fetch
У цьому прикладі значення змінної MASTER_SITES змінено на ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/.
Деякі порти дозволяють вказувати опції, які включають або вимикають побудова окремих частин програми, змінюють деякі параметри безпеки, а також задають інші налаштування. Прикладами таких портів можуть служити: www/firefox, security/gpgme і mail/sylpheed-claws. Якщо для порту існують опції компіляції, то перед початком побудови буде відображено меню.
Деякі порти надають ncurses-меню, що містить опції побудови. Будучи якось успішно визначені, опції зберігаються, і при повторному побудові порту меню не викликається. Щоб змінити збережені опцій існує кілька способів повторного виклику меню. Один з них – зайти в каталог порту і набрати make config. Другий спосіб – запустити команду make showconfig. Ще один спосіб – виконати команду make rmconfig, яка видалить всі раніше відмічені опції і дозволить вам почати конфігурування спочатку.
Для видалення портів існує стандартна команда make deinstall для виконання якої необхідно перейти у каталог видаляє мого порта і виконати її, але це досить незручно, тому частіше використовують команду для видалення пакетів:
# pkg_delete lsof-4.57
Для оновлення портів перш за все, за допомогою pkg_version перегляньте, чи немає в Колекції Портів новіших версій встановлених додатків:
# pkg_version -v
Після оновлення Колекції Портів, і перед тим, як оновити додаток з порту, звіртеся з файлом /usr/ports/UPDATING. У ньому дана інформація з різних питань і додатковим крокам, які можуть бути необхідні для поновлення порту, включаючи інформацію про такі речі як зміни форматів файлів, зміни в розташуванні конфігураційних файлів, або інші нестиковки з попередніми версіями.
Утиліта portupgrade створена для простого оновлення встановлених портів. Вона доступна з порту ports-mgmt/portupgrade. Встановіть її як і будь інший порт за допомогою команди make install clean:
# cd /usr/ports/ports-mgmt/portupgrade
# make install clean
Перевірте перелік встановлених портів командою pkgdb -F і усуньте всі невідповідності, про які повідомить утиліта. Хорошою ідеєю є виконання цієї дії регулярно, перед кожним оновленням. Використовуйте portupgrade -a для оновлення всіх застарілих портів, встановлених у вашій системі. Додайте прапор -i якщо ви бажаєте отримувати запит на кожен оновлюваний порт.
# portupgrade -ai
Для оновлення конкретного додатка, а не всіх встановлених портів, запустіть portupgrade pkgname. Увімкніть прапор -R при необхідності оновити всі порти, необхідні даними додатком.
# portupgrade -R firefox
Для використання при установці пакетів, а не портів, вкажіть прапор -P. З цим параметром portupgrade буде шукати пакети в локальних каталогах, зазначених у змінній оточення PKG_PATH, а якщо не знайде їх, то завантажить з віддаленого сайту. Якщо пакети не можуть бути знайдені локально або завантажені віддалено, portupgrade використовує порти. Щоб заборонити використання портів, вкажіть -PP.
# portupgrade -PP gnome2
Для простого завантаження дистрибутивних файлів без побудови або установки чого б то не було, задайте прапор -F.
Після установки нового додатка вам зазвичай потрібно прочитати будь-яку наявну документацію man, відредагувати необхідні конфігураційні файли і переконатися, що додаток запускається під час завантаження системи.
Віддалена робота із ОС. Протокол SSH. Утиліта putty
Адміністратори більшості центрів обробки даних, не мають змоги фізичного доступу (підключення монітору, клавіатури, мишки тощо) до певної системи і навіть якби могли це було б дуже ускладнено так, як при цьому потрібна також фізична присутність людини біля серверу. При створені мереж, і серверів, було висунуто ідею про керування серверами віддалено, через мережу, після чого почали розроблятись певні протоколи віддаленого доступу, такі як telnet, ssh, web-доступ, термінал сервери (ОС Windows) та інші. З плином часу для unix-подібних систем було обрано як стандарт віддаленого доступу протокол ssh, який має досить широкий спектр послуг.
Secure Shell, SSH – мережевий протокол, що дозволяє проводити віддалене управління комп'ютером і передачу файлів. Схожий за функціональністю з протоколом Telnet і rlogin, проте використовує алгоритми шифрування інформації, що передається.
Криптографічний захист протоколу SSH не фіксований, можливий вибір різних алгоритмів шифрування. Клієнти і сервери, що підтримують цей протокол, доступні для різних платформ. Крім того, протокол дозволяє не тільки використовувати безпечний віддалений shell на машині, але і тунелювати графічний інтерфейс – X Tunnelling (тільки для Unix-подібних ОС або застосунків, що використовують графічний інтерфейс X Window System). Так само ssh здатний передавати через безпечний канал (Port Forwarding) будь-який інший мережевий протокол, забезпечуючи (при належній конфігурації) можливість безпечної пересилки не тільки X-інтерфейсу, але і, наприклад, звуку.
Підтримка SSH реалізована у всіх UNIX системах, і на більшості з них в числі стандартних утиліт присутні клієнт і сервер ssh. Існує безліч реалізацій SSH-клієнтів і для не-UNIX ОС. Велику популярність протокол отримав після широкого розвитку сніферів, як альтернативне небезпечному телнету рішення для управління важливими вузлами. Щоб він автоматично вмикався при кожному перезавантаженні системи FreeBSD файл /etc/rc.conf повинен містити строку sshd_enable=”YES”.
Зараз відомо дві гілки версій – 1 і 2. Проте гілка 1 зупинена, оскільки в кінці 90-х в ній було знайдено багато вразливостей, деякі з яких досі накладають серйозні обмеження на її використання, тому перспективною (такою, що розвивається) і найбезпечнішою є версія 2.
Рисунок 2.2 – Зовнішній вигляд програми Putty
Популярним клієнтом під ОС Windows являється програма Putty (див. рисунок 2.2) яка є безкоштовною з відкритим кодом.
PuTTY – клієнтська програма для роботи з мережевими протоколами SSH, Telnet, SCP, SFTP, для підключення по COM-порту і ZModem, утиліта для генерації RSA і DSA цифрових SSH-ключів.
Найбільш популярні способи використання PuTTY – це віддалене адміністрування Linux, підключення до віртуальних серверів VDS/VPS по протоколу SSH, налаштування мережевих маршрутизаторів через послідовний порт, з'єднання з віддаленими Telnet-терміналами.
PuTTY працює як під Windows, так і під Linux. А в списку сторонніх модифікацій є версії SSH-клієнта для Mac OS X, iPhone, Android, Windows Mobile, Symbian.
Рисунок 2.3 – Робота програми Putty
