Федеральное агентство по образованию Московский инженерно-физический институт (государственный университет)
С.В.Ктитров, Н.В.Овсянникова
Администрирование ОС UNIX Лабораторный практикум
Рекомендовано УМО «Ядерные физика и технологии» в качестве учебного пособия для студентов высших учебных заведений
Москва
2007
УДК 004.451.9(076.5) ББК 32.973-018297 К87 Ктитров С.В., Овсянникова Н.В. Администрирование ОС UNIX. Лабораторный практикум. М.: МИФИ, 2007. – 84 с. Основу лабораторного практикума составляют задачи для практического освоения приемов администрирования ОС UNIX. Приводятся основные сведения о средствах и методах администрирования, которые могут служить справочным и направляющим материалом при выполнении лабораторных работ. Практикум предназначен для студентов, изучающих курс «Администрирование UNIX» и может быть использован при самостоятельном изучении предмета. Пособие подготовлено в рамках Инновационной образовательной программы. Рецензент канд. техн. наук, доц. А.Б. Вавренюк ISBN 978-5-7262-0852-7 © Московский инженерно-физический институт (государственный университет), 2007 Редактор Т.В. Волвенкова Подписано в печать 24.10.2007 Формат 60×84 1/16 Печ. л. 5,25 Уч.-изд.л. 5,25 Тираж 150 экз. Изд. № 3/2 Заказ № Московский инженерно-физический институт (государственный университет). 115409, Москва, Каширское ш., 31 Типография издательства «Тровант». г. Троицк Московской обл.
2
ОГЛАВЛЕНИЕ Введение...............................................................................................6 Практическое занятие 1. Основы работы с командным интерпретатором shell........................................................................8 1.1. Введение в shell..............................................................................8 1.2. Запуск команд.................................................................................8 1.3. Специальные символы в shell...................................................9 1.3.1. Шаблоны генерации имен файлов.............................................9 1.3.2. Символы перенаправления ввода/вывода..................................9 1.3.3. Символы подстановки..............................................................10 1.4. Поиск файлов и каталогов...........................................................10 1.5. Текстовый редактор vi................................................................10 1.6. Электронный справочник man....................................................12 1.7. Основные команды shell..........................................................12 1.8. Shell-программирование..............................................................13 Упражнения..........................................................................................13 Практическое занятие 2. Администрирование пользователей.....................................................................................17 2.1. Формат файла /etc/passwd............................................................17 2.2. Формат файла /etc/shadow............................................................17 2.3. Формат файла /etc/group..............................................................18 2.4. Графическая утилита admintool..................................................19 2.5. Утилиты командной строки........................................................19 2.6. Переключение бюджета пользователя.......................................19 2.7. Файлы инициализации пользователей.......................................19 2.8. Файлы, регламентирующие работу пользователей...................20 2.9. Аудит пользователей....................................................................20 2.10. Средства информирования пользователей...............................21 Упражнения..........................................................................................21 Практическое занятие 3. Права доступа и защита файлов.......24 3.1. Права доступа к файлам..............................................................24 3.2. Права доступа к каталогам..........................................................25 3.3. Изменение прав доступа к файлам.............................................25 3.4. Маскирование прав......................................................................26 3.4. Дополнительные атрибуты файлов.............................................26 3
3.5. Списки управления доступом.....................................................27 3.6. Делегирование полномочий........................................................28 Упражнения..........................................................................................29 Практическое занятие 4. Этапы загрузки системы. Управление уровнями исполнения................................................31 4.1. Этапы загрузки.............................................................................31 4.2. Уровни выполнения......................................................................33 4.3. Перевод системы на некоторый уровень выполнения. Файл /etc/inittab .................................................................................34 4.4. Автоматический запуск служб (сервисов).................................35 Упражнения..........................................................................................36 Практическое занятие 5. Администрирование файловых систем...................................................................................................38 5.1. Типы файлов.................................................................................38 5.2. Типы файловых систем................................................................38 5.3. Структура UFS..............................................................................39 5.4. Создание файловой системы UFS...............................................41 5.5. Восстановление файловой системы после сбоя........................42 5.6. Монтирование и демонтирование файловой системы..............42 5.7. Другие команды для работы с файловой системой...................45 5.8. Дисковые квоты............................................................................46 5.9. Пространство виртуальной памяти............................................47 5.10. Работа со сменными носителями.............................................48 5.11. Файловая система NFS...............................................................49 5.12. Создание резервных копий........................................................51 Упражнения..........................................................................................53 Практическое занятие 6. Управление процессами.....................56 6.1. Наблюдение за процессами.........................................................56 6.2. Способы управления процессами...............................................56 6.2.1. Задание переменных среды.......................................................56 6.2.2. Запуск процессов в фоновом режиме......................................57 6.2.3. Планирование процесса (назначение приоритета)...............57 6.2.4. Сигналы......................................................................................58 6.2.5. Планирование работ.................................................................58 Упражнения..........................................................................................59 4
Практическое занятие 7. Установка и удаление UNIX, системного и прикладного программного обеспечения............63 7.1 Инсталляция операционной системы Solaris.............................63 7.1.1. Тип устанавливаемой системы...............................................63 7.1.2. Методы установки системы..................................................63 7.1.3. Способы установки системы..................................................63 7.1.4. Выбор устанавливаемой конфигурации..................................63 7.1.5. Установка системы на жесткий диск...................................65 7.2. Команды Boot PROM SPARC......................................................67 7.3. Установка дополнительных пакетов ПО....................................67 7.4. Установка пакетов исправлений ОС...........................................68 7.5. Изменение конфигурации ядра OC Solaris................................69 7.6. Настройка справочной системы..................................................71 7.7. Настройка загрузчика...................................................................71 Упражнения..........................................................................................72 Практическое занятие 8. Настройка сети....................................74 8.1. Информационные команды.........................................................74 8.2. Файлы конфигурации сети .........................................................74 8.3.Программы конфигурирования и тестирования сети................76 8.4. Защита информации в сети. Доверяемые хосты.......................77 8.5. Коммуникационные программы.................................................78 Упражнения..........................................................................................80 Список литературы..........................................................................83
5
ВВЕДЕНИЕ
Операционная система UNIX долгое время считалась системой рабочих станций и супер-ЭВМ. Сегодня её можно встретить и на персональных ЭВМ благодаря Linux. Широко распространена UNIX и в научной среде. Многие открытые программы создаются прежде всего для UNIX. Многие черты и программы UNIX можно найти даже в Microsoft Windows. Навыки администрирования UNIX сегодня могут потребоваться даже пользователю персональной ЭВМ. Рассмотрим задачи, стоящие перед администратором многопользовательской и многозадачной системы, каковой является UNIX. Можно выделить четыре главных направления деятельности администратора. 1. Работа с оборудованием. Наблюдение за работой аппаратных средств, их тестирование, прогнозирование отказов, выявление «узких мест» и выбор аппаратной конфигурации при модернизации системы. 2. Сопровождение программного обеспечения. Установка и конфигурирование операционной системы. Создание файловых систем. Мониторинг файловых систем – исправление ошибок после сбоев, контроль свободного пространства, удаление устаревших файлов. Резервное копирование. Обновление версии ОС. Установка и обновление прикладного ПО. Резервное копирование. 3. Обслуживание пользователей. Создание и удаление бюджетов пользователей. Оценка потребностей пользователей. Оказание помощи пользователям. Контроль деятельности пользователей, оценка их квалификации и потенциальных проблем с их стороны. 4. Документирование. Ведение журнала администратора. Регистрация резервных копий. Написание правил работы с системой. Поясним некоторые из них. Обновление версии ОС требуется проводить с осторожностью, т. к. возможна несовместимость некоторых применяемых пользователями программ. То же можно сказать и о прикладном ПО – этапы его установки в многопользовательской системе следующие: предварительное тестирование и 6
только затем оповещение пользователей. При удалении или обновлении ПО следует знать, интересы каких пользователей это затронет. Для этого, в частности, и следует вести журнал администратора. В него следует заносить не только конфигурацию системного и прикладного ПО, но и причины принятия решений. А о том, насколько хорошо написаны правила работы с системой, администратор поймёт в процессе работы с пользователями. Такие правила необходимы, т. к. трудно представить ситуацию, когда система эксплуатируется в стандартной конфигурации с настройками по умолчанию. Конфигурированию операционной системы и посвящен настоящий лабораторный практикум. Основу практикума составляют упражнения для практического освоения приемов и методов администрирования ОС UNIX. Приводимые теоретические сведения изложены весьма конспективно и должны рассматриваться как вспомогательный направляющий материал. При выполнении работ следует активно пользоваться справочной системой man. Тематически практикум разбит на 8 частей – практических занятий. Рассмотрены вопросы конфигурирования рабочей станции. Теоретические сведения приводятся для ОС Solaris компании Sun Microsystems, но в большинстве своём применимы к любой системе семейства UNIX. При наличии пользовательских навыков, первые две части могут быть пропущены. Порядок освоения остальных тем не важен. Если учащемуся предоставлена уже сконфигурированная рабочая станция, темы следует осваивать и предложенном порядке, в противном случае следует начать с темы №7 – установки и конфигурирования ОС. Знаком * помечены сложные упражнения, которые при первичном изучении можно пропустить.
7
Практическое занятие 1 ОСНОВЫ РАБОТЫ С КОМАНДНЫМ ИНТЕРПРЕТАТОРОМ shell
1.1. Введение в shell Shell – это интерпретатор команд (командный процессор), осуществляющий функции интерфейса между пользователем и ядром ОС. Solaris предлагает три основных командных процессора: 1. Принятый по умолчанию командный процессор Bourne -/sbin/sh; 2. Командный процессор C – /bin/csh; 3. Командный процессор Korn – ./bin/ksh. Кроме перечисленных, Solaris предоставляет еще дополнительные оболочки: 1. J-оболочка – /sbin/jsh; 2. Restricted Korn -- /usr/bin/rksh; 3. T-оболочка – /usr/bin/tcsh; 4. GNU Bourne Again – /usr/bin/bash; 5. Z-оболочка – usr/bin/zsh. Выбор командного процессора является вопросом персональных предпочтений. 1.2. Запуск команд Любая команда в Unix состоит из имени запускаемой программы (команды), опций (ключей) и аргументов, передаваемых программе. Разделителем в командной строке является пробелы или знаки табуляции. Пример $ /bin/ping –t 10 192.168.2.13
аргумент опция команда приглашение shell
8
Если при запуске программы не указывается путь к исполняемому файлу, то ОС последовательно просматривает каталоги, задаваемые в переменной PATH. Если в просматриваемом каталоге находится программа с таким именем, то она запускается на выполнение. Текущий рабочий каталог при поиске программ не просматривается, только если он не задан в переменной PATH. В целях безопасности администратору не рекомендуется добавлять текущий каталог и домашние (личные) каталоги пользователя в переменную PATH. Примеры Запуск программы с указанием полного пути $ /usr/local/bin/my_program
Запуск программы из вышестоящего (родительского) каталога $ ../local/bin/my_program
Запуск программы из текущего каталога $ ./my_program
1.3. Специальные символы в shell Некоторые символы в shell имеют специальное значение, они используются при генерации имен файлов, для перенаправления ввода/вывода команды в/из файл(а) и при подстановке результата выполнения команды или значения переменной. 1.3.1. Шаблоны генерации имен файлов ? (вопросительный знак) соответствует любому одному символу, кроме первой точки; [ ] (квадратные скобки) определяют группу символов (выбирается один символ из группы); - (знак “минус”) определяет диапазон допустимых символов; ! (восклицательный знак) отвергает следующую за ним группу символов; * (символ “звездочка”) соответствует любому количеству символов, кроме первой точки. 1.3.2. Символы перенаправления ввода/вывода < - перенаправление ввода; >, >> - перенаправление вывода; 2>, 2>> - перенаправление сообщений об ошибках; 9
| - конвейер. 1.3.3. Символы подстановки $имя_переменной - подстановка переменных; $(команда) или `команда` - подстановка команд; ~ - тильда-подстановка. 1.4. Поиск файлов и каталогов Для быстрого поиска файлов и каталогов используется команда whereis, для более глубокого поиска – команда find (поиск файлов, удовлетворяющих заданным требованиям). 1.5. Текстовый редактор vi Текстовый редактор vi является универсальным редактором, присутствующим в любом Unix. Кроме редактирования текстовых файлов, редактор vi может использоваться для редактирования командной строки. Команды входа и выхода из редактора vi приведены в табл. 1.1. Таблица 1.1 vi имя_файла vi ZZ :q! :wq
Открыть сеанс редактирования файла Открыть новый сеанс Сохранить изменения в файле и выйти Выйти без сохранения Сохранить изменения в файле и выйти
Редактор vi имеет три режима работы (рис. 1). Основным режимом является командный, в котором команды вводятся нажатием некоторой последовательности клавиш (на экране никак не отображаются). Перемещение по тексту в командном режиме осуществляется с помощью стрелок и клавиш
(влево), <j>(вниз), (вверх), (вправо). В режиме ввода все набранные на клавиатуре символы вставляются в текст. 10
В режиме последней строки вводимая команда отображается в последней строке экрана. : ? /
Режим последней строки (ех)
Командный режим
Автоматически
a, A i, I o, O s
ESC
Режим ввода
Рис.1. Режимы редактора vi Знаком ”~” (тильда) в первой позиции помечаются пустые (несуществующие) строки файла. Некоторые команды vi приведены в табл. 1.2. Таблица 1.2 dd Удаление текущей строки Yy Копирование текущей строки в буфер Yдвижение Занесение отмеченных курсором символы в буфер курсора<Es> o Вставка новой строки снизу O Вставка новой строки сверху a Добавление после курсора A Добавление после текущей строки i Вставка перед курсором I Вставка перед текущей строкой s Замена символа на символ, вводимый с клавиатуры p Вставка текста из буфера . (точка) Повтор последней выполненной команды u Отмена последней команды U Отмена всех изменений в текущей строке x Удаление символа над курсором 11
1.6. Электронный справочник man В Unix имеется электронный справочник, содержащий описание назначения команд, их синтаксиса, примеры использования и пр. Справочник вызывается командой man : man ключевое_слово – подробная справка по ключевому слову; man –s страница ключевое_слово – указанная страница для ключевого слова; man –k ключевое_слово – список страниц, содрежащих справку по ключевому слову. 1.7. Основные команды shell Основные команды shell, необходимые для выполнения задания, приведены в табл. 1.3. Команда who echo banner man date write mesg mail news pwd cd ls mkdir rmdir touch cp cat 12
Таблица 1.3 Назначение вывод информации об активных пользователях вывод сообщений на терминал вывод сообщений на терминал прописными буквами вызов оперативной справочной системы вывод текущей даты передача сообщений на терминал другого пользователя разрешение/запрет вывода сообщений от других пользователей; отправка/получение почты знакомство с новостями системы; вывод абсолютного маршрутного имени текущего рабочего каталога; изменение рабочего каталога вывод информации о содержимом каталога создание каталога удаление каталога обновление временной метки файла копирование файлов объединение и вывод на экран содержимого файлов
Команда more mv rm ln alias tr exit tee cut grep pr sort head tail wc read,echo test expr,let
Продолжение таблицы 1.3 Назначение постраничный просмотр содержимого файла перемещение или переименование файла удаление файла создание ссылки на файл создание псевдонима преобразование символов завершение текущего shell-а перехват результатов конвейера выделение полей из строки поиск по шаблону вывод файла на стандартный вывод в заданном формате сортировка вывод первых строк файла вывод последних строк файла подсчет количества символов, слов и строк чтение и вывод значений переменных оценивание значения выражения вычисление арифметических выражений
1.8. Shell-программирование Shell позволяет сохранять последовательность команд в файле и затем выполнять ее. Чтобы запускать файл с shell-программой на выполнение, нужно добавить к правам доступа право на исполнение: $ chmod +x имя_файла_с_программой Ветвление в shell-программах организуется с помощью операторов || ,&& , if-then , if-then-else, case. Операторы цикла: for, while, until. Упражнения 1. Выведите сообщение из нескольких строк с помощью команд echo и banner. 13
2. Выведите дату в две строки: на первой день, месяц, год, на второй текущее время, снабдив вывод комментарием. 3. Используя команду mesg, определите, разрешены ли сообщения на Ваш терминал. Запретите сообщения. Какова будет реакция системы, если кто-нибудь попытается передать Вам сообщение? 4. Определите имя своего HOME-каталога. 5. Создайте в своем HOME-каталоге подкаталоги вида: fruits flowers apple pear
grapes dark
rose
violet dandelion
green
6. Находясь в HOME-каталоге, создайте файл macintosh в имеющемся каталоге apple и несколько файлов в каталогах dark и green. Войдите в каталог flowers. Находясь в каталоге flowers, скопируйте все подкаталоги fruits вместе с находящимися в них файлами в специально созданный каталог basket. 7. Находясь в каталоге flowers, удалите каталог fruits. 8. Создайте в HOME-каталоге текстовый файл myfile из нескольких строк с помощью команды cat. Скопируйте файл myfile в файл mycopy. Просмотрите содержимое обоих файлов. Переместите файл mycopy в каталог flowers. 9. Находясь в HOME-каталоге, создайте ссылку mylink на файл mycopy, находящийся в каталоге flowers. Просмотрите файл-ссылку. Добавьте строку к файлу mylink. Какие из файлов mylink, mycopy, myfile изменились? Почему? 10. Определите число ссылок для файлов mylink, mycopy, myfile. Удалите файл mycopy. Что произошло с файлом-ссылкой? Определите число ссылок для файлов mylink, myfile. 11. Создайте псевдоним dir, распечатывающий содержимое текущего каталога в расширенном формате. 12. Используя команду touch, создайте файлы в новом каталоге с такими именами, чтобы одновременно: — шаблону a* соответствовало 5 файлов; 14
— шаблону — шаблону — шаблону — шаблону
*a соответствовало 4 файла; ??.? соответствовало 3 файла; *aa* соответствовало 2 файла; ??? соответствовал 1 файл.
13. Замените в одном заданном файле все строчные буквы на прописные, в другом – все прописные на строчные. Исключите из файла все повторяющиеся пробелы (используйте tr). 14. Создайте файл с именем *. Удалите только этот файл. Будьте осторожны при использовании символов генерации имен файлов! 15. С использованием команды cat удвойте содержимое файла, приписав исходное содержимое к концу этого же файла. Перейдите в каталог flowers. Добавьте в файл spisok список содержимого каталога flowers. Просмотрите содержимое файла 16. Попытайтесь прочитать с помощью команды cat несуществующий файл. Какова реакция системы? Сделайте то же самое, перенаправив сообщения об ошибках в файл myerror. Что Вы видите на экране? Просмотрите файл myerror. 17. Создайте конвейер для получения списка только имен и прав доступа к файлам, которые находятся в Вашем рабочем каталоге. 18. Измените построенный конвейер так, чтобы список сохранялся в файле spisok Вашего HOME-каталога, а на экран выводилось только число файлов в списке. 19. Создайте псевдоним loggedon, который будет выводить на экран упорядоченный в алфавитном порядке список имен работающих в системе пользователей. 20. Выведите текущую дату на экран большими буквами с помощью команд date и banner. 21. Напишите shell-программу info, которая будет просить пользователя ввести имя, адрес, число, месяц и год рождения и выводить эту информацию в обратном вводу порядке 22. Напишите shell-программу, которая будет выводить на экран приглашение на ввод числа, сохранять введенное число в переменной Y, и печатать сообщение “Y is greater than 7”, если значение Y больше 7, и “Y is not greater than 7” в противном случае. 15
23. Напишите shell-программу, которая выводит на экран следующую статистику: а) свое имя; б) количество аргументов, с которыми она запущена; в) печатает каждый свой аргумент и длину аргумента в символах; 24. Напишите shell-программу, которая определяет количество аргументов в командной строке и выдает сообщение об ошибке, если количество аргументов не равно трем, или сами аргументы, если их количество равно трем. 25. Напишите shell-программу, которая будет выдавать приглашение на ввод идентификатора пользователя, проверять идентификатор на соответствие используемым в системе и выводить полное имя HOME-каталога или, в случае недопустимого идентификатора, выдавать сообщение об ошибке. 26. Напишите shell-программу hello, обеспечивающую следующую реакцию на аргументы командной строки: аргумент “-d” — программа будет выполнять команду date; аргумент “-l” — программа выведет содержимое текущего каталога; при отсутствии или неправильном задании аргументов программа будет выводить справку о своих опциях. 27. Напишите программу words, которая будет выдавать пользователю приглашение на ввод по одному слову до тех пор, пока он не введет слово “end”. После ввода слова “end” программа должна вывести на экран все введенные слова в алфавитном порядке. 28. Измените приглашение системы так, чтобы оно содержало полное маршрутное имя текущего рабочего каталога.
16
Практическое занятие 2 АДМИНИСТРИРОВАНИЕ ПОЛЬЗОВАТЕЛЕЙ
Unix – многопользовательская система, т.е. в системе могут одновременно работать несколько пользователей. Каждый пользователь в системе имеет регистрационное имя и числовой идентификатор (UID). При создании пользователя для него может быть определен личный каталог и командный процессор. Пользователи объединяются в группы. Каждый пользователь должен принадлежать не менее чем одной группе. Информация о пользователях, их первичных группах и личных каталогах хранится в файле /etc/passwd. Данные о группах пользователей содержатся в файле /etc/group, зашифрованные пароли – в файле /etc/shadow. Эти файлы доступны для редактирования только суперпользователю. 2.1. Формат файла /etc/passwd Одна строка файла соответствует одному пользователю. Строки имеют следующий формат: username:password:uid:gid:comment:home_dir:login_shell | | | | | | | | | | | | | ком.процессор | | | | | личный каталог | | | | комментариии | | | первичная группа пользователя | | идентификатор пользователя | символ-заполнитель для зашифрованного пароля регистрационное имя пользователя
2.2. Формат файла /etc/shadow Детали шифрования пароля и его устаревание хранятся в файле /etc/shadow. Строки имеют следующий формат: username:passwd:lastchg:min:max:warn:inactive:expire,
где passwd lastchg
– 13-символьный шифрованный пароль или LK -недоступная запись, NP -- нет пароля, -- количество дней между 1.01.70 и датой последнего изменения, 17
-- минимальное число дней перед сменой пароля, -- максимальное число дней действия пароля, -- количество дней, в течение которых выдается предупреждение об устаревании пароля, inactive -- количество дней неактивности учетной записи перед ее блокировкой, expire -- дата истечения срока действия учетной записи. min max warn
2.3. Формат файла /etc/group Одна строка соответствует одной группе: group_name:group_password:gid:user_list
| | | | |
| | | |
| | |
| список пользователей, входящих в группу (через запятую)
числовой идентификатор группы поле осталось от ранних версий, обычно пусто или *
название группы
Группы, существующие по умолчанию root::0:root other::1: bin::2:root,bin,daemon sys::3:root,bin,sys,adm adm::4:root,adm,daemon uucp::5:root,uucp mail::6:root tty::7:root,tty,adm lp::8:root,lp,adm nuucp::0:root,nuucp staff::10: daemon::12:root,daemon sysadmin::14: nobody::6001: noaccess::6002: nogroup::65534: Для создания новых учетных записей пользователя и группы не рекомендуется напрямую редактировать файлы /etc/passwd и etc/group, т.к. в некоторых системах информация о пользователях хранится в системных таблицах, лучше пользоваться утилитами. 18
2.4. Графическая утилита admintool Форма admintool позволяет добавлять и удалять пользователей и группы и изменять атрибуты пользователей. 2.5. Утилиты командной строки Утилиты командной строки (см.табл. 2.1) являются более гибким инструментом администрирования пользователей по сравнению с утилитой admintool. Таблица 2.1 useradd userdel usermod groupadd groupmod groupdel passwd
Добавление пользователя Удаление пользователя Изменение атрибутов пользователя Добавление группы Изменение группы Удаление группы Изменение пароля пользователя
2.6. Переключение бюджета пользователя В процессе работы пользователь может изменить имя регистрации – открыть новый сеанс работы в системе, не завершая старый (команда su) или изменить свою группу (команда newgrp). 2.7. Файлы инициализации пользователей Принятые по умолчанию файлы инициализации (создаются автоматически в home-каталоге при создании учетной записи пользователя): Таблица 2.2 Командный интерпретатор файл инициализации Bourne shell (sh) .profile .login C shell (csh) .cshrc .profile Korn shell (ksh) .kshrc .profile Bourne Again shell (bash) .bashrc 19
"Заготовки" для пользовательских файлов инициализации находятся в каталоге /etc/skel: файлы local.cshrc, local. profile, local.login. Пример файла инициализации .profile: PATH=$PATH:$HOME/bin:/usr/local/bin:/usr/ccs/bin:. MANPATH=/usr/share/man:/usr/local/man umask 022 export PATH МANРАТН
2.8. Файлы, регламентирующие работу пользователей Файл /etc/default/login используется для ограничения доступа суперпользователя к системе. Настройки команды su определяются в файле/etc/default/su . Базовые требования к паролям пользователей задаются в файле /etc/default/passwd. 2.9. Аудит пользователей Основные команды аудита пользователей приведены в табл. 2.3 Таблица 2.3 работающих пользова-
who whodo last logins -x -l logins -p
имя_польз.
Список телей Пользователи и их процессы Сеансы заданных пользователей и их терминалы Мониторинг деятельности пользователей Выявление пользователей, не имеющих паролей
Если по какой-то причине необходимо запретить вход пользователей в систему, то для этого суперпользователь может создать файл /etc/nologin. В этом файле можно написать сообщение, которое будет выводиться пользователю при его входе в систему.
20
2.10. Средства информирования пользователей Информирование пользователей необходимо при изменении конфигурации системы или режима её работы. Средства информирования пользователей представлены в табл. 2.4. Таблица 2.4 Для немедленного сообщения всем пользователям, зарегистрировавшимся в системе для Обычно используется перед shutdown Конкретному зарегистрировавшеwrite user [terminal] муся пользователю Определенным пользователям, в mail, mailx и т.п. т.ч. отключенным от системы файл /etc/motd Сообщение дня /var/news/* Система новостей Приглашение login из файла ин/etc/issue формирует об особенностях работы в системе wall [message] wall сообщение ^D -g grpname указанной группы
Упражнения 1. Определите, сколько пользователей зарегистрировано в системе. 2. Определете UID пользователя sys. 3. Определите домашний каталог пользователя root. 4. Определите, какие пользователи принадлежат группе bin . 5. Определите, принадлежит ли пользователь sys группе bin. 6. Определите, принадлежит ли пользователь root группе other. 7. Создайте нового пользователя c помощью утилиты admintool. Характеристики пользователя: Username demoX1 UID 1001 GID 10 Home directory /home/demoX1 21
Login shell bash
8. Создайте нового пользователя с помощью утилиты useradd. Характеристики пользователя: Username demoX2 UID 1002 GID 10 Login shell /usr/bin/ksh Проверьте, все ли работает (зарегистрируйтесь от имени вновь созданного пользователя, создайте файл в домашнем каталоге). 9. Установите личный каталог пользователю demoX2 с помощью команды usermod: /home/demoX2. Измените интерпретатор команд по умолчанию. 10. Измените пароль пользователю demoX2 с помощью команды passwd. 11. Создайте нового пользователя, редактируя файл /etc/passwd. Характеристики пользователя: Username demoX3 UID 1003 GID 10 Home directory /home/demoX3 Login shell /usr/bin/ksh 12. Разбейтесь на пары. Войдите в другую систему удаленно ($telnet адрес-системы) под пользователем demoХЗ. Выполните команду who на своей системе и на удаленной. 13. Попробуйте войти удаленно в систему под пользователем root. Определите, почему пользователь root не может войти в систему удаленно. 14. Для пользователя demoX3 установите новую переменную ORACLE_HOME=/space/oracle , так чтобы она была доступна всем процессам, запускаемым этим пользователем. 15. Определите файл, в который вносятся записи журнала аудита команды su. 16. Определите требования к минимальной длине пароля. Измените умолчание на минимальную длину пароля. 22
17. Как обеспечить наличие пути до компилятора gcc в профилях создаваемых пользователей? 18. Установить созданным пользователям ограничения на время бездействия, устаревания пароля и т.п. Проверьте работу механизма управления паролями, временно изменив дату и попробовав зарегистрироваться этими пользователями. 19. Выявите всех пользователей, не имеющих пароля. 20. Создайте пользовательскую группу, добавьте в неё отдельных пользователей. 21. Заблокируйте пользователя. Разблокируйте его. 22. Удалите пользователя. Нет ли в системе бесхозных файлов? 23. Определить, в какое время созданные пользователи регистрировались и работали в системе. 24. Зарегистрируйтесь несколькими пользователями одновременно. Проверьте средства информирования интерактивных пользователей и останов системы с оповещением. 25. Создайте сообщение дня. Проверьте для нескольких пользователей. 26. Создайте несколько новостей. Проверьте возможность их чтения для нескольких пользователей.
23
Практическое занятие 3 ПРАВА ДОСТУПА И ЗАЩИТА ФАЙЛОВ
Наличие в ОС Unix множества пользователей с разными правами требует от системы присутствия механизмов разграничения прав доступа. Рассмотрим штатные средства разграничения прав доступа. В большинстве систем Unix используется матричная политика разграничения прав доступа. Права доступа к файлам и каталогам задаются для трех категорий пользователей: - владелец файла, - группа, которой принадлежит файл, - все остальные. 3.1. Права доступа к файлам Права доступа к файлам можно задавать в символьной или в числовой форме. Соответствие символов и цифр правам приведено в табл.3.1. Таблица 3.1 Символ Цифра Описание r 4 Пользователь имеет право открытия и чтения содержимого файла w 2 Пользователь имеет право записи в файл x 1 Пользователь имеет право запуска файла (программы, скрипта) 0 Пользователь не может прочесть, записать или запустить файл Пример ls
–l
/export/home/vova
-rwxrw-r-- 1 vova other 109056 Aug 03 15:27 my_file.txt
В приведенном примере владелец файла my_file.txt (пользователь vova) имеет права rwx (право на чтение, запись и исполнение), члены группы other имеют права rw- (права на чтение и запись), а все остальные пользователи имеют права r-- (только на чтение). 24
3.2. Права доступа к каталогам Задание прав доступа к каталогам аналогично заданию прав доступа к файлам, но сами права для каталогов имеют несколько другой смысл (см.табл.3.2). Таблица 3.2 Символ Цифра Описание r 4 Пользователь имеет право просматривать список файлов в каталоге w 2 Пользователь имеет право создавать или удалять файлы из каталога x 1 Пользователь имеет право запуска файла (программы, скрипта) 0 Пользователь не может просматривать содержимое каталога, создавать или удалять файлы в каталоге 3.3. Изменение прав доступа к файлам Изменение прав доступа может проводиться только владельцем файла (только для тех групп, которым принадлежит владелец) или суперпользователем. Команды изменения прав доступа приведены в табл. 3.3. Таблица 3.3 Команда ls chown chgrp chmod
Описание Вывод информации о файлах и каталогах Смена владельца файла Смена группы файла Смена прав доступа
Пример ls –l /export/home/vova -rwxrw-r-- 1 vova other 109056 Aug 03 15:27 my_file.txt chmod 600 my_file.txt ls –l /export/home/vova -rw------- 1 vova other 109056 Aug 03 15:27 my_file.txt
25
3.4. Маскирование прав Все вновь создаваемые обычные файлы в ОС Unix получают права доступа rw-, а каталоги – rwx. Можно изменить права, назначаемые вновь создаваемым файлам и каталогам, с помощью команды umask. Маска, назначаемая командой umask, вычитается из маски по умолчанию. Команда umask без опций позволяет узнать текущее значение маски. Примеры задания маски приведены в табл.3.4.
Маска по Маска по лога Значение Права на файл Права на талог
умолчанию для файла умолчанию для катаumask вновь созданный вновь созданный ка-
Символьный вид rw-rw-rw-
Таблица 3.4 Числовой вид 666
rwxrwxrwx
777
----w—wx
023
rw-r--r--
644
rwxr-xr--
754
3.4. Дополнительные атрибуты файлов К дополнительным атрибутам защиты файлов относятся setuid bit (смена эффективного идентификатора пользователя), setgid bit (смена эффективного идентификатора группы) и sticky bit (“липкий” бит). Описание дополнительных атрибутов приведено в табл. 3.5. Таблица 3.5 Атрибут setuid bit
26
Описание Бит смены эффективного идентификатора пользователя. При запуске исполняемого файла с установленным setuid bit программа будет выполняться с правами того пользователя, которому принадлежит файл
Атрибут setgid bit
sticky bit
Продолжение таблицы 3.5 Описание Бит смены эффективного идентификатора группы. При запуске исполняемого файла с установленным setgid bit программа будет выполняться с правами той группы, которой принадлежит файл “Липкий” бит. Если на каталог установлен sticky bit, то файлы в каталоге может удалить или переименовать только тот пользователь, кто имеет право на запись в каталог и является (одним из): - владельцем файла, - владельцем каталога, - суперпользователем. Если значение sticky-bit равно t, то бит исполнения для всех пользователей включен, если значение sticky-bit равно T, то бит исполнения для всех пользователей выключен.
Дополнительные атрибуты устанавливаются с помощью команды chmod. Пример chmod +t my_file.txt ls –l myfile.txt -rw------t 1 vova other 109056 Aug 03 15:27 my_file.txt 3.5. Списки управления доступом Списки управления доступом (Access Control List) позволяют расширить модель разграничения прав доступа. С помощью ACL можно устанавливать отдельные права доступа для любого пользователя и для любой группы. Просмотреть права, установленные с помощью ACL, можно с помощью команды getfacl, установить, изменить или удалить права – с помощью команды setfacl. 27
3.6. Делегирование полномочий Наделение пользователя правами доступа к ресурсам осуществляется через включение пользователя в группу и назначение прав доступа к файлам. Более гибкий способ – использование SUID-программ, что позволяет наделить пользователей правами владельца программы. Для временной смены бюджета может быть использована su. Если используется форма «su –», окружение будет соответствовать новому пользователю. Права выполнения ряда административных действий могут быть назначены с использованием системы RBAC – системе регулирования прав доступа, основанной на ролях (специфична для ОС Solaris). В большинстве систем UNIX может быть использовано средство sudo. Для предоставления прав запуска программ редактируется файл /etc/sudoers, который следует редактировать программой visodo. Ключевые слова, используемые в файле, приведены в табл. 3.6. Таблица 3.6 Ключевое слово Смысл Host_Alias
Список компьютеров
Cmnd_Alias
Список команд
User_Alias
Список пользователей
Runas_Alias
От имени кого запускать
Пример файла /etc/sudoers (фрагмент) Пользователю pete разрешено менять пароль всех пользователей, кроме root: Host_Alias HPPA=moon,sun pete HPPA=/usr/bin/passwd [a-z]*,!/usr/bin/passwd\ root
28
Упражнения 1. Удалите полностью содержимое каталога /work 2. Определите, какие права доступа определены для файла /usr/bin/su 3. Определите, какие права доступа определены для файла /etc/passwd 4. Определите, какие права доступа определены для файла /etc/shadow 5. Создайте текстовый файл /work/file01, который может читать и изменять только пользователи, принадлежащие группе staff. 6. Создайте текстовый файл /work/file02, который не могут читать и изменять пользователи, принадлежащие группе staff, а все остальные могут. 7. Создайте текстовый файл /work/file03, который могут читать и изменять все пользователи системы. 8. Создайте каталог /work/dir01, в котором любой пользователь может создавать, удалять и запускать файлы. 9. Создайте каталог /work/dir02, в который пользователи группы staff не могут входить, а все остальные могут. 10. Установите значение umask так, чтобы файлы создавались с правами 600, а каталоги – 700. 11. Установите значение umask так, чтобы файлы создавались с правами 640, а каталоги – 740. 12. Объясните, для чего на программу passwd установлены атрибуты setuid bit и setgid bit. 13. Определите все программы в каталоге /usr/bin, на которые установлены атрибуты setuid bit и setgid bit. 14. Объясните, для чего на каталог /tmp установлен атрибут sticky bit. 29
15. Установите права на новый файл /work/file05 таким образом, чтобы у членов группы noaccess не было никаких прав на файл, у группы staff были бы все права, а у группы other – только права на чтение. 16. Уберите ограничение на доступ к файлу /work/file05 для группы noaccess. 17. От имени нескольких пользователей создайте файлы в их домашних каталогах. У пользователей должна быть разная группа по умолчанию. Файлы одного из пользователей не должны быть видны другим пользователям, за исключением одного (используйте списки управления доступом). 18. Пошлите сообщение от одного пользователя другому в заданное время. Наделите этим правом только некоторых пользователей. 19. Делегируйте одному из пользователей право изменять пароль других пользователей, кроме суперпользователя. Право изменять пароль конкретного пользователя, двух избранных пользователей. 20. Разрешите одному из пользователей создавать пользователей и менять их учетную информацию (Указание: имена пользователей могут начинаться на одну букву, например, a). 21. Наделите одного пользователя правом на резервное копирование (архивирование) домашних каталогов, а другого – правом на восстановление из резервных копий (см. практическое занятие 5, табл. 5.7).
30
Практическое занятие 4 ЭТАПЫ ЗАГРУЗКИ СИСТЕМЫ. УПРАВЛЕНИЕ УРОВНЯМИ ИСПОЛНЕНИЯ
4.1. Этапы загрузки Процесс загрузки операционной системы можно разбить на четыре основных этапа – этап аппаратной загрузки, программная загрузка, загрузка ядра и этап процесса init (табл. 4.1 и 4.2). Таблица 4.1 Этап загрузки системы SPARС Boot PROM
Описание 1. PROM выводит идентификационную информацию о системе и проводит базовую диагностику оборудования 2. PROM загружает первичную программу загрузки bootblk, которая находится в файловой системе ufs устройства, с которого производится загрузка
Boot Programs
3. bootblk находит и запускает ufsboot – вторичную программу загрузки 4. ufsboot загружает ядро операционной системы
Kernel Initialization
5. Ядро инициализируется и подгружает необходимые модули. После загрузки модулей для доступа к ufs, оно выгружает ufsboot 6. Ядро запускает процесс init.
Init
7. /sbin/init запускает процессы, указанные в etc/inittab и скрипты уровней выполнения
31
Для архитектуры x86 количество этапов загрузки остается прежним, но меняется их содержание. Таблица 4.2 Этап загрузки системы х86
Описание
BIOS
1. BIOS проводит серию тестов для диагностики оборудования 2. BIOS пытается прочитать первый сектор устройства, с которого производится загрузка и запускает программу mboot. mboot содержит информацию о разметке диска
Boot Programs
3. mboot запускает pboot 4. pboot запускает основную программу загрузки bootblk, которая находится в файловой системе ufs устройства, с которого производится загрузка 5. Если в системе присутствует более чем один загрузочный раздел, то bootblk выводит меню для выбора раздела 6. bootblk находит и запускает boot/bin или ufsboot – вторичную программу загрузки. 7. boot/bin или ufsboot загружает ядро операционной системы
Kernel Initialization
8. Ядро инициализируется и подгружает необходимые модули. После загрузки модулей для доступа к ufs, оно выгружает ufsboot 9. Ядро запускает процесс init.
Init
32
10. /sbin/init запускает процессы, указанные в /etc/inittab и скрипты уровней выполнения
4.2. Уровни выполнения ОС Unix может работать в нескольких режимах (на нескольких уровнях). В ОС Solaris предусмотрены следующие основные уровни выполнения (см.табл. 4.3) Таблица 4.3 ОбознаУровень Описание чение 0 PROM / BIOS Перевод системы в режим PROM/BIOS s
Однопользовательский
Однопользовательский режим, файловые системы не монтируются), доступна только физическая системная консоль
S
Однопользовательский
Аналогичен s, но права системной консоли передаются терминалу, с которого выполнен вход в систему (виртуальная системная консоль)
1
Однопользовательский
Однопользовательский режим, файловые системы монтируются
2
Многопользователький режим, пользоваМногопользотели могут входить в систему, не запусвательский кается демон NFS
3
Многопользо- Многопользователький режим, пользовавательский с тели могут входить в систему, запускаетNFS ся демон NFS
4
Не используется
Может применяться администратором по своему усмотрению
5
Выключение питания
Останов системы и выключение питания
6
Перезагрузка
Перезагрузка и переход на уровень выполнения по умолчанию
33
Определение текущего уровня выполнения Текущий уровень выполнения можно определить с помощью команды who -r: run-level 3 Sep 1 14:45 3 0 S | | текущий уровень выполнения
| предыдущий уровень
Протокол загрузки системы отображает команда dmesg, используемые драйверы – prtconf. 4.3. Перевод системы на некоторый уровень выполнения. Файл /etc/inittab Команды, используемые для изменения уровня выполнения, приведены в табл. 4.4. Таблица 4.4 init уровень Без аргументов команда init переводит систеtelinit уро- му на уровень по умолчанию. вень telinit передает команду init shutdown
Переводит систему на указанный уровень (по умолчанию s), посылает предупреждения пользователям
halt
Перевод системы на уровень 0, при этом rc0 не используется
poweroff reboot
Останов системы с выключением питания. -n - не делать sync
Перезагрузка до уровня выполнения по умолчанию
Перевод системы на определенный уровень выполнения осуществляет процесс init. Процесс init использует конфигурационный файл /etc/inittab для определения того, какие действия 34
он должен выполнить для перевода системы на определенный уровень. Строки файла /etc/inittab имеют следующий формат: id:rstate:action:process | | | | | | | полный путь к выполняемому файлу | | действие с полем process | список уровней выполнения уникальный идентификатор записи
Уровни выполнения в поле rstate перечисляются без разделителей. Ключевые слова поля action: initdefault – уровень выполнения по умолчанию указан в поле rstate, respawn – запустить или возобновить процесс, если он не выполняется, powerfail– действия при сбое питания, powerwait– при сбое питания запустить и ожидать завершения, sysinit – инициализация системы, wait – ожидать завершения процесса, once – выполнить, boot – выполняется на этапе загрузки, bootwait – то же, но ожидает завершение процесса, off – если процесс выполняется – остановить. Пример 1:2345:respawn:/sbin/mingetty tty1 4.4. Автоматический запуск служб (сервисов) В числе процессов, указанных в файле inittab, есть rcскрипты, выполняющие скрипты из каталога /etc/init.d, ссылки на которые размещены в каталогах /etc/rcX.d, где X – уровень, выполнения, на который переходит система. При повышении уровня запускаются скрипты по ссылке из каталога 35
целевого уровня S* с аргументом start, при понижении – К* с аргументом stop. Для автоматизации запуска и остановки какой-либо службы необходимо выполнить следующую последовательность действий: - в каталоге /etc/init.d создать скрипт, который принимает в качестве параметров start/stop и выполняет соответствующие действия для сервиса; - создать ссылку на созданный скрипт из каталога, соответствующего уровню, на котором следует запускать сервис; при этом ссылка должна начинаться с заглавной буквы S; - создать ссылку на созданный скрипт из каталога, соответствующего уровню, на котором следует остановить сервис; при этом ссылка должна начинаться с заглавной буквы К. Обычно после соответствующей начальной буквы указывают две цифры, что позволяет упорядочить последовательность запуска скриптов. Часть имени после цифр поясняет назначение скрипта. Если необходимо временно отключить автоматический запуск процесса – можно переименовать ссылку, заменив заглавную букву на строчную. Упражнения 1. Переведите систему на уровень выполнения S. 2. Загрузите её на уровень выполнения по умолчанию. 3. Определите текущий уровень выполнения системы. Перейдите на нижележащий уровень. Вернитесь обратно. 4. Остановите систему максимально быстро. 5. Остановите систему с отсрочкой на 3 минуты и выдачей предупредительного сообщения. 6. Перезагрузите систему, используя три разные команды. 7. Выведите на экран протокол начальной загрузки системы. Какие устройства были опознаны и сконфигурированы системой? 8. Создайте скрипт, который будет при запуске с параметром start выводить на консоль сообщение ”Start service”, а при запуске с параметром stop – сообщение ”Stop service”. 36
Пропишите ссылку на созданный скрипт для запуска сервиса в самом начале 2-го уровня, а для автоматического останова – в самом конце уровня s. 9. Напишите скрипты, выдающие соответствующее сообщение при переходе с уровня на уровень. Проверьте последовательность вызова при переходе с повышением уровня и понижением, при переходе на смежные и несмежные уровни, начальной загрузке и останове. Используйте механизм rc-каталогов. 10. Измените уровень выполнения по умолчанию. Убедитесь, что изменения вступили в силу. 11. Запустите «неубиваемую» программу, работающую на заданных уровнях. 12. Отмените графический вход в систему. Проверьте путем перезагрузки системы. Восстановите графический вход. 13. Создайте стартовый скрипт, имя которого не содержит цифр. Выполняется ли он, если да – каким по счету? 14. Запустите программу так, чтобы она выполнялась только на уровне 2. Перейдите на уровень 3 с нулевого. Перейдите на уровень 2, затем на уровень 3. Запускалась ли программа? 15. Находясь на 3-м уровне выполнения, остановите какую-либо службу, оставаясь на том же уровне. Затем запустите её. 16. Посмотрите rc-сценарии. Как их модифицировать, чтобы при переходе с уровня на уровень вызывались скрипты, имя которых начинается с какой-либо другой буквы, например, A? 17. Напишите скрипт, который выдает на терминал аргумент, переданный ему при запуске и текущий уровень выполнения. Разместите его в rc* каталоге. Определите моменты его вызова, переводя систему на разные уровни. 18. Остановите машину с выключением питания.
37
Практическое занятие 5 АДМИНИСТРИРОВАНИЕ ФАЙЛОВЫХ СИСТЕМ
В UNIX файлы организованы в виде древовидной структуры, называемой файловой системой. В UNIX все файловые системы имеют два основных компонента – файл и каталог. Корнем дерева файловой системы является корневой каталог (/). В большинстве случаев файловое дерево (в том виде, как видит его пользователь), составлено из нескольких отдельных файловых систем, которые могут иметь различную файловую структуру, а файлы, принадлежащие этим файловым системам, могут располагаться на различных устройствах. Подсоединение корня файловой системы к каталогу коневой файловой системы называют монтированием, отсоединение – демонтированием. Каждый файл имеет связанные с ним метаданные (хранящиеся в индексных дескрипторах – inode), содержащие все характеристики файла. Имя файла связано с индексным дескриптором посредством специального файла – каталога. 5.1. Типы файлов В UNIX существует шесть типов файлов, различающихся по функциональному назначению и действиям ОС при выполнении тех или иных действий над файлами: - обычный файл (regular file) - каталог (directory) - специальный файл устройства (special device file) - именованный каталог (named pipe) - символическая ссылка (link) - сокет (socket) 5.2. Типы файловых систем ОС Solaris использует файловые системы: UFS, ZFS, HSFS, PCFS, UDFS, и сетевую файловую систему NFS, причем UFS используется в Solaris по умолчанию, tmpfs – файловую систему в памяти и lofs – файловую систему обратной связи, procfs – файловую систему процессов и др. 38
На диске может размещаться несколько файловых систем. Раздел диска, где может быть размещена файловая система, в ОС Solaris назван slice. Таблица размещения разделов (VTOC) располагается в первом секторе диска и отображается командой prtvtoc. Для создания и изменения таблицы разделов используется диалоговая программа format. Раздел 2 соответствует всему диску. Программа format служит также для анализа поверхности диска и его форматирования. Доступ к разделам осуществляется через специальные файлы, расположенные в /dev/rdsk/* (байт-ориентированные) и /dev/dsk/* (блочно-ориентированные, т.е. после форматирования). Для SCSI-дисков наименование специальных файлов имеют вид сAtBdCsD, где A – номер контроллера, B – логический номер устройства (LUN), C – номер диска, обычно 0, D – номер раздела. 5.3. Структура UFS Описание элементов файловой системы UFS приведено в табл.5.1. Таблица 5.1 Элемент Описание Содержит описание файловой системы, расPrimary Suполагается в одном секторе и содержит: perblock
• • • • •
Число блоков данных Число групп цилиндров Размер блока данных и размер фрагмента данных Название точки монтирования Флаги состояния файловой системы 39
Элемент Backup Superblock Cylinder Group Block
Продолжение таблицы 5.1 Описание Резервная копия суперблока Блок данных, описывающий состояние группы цилиндров и содержащий информацию:
• • • •
Inode Table Data Block
• •
Число inode Число блоков данных в группе Число каталогов в группе Число свободных блоков, inode, фрагментов Карту свободных блоков
Карту свободных inode Список inode для группы цилиндров Блоки данных. Размер блока по умолчанию 8192 байта
Структура inode Индексный дескриптор (inode) содержит следующие данные:
• • • • • • • • • 40
Тип файла Права доступа UID владельца файла GID группы владельца файла Размер файла Дата создания файла Число жестких ссылок на файл Число занятых блоков на файл 12 прямых указателей на блоки данных
• • • •
1 косвенный указатель первого уровня на блок данных (содержит 2048 прямых указателей) 1 косвенный указатель второго уровня на блок данных (содержит 2048 косвенных указателей первого рода) 1 косвенный указатель третьего уровня на блок данных (содержит 2048 косвенных указателей второго рода) указатель на shadow inode, который содержит ACL для файла
Номер i-node файла можно посмотреть командой ls –i. Для сокращения потерь при хранении файлов используется хранение фрагментов разных файлов в одном блоке. Допускаются фрагменты 1/8, ¼, ½, 1 части блока данных. У каждого файла может быть только один фрагмент. 5.4. Создание файловой системы UFS Для создания файловой системы используются команды mkfs и newfs (формирует параметры для mkfs, может использоваться для создания файловой системы с параметрами по умолчанию). Пример newfs -F ufs /dev/rdsk/c0t0d0s1
При создании файловой системы можно задать следующие параметры: -b – размер блока данных -c – число цилиндров в группе -С – максимальное число логических блоков, размещенных последовательно -f fragsize – размер фрагмента -i nbpi – число байтов на i-node, по умолчанию используется <1Gb <2Gb <3Gb
2048 4096 6144 41
<1Tb 8192 >1Tb 1048576 -m free – часть свободного пространства (в процентах), -s size
резервируемый для root – размер
Тип файловой системы по умолчанию указан в файле /etc/default/fs: LOCAL=ufs
Настройка стратегии размещения данных производится с помощью программы tunefs. Опции команды tunefs: -a maxcontig – максимальное число блоков данных, принадлежащих одному файлу, размещаемых непрерывно -m minfree – минимальный процент свободного пространства, при котором пользователи могут создавать файлы -o space|time – стратегия оптимизации (по умолчанию time) 5.5. Восстановление файловой системы после сбоя Восстановление целостности файловой системы производится утилитой fsck. Восстановление файлов или их фрагментов, связь блоков данных которых с их названием утрачена, производится в каталог /lost+found, созданный при форматировании файловой системы. Программа fsck требует указания байт-ориентированного файла и производит действия над немонтированной файловой системой. Программа переносит изменения на диск в конце работы, поэтому в интерактивном режиме от изменений можно отказаться до вопроса о записи данных на диск. При повреждении суперблока может быть указан резервный (-b=№. Гарантированный альтернативный номер суперблока 32). После внесения изменений следует перезагрузить систему. 5.6. Монтирование и демонтирование файловой системы Информация о том, какие файловые системы следует монтировать при загрузке, содержится в файле /etc/vfstab. Формат файла /etc/vfstab описан в табл. 5.2. 42
Таблица 5.2 Поле
Описание
Device to mount
Устройство, которое следует монтировать
Device to fsck
Устройство, которое следует проверять в случае сбоя
Mount point
Точка монтирования
FS type
Тип файловой системы на устройстве
FS pass
Проверять ли состояние файловой системы при загрузке
Mount at boot
Автоматически монтировать при загрузке или нет
Mount options
Список опций монтирования через запятую
Команды монтирования и демонтирования файловых систем приведены в табл. 5.3. Таблица 5.3 Команда Описание mount
Монтирует заданные файловые системы и дистанционные ресурсы.
mountall
Монтирует все файловые системы, заданные в таблице файловых систем vfstab.
umount
Демонтирует заданные файловые системы.
umountall
Демонтирует все файловые системы, заданные в таблице файловых систем vfstab.
Информация о смонтированных файловых системах помещается в файл /etc/mnttab в виде спецфайл точка монтирования типФС
опции
время
если не использовалась опция -m. Формат команды: 43
mount –F type общие_опции –o опции_данной_фс спец_файл точка_ монтирования
Если запись о паре спец_файл/точка_монтирования имеется в файле /etc/fstab, можно ограничиться чем-то одним. Опции команды: -m – монтировать без помещения в /etc/mnttab, -f – принудительное монтирование, -a – все системы из файла /etc/fstab, -p – печатать список в формате /etc/fstab, -o опции – задать опции монтирования файловой системы, –l – монтировать только локальные файловые системы, -a –t тип – монтировать файловые системы только указанного типа. Опции монтирования большинства файловых систем ro – запрещена запись в файловую систему, rw – чтение и запись разрешены, quota, noquota – поддержка квот включена/отключена, rq = rw, quota – сокращенная запись, noatime – не модифицировать метки времен доступа к файлам (слегка повышает производительность), nosuid – запрещено изменять права запускаемого процесса на права владельца файла (обычно используется при импорте файловых систем), logging/nologging – включение/отключение поддержки журналирования в системе UFS Solaris. Файловая система может быть демонтирована, если ни один из ее файлов не используется, а ни один из каталогов не является текущим ни для одного процесса. Определить причины ошибки при демонтировании можно с помощью команды fuser, показывающей PID процессов, работающих с файлом или ФС вместе с кодами (см.таблицу 5.4).
44
c
Таблица 5.4 Процесс имеет текущий каталог в данной файловой системе.
e
Из данной файловой системы запущена программа.
o
Имеется открытый файл.
r
Процесс имеет корневой каталог в файловой системе.
m
Имеется отображаемый на память файл.
n
Установлена обязательная блокировка.
-k
Уничтожить процесс, занявший файловую систему.
-s sig
Послать сигнал процессу, занимающиму файловую систему.
-i
Подтверждение.
-u
Указывать имя пользователя.
5.7. Другие команды для работы с файловой системой Другие команды, полезные при администрировании файловых систем, приведены в табл. 5.5. Таблица 5.5 fstyp -v Просмотр всех параметров ФС sync
Синхронизирует данные на в памяти и на диске при буферизации опрераций с файловой системой
df
Отображение дискового пространства, используемого ФС
du
Отображение информации о размерах каталогов (текущей ФС)
45
5.8. Дисковые квоты Дисковые квоты – это ограничения, накладываемые на пользователя в многопользовательской системе по использованию файловой системы. Для каждой файловой системы квоты устанавливаются независимо. Чтобы задействовать квоты в файловой системе, требуется – создать в её корне файл: touch quotas , владельцем которого является root c правами доступа rw-------. – монтировать систему с опцией quota (указать её в /etc/vfstab) – установить квоту для пользователя программой edquota user. Разделяют жесткие и мягкие квоты. Жесткая квота превышена быть не может. Мягкая квота (должна быть меньше) может быть превышена в течение ограниченного времени. Если пользователь за время “благожелательности” не устранил превышение мягкой квоты, жесткая квота становится равной мягкой. Квоты устанавливаются на объем файлов (в блоках по 1024 байта) и на их количество (число индексных дескрипторов) программой edquota в формате: fs точка монтирования blocks (soft=…, hard=…) inоdes ( soft=…,hard=…)
где soft означает параметр, относящийся к мягкой квоте, а hard– к жесткой. Если для нескольких пользователей квоты должны быть установлены одинаковыми, можно воспользоваться заданием по образцу: edquota –p user1 user2 Время превращения мягкой квоты в жесткую устанавливается командой edquota –t в формате
fs точка_монтир blocks time limit=…, files time limit=… Единицу измерения указывают ключевым словом week,day, month,hour,min,sec. Дополнительные символы игнорируют46
ся, поэтому допустимо weeks. По умолчанию период благожелательности равен неделе, уточнить умолчание можно в файле /usr/include/sys/fs/ufs_quota.h . Другие команды для работы с квотами указани в табл. 5.6. Таблица 5.6 Команда
Описание
quotacheck
Перестроить файлы квот, полезно, если квоты вводятся в файловой системе, уже содержащей файлы
quota
Выдает информацию о действующих квотах
quotaon
Включает использование квот в файловой системе
quotaoff
Выключает использование квот в файловой системе
5.9. Пространство виртуальной памяти Виртуальная память может быть представлена как разделом на диске, так и файлом. Раздел на диске указывается в файле /etc/vfstab, является основным и обычно подключается при старте системы. Дополнительное пространство виртуальной памяти может быть получено в виде файла в файловой системе. Получить информацию о конфигурации виртуальной памяти можно командой swapfs. Файл для использования виртуальной памятью создается командой mkfile nnn[k|b|m] filename,
где k,b,m – единицы измерения, и затем регистрируется в системе командой: swap –a /path/filename
Отключить виртуальную память в файле можно командами: 47
swap –d filename rm filename
Файл также можно указать в /etc/vfstab. В качестве устройства указывается полное путевое имя, тип файловой системы swap. Пример файла /etc/vfstab (фрагмент) #device device #to mount to fsck /dev/dsk/c0t0d0s0 /virt/sw1 -
mount point -
FS type swap swap
fsck pass -
mount at boot no no
mount opt -
5.10. Работа со сменными носителями Файловая система FAT/FAT32 в ОС Solaris имеет наименование pcfs, а CD-ROM соответственно hsfs. Чаще всего поддержка pcfs используется применительно к дискетам, но раздел FAT в системе c архитектурой x86 может быть также смонтирован (при этом в наименовании файла устройства имеются некоторые особенности): mount –F pcfs /dev/dsk/c0t0d0p0:C /pcfs/C Дискета может быть отформатирована как в pcfs, так и в ufs программой fdformat. Так как процесс монтирования любой файловой системы командой mount требует полномочий суперпользователя, то для работы с дискетами и CD-ROM в Solaris предусмотрен специальный демон, который подключает/отключает файловые системы – менеджер томов vold. Команды настройки vold приведены в табл.5.7. Таблица 5.7 Команда Описание rmmount
Монтирование сменных носителей информации
volcancel
Отмена запроса пользователя на доступ к ФС на сменном носителе
volcheck
Проверка наличия носителя информации на устройстве
48
Продолжение таблицы 5.7 Команда
Описание
volmissing
Действие, которое выполняется при попытке доступа к устройству с отсутствующим носителем
vold
Демон менеджера томов, который управляется файлом /etc/vold.conf
Для извлечения носителя из дисковода используется команда eject. В системе имеются синонимы: floppy0 – дискета, cdrom0 – компакт диск. Примеры Копирование на дискету с запущенным демоном vold 1. Вставляем дискету в дисковод. 2. Проверяем: volcheck /floppy/floppy0. 4. Переписываем файл на дискету: cp /export/home/user1/file /floppy/floppy0. 5. Отключаем дискету: eject floppy. Копирование на дискету без демона vold 1. Вставляем дискету в дисковод. 2. Подключаем дискету: mount –F pcfs /dev/fd0 /floppy/floppy0. 4. Переписываем файл на дискету: cp /export/home/user1/file /floppy/floppy0. 5. Отключаем дискету: umount /floppy/floppy0. 5.11. Файловая система NFS NFS – сетевая файловая система – позволяет совместно использовать фрагмент файловрй системы несколькими компьютерами. Экспорт файловой системы осуществляется командой share, отмена экспорта – командой unshare. Набор команд share хранится в файле /etc/dfs/dfstab и выполняется по команде 49
shareall. Можно экспортировать отдельный каталог. Несколько файловых систем не могут быть экспортированы одной командой. Опции экспорта: ro – экпорт только для чтения, rw – допустимы чтение и запись, nosub – запрет монтирования подкаталогов, nosuid – запрет выполнения программ отимени владельца и доступа к специальным файлам, anon – указывает uid анонимного пользователя (вместо nobody). Спецификации файловую систему: .ххх.ххх имя @адрес - (дефис) -
узлов, которым разрешено импортировать любой узел в домене, компьютер в домене, сеть, исключая.
Элементы списка отделяются символом :(двоеточие). Пример share -F nfs -o rw=.mephi.ru:[email protected]/24 -o nosuid /export/home
Импорт файловой системы NFS клиентом производится командой mount, которая также осуществляет монтирование. Указываемый тип файловой системы – nfs, опции монтирования: ro | rw – запрет/разрешение записи в импортированной файловой системе, fg | bg – монтирование в фоновом или обычном режиме, hard – если сервер не отвечает на запросы, продолжать попытки, soft – если сервер не отвечает на запросы, сообщить об ошибке, intr –возможно прерывание с клавиатуры заблокированного процесса, осуществляющего доступ к NFS, nointr – процесс прервать нельзя, 50
largefiles – поддержка файлов размером более 2 Гбайт proto=... – используемый протокол (tcp или udp), rsize=... wsize=... – размер буферов чтения/записи, retry=... – число попыток монтирования, quota включить поддержку пользовательских квот. Пример mount -F nfs -o rw,soft,quota moon:/pub
/moon/pub
В примере экспортируемый машиной moon каталог /pub монтируется в каталог /moon/pub. Для автоматического монтирования можно добавить строку в /etc/vfstab. Пример файла /etc/vfstab (фрагмент) #device #to mount moon:/pub
device mount to fsck point - /moon/pub nfs
FS fsck mount mount type pass at boot opt - yes rw,soft,quota
Программа nfsstat может быть использована отображения статистической информации, касающейся NFS.
для
5.12. Создание резервных копий Надежность аппаратной платформы, применение RAID массивов, журналируемых файловых систем позволяет практически полностью защититься от аппаратного сбоя. Но при этом всегда остается вероятность ошибки оператора, который случайно удалил важные файлы. Именно для защиты от таких угроз следует выполнять резервное копирование важных данных. В состав ОС Solaris входит набор важных утилит, с помощью которых администратор может выполнить резервное копирование (табл.5.7) Программа ufsdump предназначена для многоуровневого инкрементального резервного копирования. Предусмотрены уровни от 0 до 9, 0 означает полное копирование.
51
Таблица 5.7 Команда
Описание
ufsdump
Создание резервной копии файловой системы UFS
ufsrestore
Восстановление данных с резервной копии файловой системы UFS
tar
Создание архива каталога
cpio
То же
dd
Двоичное копирование. Может работать со специальными файлами
Пример: создание резервной копии файловой системы /dev/dsk/c0t0d0s7 на внешнем сервере 192.168.12.1 в каталоге /space/tmp и восстановление данных с резервной копии - проверяем ФС на наличие ошибок umount /dev/dsk/c0t0d0s7 fsck /dev/rdsk/c0t0d0s7 - создаем резервную копию на удаленном сервере mkdir /export/test mount –F nfs 192.168.12.1:/space/tmp /export/test ufsdump 0f /export/test/mydump - создаем новую ФС в разделе /dev/dsk/c0t0d0s7 newfs /dev/dsk/c0t0d0s7 fsck /dev/dsk/c0t0d0s7 -подключаем новую ФС mount -F /dev/dsk/c0t0d0s7 /export/home - восстанавливаем данные cd /export/home ufsrestore rvf /export/test/mydump
52
Упражнения 1. Определите, какие файловые системы в данный момент подключены. 2. Определите, сколько свободного места находится в файловой системе /. Сколько места занимает каталог /var ? 3. Создайте каталог /work_new. Подключите в данный каталог файловую систему …(спросить преподавателя) 4. С какими параметрами подключилась файловая система? Сколько места на подключенной файловой системе? 5. Отключите файловую систему. Удалите каталог /work_new. 6. Разбейте оставшееся свободное место на диске на 2 части. На одной из них создайте файловую систему с параметрами по умолчанию. 7. Смонтируйте новую файловую систему. Убедитесь в возможности чтения и записи. Размонтируйте файловую систему. Смонтируйте ее в непустой каталог. Размонтируйте. Оцените доступность данных. 8. Перезагрузите систему. Определите, какие системы в настоящий момент смонтированы. Сравните с файлом автоматического монтирования. 9. Как сделать, чтобы созданная Вами система монтировалась при старте? Укажите два способа решения задачи. 10. Определите, с какими опциями смонтированы файловые системы. 11. Cмонтируйте файловую систему с опцией remount и опцией ro. Как проверить, что изменения вступили в силу? 12. Смонтируйте файловую систему с различными опциями, запрещающими запись, исполнение SUID программ и т.п. Убедитесь в том, что опции «работают». 13. Удалите созданную Вами файловую систему. Создайте на ее месте другую с параметрами, отличными от параметров по умолчанию. 53
14. Создайте файловую систему с малым количеством индексных дескрипторов. Добейтесь переполнения таблицы дескрипторов. 15. Попытайтесь демонтировать «занятую» файловую систему. Смоделируйте состояние занятости по разным причинам и определите причины невозможности нормального размонтирования. 16. Обеспечьте автоматическое монтирование файловой системы при загрузке системы. 17. С использованием сетевой файловой системы экспортируйте несколько каталогов системы. 18. Смонтируйте экспортируемые каталоги соседних машин. Автоматически монтируйте их при старте системы. Рассмотрите несколько вариантов опций монтирования. 19. Определите заполненность файловых систем. 20. Выведите на экран статистику по заполненности каталогов в файловых системах. 21. Выведите на экран список смонтированных в данный момент файловых систем. Создайте файл автоматического монтирования по слепку на данный момент. 22. Проверьте файловые системы на ошибки. 23. Создайте область виртуальной памяти в виде файла и в виде устройства (на оставшемся свободном месте) с автоматическим включением их при старте системы. 24. Установите файловые квоты пользователям. Перестройте информацию о квотах на основе уже созданных файлов. 25. Установите квоты в нескольких файловых системах одновременно. 26. Определите состояние квот пользователей от имени пользователя и суперпользователя. 27. Установите все виды квот. Проверьте, как система реагирует на их превышение. Исследуйте превышение мягкой квоты.
54
28. Создайте пользователя и назначьте квоты по образцу. Затем запросите информацию о квотах для данного пользователя. Измените квоты пользователя. 29. Создайте полную резервную копию домашних каталогов пользователей. Внесите изменения от имени различных пользователей. Создайте инкрементные копии. 30. Удалите содержимое домашних каталогов и восстановите его из резервных копий. Обратите внимание на изменения, вносимые при восстановлении из инкрементных копий. Проверьте, сохранились ли права доступа к файлам и их владельцы, включая ACL. 31. Осуществите резервное копирование домашних каталогов. Затем удалите пользователя. Восстановите данные. Что случилось с файлами удаленного пользователя? 32. Восстановите из резервных копий данные только одного пользователя. 33. С использованием tar создайте архив домашних каталогов. Восстановите данные пользователей (всех, одного выбранного, отдельные файлы). Сохранились ли права доступа, ACL? 34. Разделите полученный архив на несколько частей. Соедините их. Проверьте целостность архива. 35. Перенесите домашние каталоги в другую файловую систему так, чтобы для пользователей ничего не изменилось.
55
Практическое занятие № 6 УПРАВЛЕНИЕ ПРОЦЕССАМИ
Процессы в UNIX играют ключевую роль. ОС представляет собой многозадачную среду, в которой одновременно выполняется несколько программ. Каждая программа может запускать и завершать множество процессов в течение своего исполнения. От оптимального планирования процессов и числа одновременно выполняющихся процессов зависит загрузка процессора, что в итоге влияет на производительность системы в целом. 6.1. Наблюдение за процессами Команды, позволяющие осуществлять наблюдение за процессами, приведены в табл.6.1. Таблица 6.1 ps Информация об активных процессах pgrep
Поиск процессов по заданному шаблону, выводит список PID и командную строку, запустившую процесс (исполняемый файл)
prstat
Информация о системных процессах
time timex
Определение времени работы запущенного процесса
6.2. Способы управления процессами Управление процессами можно осуществлять путем задания переменных среды (окружения), запуска процесса в фоновом или активной режиме, планирования работ в системе, а также задавая приоритет выполнения процесса (для фоновых процессов). Управление процессами также осуществляется посредством передачи сигналов. 6.2.1. Задание переменных среды Переменные среды (окружения) определяют среду выполнения процесса. Экспорт переменной в среду осуществляется командой 56
export. Просмотр переменных среды и их значений – команда env. 6.2.2. Запуск процессов в фоновом режиме Для запуска процесса в фоновом режиме нужно поставить значок & в конце командной строки. При завершении сеанса пользователя, запустившего фоновый процесс с помощью &, последний также завершается. Запуск процесса с помощью команды nohup позволяет “защитить” фоновый процесс от выхода пользователя из системы. 6.2.3. Планирование процесса (назначение приоритета) Приоритет процесса – целочисленное значение, которое динамически вычисляется и обновляется на основе некоторых различных факторов. Чем меньше уровень приоритетности, тем процесс предпочтительнее. Процессы с одинаковым уровнем приоритетности помещаются в очередь выполнения для данного значения приоритета. При освобождении ЦП планировщик выбирает процессы из начала непустой очереди с меньшим значением уровня приоритета. Процесс в UNIX имеет два ассоциированных с ним значения приоритета – запрошенный приоритет относительно других процессов (NI) и приоритет, присваиваемый процессу ОС (PRI). Процессу по умолчанию присваивается NI, равный NI его родительского процесса. Доступны значения приоритетов от –20 (самый высокий) до +20 (самый низкий). Процессы пользователя могут иметь приоритет от 0 до +20. Команды, позволяющие задавать приоритет процесса, приведены в табл.6.2. Таблица 6.2 nice Запуск процесса с заданным приоритетом renice
Изменение приоритета процесса
priocntl
Изменение приоритета процесса
Примеры Повышение приоритета процесса nice -5 my_command 57
Изменение приоритета процесса renice -n 5 -p 8200 priocntl -s -p -5 -i pid 8200 для процесса 8200 priocntl -e -c TS -p -10 myfavoriteprogram запуск программы на выполнение 6.2.4. Сигналы Сигналы являются простейшей формой межпроцессного взаимодействия. Сигнал может быть отправлен процессу либо ядром, либо другим процессом с помощью системного вызова kill(). Символьные имена сигналов и их расшифровку можно найти в файле <signal.h>. Для отправки сигналов используются команды kill, pkill. Пример pkill -9 my_prog Если сигнал не задан, то по умолчанию посылается SIGTERM. Пример my_program & kill $! (переменная $! содержит PID последнего запущенного процесса, по умолчанию посылается SIGTERM) При получении сигнала процесс может действовать тремя способами: - проигнорировать сигнал (trap “ “ сигнал) - выполнить действия по умолчанию (trap сигнал) - перехватить и обработать сигнал (trap команда сигнал) Сигналы SIGKILL, SIGSTOP нельзя ни перехватить, ни проигнорировать. 6.2.5. Планирование работ Неинтерактивный запуск процессов осуществляется сервисом cron и командами at, batch. 58
Для запуска по заданному расписанию используется сервис cron. Демон cron планирует системные события в соответствии с командами, заданными в файле crontab. Для доступа к файлу конфигурации используется программа crontab. Формат файла crontab : минута час
день_месяца
месяц
день_недели
команда
Пример 0 1 5,20 * * BackUpProcess > /dev/console
Сервисом cron могут пользоваться только указанные в файле cron.allow или не указанные в cron.deny пользователи. Для однократного запуска программы в указанное время служит команда at, причем право её использования определяют файлы at.allow и at.deny (аналогично cron). Пример at 07:45am today who>/tmp/log at 5pm today + 4 days команды ^D Команду batch следует использовать, если требуется запустить программу когда-либо позднее в так называемом пакетном режиме. Пример batch mylongcalculation ^D
59
Упражнения 1. Запустите терминал. Определите PID процесса, который ассоциируется с запущенным терминалом. 2. Запустите другой терминал. Остановите первый запущенный терминал, послав ему сигнал STOP. 3. Убедитесь, что первый терминал действительно остановлен. 4. Сделайте так, чтобы остановленный терминал продолжил свою работу (пошлите ему сигнал CONT). 5. Напишите shell-программу, выполняющую бесконечный цикл, одну итерацию в секунду. Запустите ее в фоновом режиме. Остановите программу. 6. Напишите программу, которая выдает в бесконечном цикле сообщение, заданное как аргумент. Как остановить такую программу? 7. Запустите программу из предыдущей задачи с пониженным приоритетом. Как повысить ее приоритет? Как запустить несколько таких программ одной командной строкой? Как переключаться между ними? Остановите запущенные Вами программы. 8. Запустите вновь программу из задачи 5 в фоновом режиме и завершите сеанс. Вновь зарегистрируйтесь. Работает ли Ваша программа? Сделайте так, чтобы запущенная Вами в фоновом режиме программа продолжала работать после Вашего выхода из системы. 9. Напишите программу, которая сообщает имя переданного ей сигнала и записывает его в файл с указанием времени события. 10. Напишите программу manager, которая запускает две другие написанные Вами программы с разными приоритетами. Эти программы должны периодически добавлять в файлы некоторую информацию разного объема. При превышении заданного объема одним из файлов manager прекращает выполнение обеих программ и выводит имя той из них, которая создала больший файл. 11. Напишите программу-диспетчер, которая запускала бы две другие shell-программы, каждая из которых выводила бы в цикле сообщение о своей работе. Цель программы-диспетчера – обеспечить 60
псевдопараллельную работу этих программ, поочередно выделяя квант времени для каждой, но так, чтобы в каждый момент времени работала бы только одна программа. 12.* Установите в качестве первичного приглашения идущие часы, меняющие свои показания каждые 10 секунд. 13. Напишите программу-будильник, которая работает в фоновом режиме и в указанное время напоминает пользователю о важном деле. 14. Напишите программу, которая, работая в фоновом режиме, в указанное время отключает пользователя от системы. 15. Напишите shell-программу, которая в фоновом режиме запускает другую shell-программу, указанную ей в качестве аргумента, и печатает сообщение: «имя запущенной программы» already started и ждет завершения программы, после чего сообщает: «имя запущенной программы» finished 16. Запустите какую-либо программу и определить время её выполнения. Определите время выполнения с учетом порожденных ею процессов. 17. Наделите правом устанавливать периодические процессы некоторых пользователей. Наделите таким правом всех, в том числе вновь создаваемых, за исключением нескольких. 18. Установите от имени обычного пользователя «хронометр», который будет выдавать пользователю сообщение каждые 20 минут в рабочие дни. 19. Создайте систему оповещения, сообщающую, что до конца рабочего дня осталось столько-то времени. 20. Запустите процесс с приоритетом по умолчанию и определите время его выполнения. Затем запустите его с пониженным, повышенным приоритетом и вновь определите время его работы. Объясните результат.
61
21. Какой процесс следует уничтожить, чтобы остановить систему? Какой еще сигнал можно послать процессу для останова. Проверьте экспериментально. 22. Запустите программу в пакетном режиме. Определите, когда она была выполнена. 23. Запустите программу в заданное время. Проверьте, выполнилась ли она. 24. Сформируйте задание на запуск программы в заданное время. Можно ли отменить задание?
62
Практическое занятие 7 УСТАНОВКА И УДАЛЕНИЕ UNIX, СИСТЕМНОГО И ПРИКЛАДНОГО ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
7.1 Инсталляция операционной системы Solaris 7.1.1. Тип устанавливаемой системы На этапе установки системы важно определить ту роль, которую будет выполнять система в процессе своей работы. Условно можно выделить два типа установки Unix-системы – серверный тип (server) и автономный тип (standalone). Серверный тип установки подразумевает, что система будет предоставлять свои ресурсы через сеть. Автономная система содержит все свои данные на локальных дисках и не зависит от других систем. Мы рассмотрим вариант установки автономной системы. 7.1.2. Методы установки системы Методы инсталляции операционной системы приведены в табл.7.1. Таблица 7.1 Интерактивная установ- Пошаговая установка ОС в интерактивка ном режиме WebStart
Пошаговая установка ОС с помощью “виртуального ассистента”
JumpStart
Автоматизированная установка ОС на новую систему
Пользовательский JumpStart
Автоматизированная установка ОС на несколько одинаковых новых систем
7.1.3. Способы установки системы Операционная система может быть установлена как с локального CD/DVD-привода, так и по сети. 7.1.4. Выбор устанавливаемой конфигурации Определившись с тем, как будет устанавливаться ОС, следует продумать, в каком объеме будет устанавливаться операционная 63
система. Практически во всех современных дистрибутивах ОС Unix существует возможность выбора типовых вариантов установки и предусмотрена возможность “ручного” выбора устанавливаемых пакетов. Группы файлов объединяются в пакеты (пример – пакет документации). Пакеты объединяются в программные кластеры (пример – графический пользовательский интерфейс Gnome). Программные кластеры объединяются в кластеры конфигурации, которые образуют типовые конфигурации. В ОС Solaris существует пять основных типовых вариантов установки (табл.7.2), причем каждый последующий включает в себя предыдущие. Таблица 7.2 Core Набор минимального комплекта ПО для работы и загрузки системы, применим для автономных систем, но неприменим для серверов. Нет GUI и man End User
Core+GUI
Developer
END USER + компилятор и man
Entire Dis- Developer + дополнительное ПО. Является полным tribution вариантом установки ОС Entire Dis- Entire Distribution + дополнительные драйверы tribution устройств Plus OEM В зависимости от выбора варианта установки изменяются требования к ресурсам, необходимым для установки ОС. Минимальные ресурсы для ОС Solaris 9 приведены в табл.7.3. Таблица 7.3 Процессор SPARC, Intel Жесткий диск
1Gb (рекомендуется 2.5Gb для поддержки программного обеспечения, области swap и прочих накладных расходов)
Память
64Mb CDROM или доступ по сети к компьютеру JumpStart
64
7.1.5. Установка системы на жесткий диск Для установки системы с локального CDROM нужно загрузиться с него, далее следовать указаниям графического интерфейса. Программа Solaris Install позволяет возвращаться к предшествующим экранам и не производит никаких действий по установке до тех пор, пока не дойдет до конца -- не сообщит о том, что готова начать процесс установки ОС и не получит подтверждение со стороны пользователя (confirm). Процесс инсталляции по шагам: 1 этап. Определение конфигурации системы Interactive Выбор типа инсталляции Выбор типа оконной системы
VMWare (если используется одноименная виртуальная машина)
Выбор языка установки
English 0
Поддержка работы в сети
Networked
Использование протокола динамиче- Yes ской настройки хостов DHCP (автоматическая генерация IP-адреса) Поддержка Internet-протокола IPv6
No
Поддержка службы защиты Kerberos No Security Поддержка службы имен
None
Часовой пояс
Offset from GMT +3 (Москва)
Дата и время
Корректируем(+4 часа от GMT)
Пароль суперпользователя
Ввести пароль
Подтверждение правильности введенных данных
–– 65
2 этап. Установка Перезагрузка системы после оконча- Yes ния процесса инсталляции Извлечь CD инсталляции
после
окончания Yes
Устройство инсталляции
CD/DVD
Лицензионное соглашение
Accept
Выбор варианта установки (обнов- Initial ление или полная переустановка) Выбор установки по умолчанию или Custom настраиваемой Выбор географического региона
Western Europe
Выбор локали
en_US (по умолчанию) Возможен выбор русских локалей UTF8, ISO8859-5, KOI8-R, CP1251, см. /etc/TIMEZONE
Выбор кластера программного обес- Entire Distribution печения Выбор диска
Если в системе несколько дисков
Выбор автоматически создаваемых На скольких разделах расфайловых систем положена ОС, является ли HOME отдельным разделом Дополнительная настройка разделов
Размер разделов может быть изменён
Подтверждение выбранной конфигурации
––
Установка системы
––
66
7.2. Команды Boot PROM SPARC Установка на систему SPARC имеет свои особенности. Ниже приведены основные команды монитора загрузки системы. Загрузка с CDROM в системе SPARC: stop-A OK boot cdrom Другие команды Boot PROM SPARC приведены в табл.7.4. Таблица 7.4 boot disk Загрузка с диска по умолчанию reset
Аппаратная реинициализация
probe-scsi Опрос шины SCSI sync
Синхронизация буферов
go
Возобновление работы после stop-A
printenv
Печать переменных конфигурации
setenv
Установка переменных конфигурации
Опции команды boot: a - интерактивная загрузка, r - реконфигурация при загрузке, создание файлов устройств, s - перевод системы на уровень s. 7.3. Установка дополнительных пакетов ПО Состав программного обеспечения может быть изменён после установки системы. Команды для работы с пакетами ПО приведены в табл.7.5. Таблица 7.5 pkgadd
Установка пакета
pkgrm
Удаление пакета 67
Продолжение таблицы 7.5 pkginfo
Отображение информации о пакете
pkgask
Подготовка сценария установки пакета для последующей множественной установки с сохранением ответов на вопросы установщика
pkgchk
Проверка корректности установки пакета
installf
Добавляет файл в базу данных ПО
removef
Удаляет файл из базы данных ПО
Предусмотрена возможность копирования пакета без установки в специальный каталог, откуда затем он может быть установлен. Следует отметить, что часто пакеты организованы в виде каталога. Пример 1 (копирование пакета). pkgadd -s Informix.pkg Пример 2 (установка пакета). pkgadd -d mc-4.6-x86.pkg 7.4. Установка пакетов исправлений ОС Исправления ошибок в ПО оформляются в виде пакетов – патчей. Если пакет исправлений конфликтует с установленным ПО, он может быть удалён. Команды для работы с пакетами исправлений приведены в табл.7.6. Таблица 7.6 patchadd
Установка исправления
patchrm
Удаление исправления
showrev
Отображение информации о пакетах исправлений
68
Именование патчей ОС Solaris представлено в примере. Пример (установка патча). pаtchadd 106925-02 7.5. Изменение конфигурации ядра OC Solaris Ядро ОС Solaris является автоконфигурируемым. Чтобы инициировать переконфигурацию ядра, следует создать в корне файловой системы файл reconfigure: cd / touch /reconfigure (просьба пересоздать path_to_inst) При добавлении устройства систему следует перезагрузить с опцией -r: boot -r Ядро загружает свои компоненты по потребности из следующих каталогов: /kernel/drv драйверы, /kernel/exec модули для запуска выполняемых файлов, /kernel/fs модули файловых систем, /kernel/misc память и межпроцессное взаимодействие, /kernel/shed диспетчеризация, /kernel/sys системные вызовы, /usr/kernel загружаемые модули. Загрузка/выгрузка модулей может производиться вручную командами: modinfo список загруженных модулей, add-drv загрузить, rem-drv выгрузить, modload/modunload используются для модулей, доступ к которым осуществляется не через файлы устройств. Параметры ядра могут быть получены по команде sysdef –i. Основной файл конфигурации системы /etc/system. По умолчанию он пуст (содержит только комментарии), что может 69
быть использовано для восстановления работоспособности системы, если была допущена ошибка при указании нестандартных параметров. Следует загрузить систему с опцией -a (boot -a)и на вопрос о пути до файла /etc/system ответить Name of system file [/etc/system]: /dev/null или ввести путь до резервной копии файла. В файле могут быть указаны нестандартные значения параметров в формате set переменная=значение, например, set maxusers=40. Модули ядра могут быть загружены принудительно (директива forceload) или их загрузка может быть запрещена (директива exclude). Описание некоторых настраиваемых параметров ядра приведены в табл.7.7. Таблица 7.7 physmem Количество страниц физической памяти (позволяет моделировать эффект меньшей памяти) maxusers
Максимальное количество пользователей в системе
lwp_default_stksize Размер стека LWP по умолчанию max_nprocs
Максимальное число процессов, которые могут быть созданы в системе
maxuprc
Максимальное число процессов одного пользователя
lotsfree
Число страниц, при котором начинать сброс на диск
tune_t_minarmem
Количество страниц, доступных резидентно
70
rstchown = 1/0
Продолжение таблицы 7.7 Разрешение/запрет процессу изменять собственника и группу
ufs_ninode
Кол-во индексных дескрипторов для хранения в памяти
msgsys:msginfo_msgmax
Максимальный размер сообщения в очереди, байт
semsys:seminfo_semmns
Число семафоров в системе
semsys:seminfo_semvmx
Максимальное значение семафора
semsys:seminfo_semmsl
Число семафоров в наборе
shmsys:shminfo_shmmax
Максимальный размер сегмента разделяемой памяти
shmsys:shminfo_shmmni
Число сегментов разделяемой памяти
7.6. Настройка справочной системы Поиск в справочной системе производится в каталогах, перечисленных в переменной окружения MANPATH. Справочная система man может быть настроена программой catman. После добавления статей в систему необходимо перестроить базу данных whatis, которая используется при поиске по ключевым словам (catman -w). Поиск обычно производится по возрастанию номеров разделов. Изменить порядок поиска можно в файле man.cf. 7.7. Настройка загрузчика Необходимость в изменении конфигурации загрузчика возникает при установке второй и более ОС на компьютер. В табл.7.8 приводятся некоторые директивы конфигурационного файла загрузчика GRUB (широко применяется в Linux и начинает использоваться в Solaris). 71
Таблица 7.8 Директива
Назначение
title
Строка меню
root
Место установки
timeout
Время, отводимое на выбор варианта загрузки
password
Пароль
default
Вариант загрузки по умолчанию
makeactive
Сделать раздел активным
savedefault
Не изменять флаг
Пример (фрагмент, для Linux) Добавить загрузку системы Windows с раздела 2 первого жесткого диска: title Windows root (hd0,1) savedefault chainloader +1 Упражнения 1. Установите систему в виртуальной машине. При разметке дискового пространства оставьте свободное место для последующего создания файловых систем. 2. Внесите изменения в файл конфигурации Solaris. Убедитесь в работоспособности системы. 3. Перезапустите ОС с указанием ядру, что произошло изменение в конфигурации системы. 4. Определите, какие модули загружены. Попробуйте выгрузить/ загрузить какой-либо модуль. 72
5. Определите, установлен ли в системе компилятор gcc, используя систему управления пакетами. 6. Получите список всех пакетов, установленных в системе. 7. Установите компиляторы GNU C и C++. Убедитесь, что компиляторы установлены. 8. Найдите в дистрибутиве пакеты, ещё не установленные в системе. Установите, затем удалите один или несколько таких пакетов. 9. Установите патчи. Определите, какие патчи установлены в системе. 10. Определите версию системы, архитектуру, наименование и прочие сведения о системе. 11. Определите текущее время. Установите дату и время с точностью до секунды. 12. Измените время, используя процедуру плавной корректировки. 13. Определите текущую локаль системы. 14. Измените локаль системы по умолчанию (варианты – CP1251, KOI8-R, UTF-8, ISO8859-5, C/POSIX). 15*. Найдите в системе конфигурационный файл загрузчика. Определите параметры, с которыми загружается система. 16*. Добавьте пункт в меню загрузки – загрузку системы с другими параметрами. 17*. Измените время ожидания выбора пункта меню. 18*. Добавьте загрузку системы с соседнего раздела.
73
Практическое занятие 8 НАСТРОЙКА СЕТИ
8.1. Информационные команды Утилиты, используемые для получения информации о работающих в сети пользователях и компьютерах, приведены в табл.8.1.
users who
Таблица 8.1 Список текущих пользователей локального хоста
rusers rwho w
Список текущих пользователей локальной сети
whois
Информация о главных интернет-узлах
finger
Подробная информация о пользователях в системе
8.2. Файлы конфигурации сети Имя хоста Установить имя компьютера (хоста) можно командой hostname новое_имя, это имя помещается в файл /etc/nodename. Сетевые интерфейсы IP-адрес интерфейса указывается в файле /etc/hostname.интерфейс. Этот файл создается программой инсталляции Solaris,
причем в имени файла слово интерфейс заменяется на имя устройства первичного сетевого интерфейса, например, /etc/hostname.le0. Аналогичные файлы должны быть созданы для каждого сетевого адаптера, имеющегося в системе. Маска подсети извлекается из файла /etc/netmasks.
74
Виртуальные сетевые интерфейсы Один сетевой адаптер может иметь несколько IP-адресов. В этом случае следует создать дополнительные файлы, содержащие адреса. Пример. Второй IP-адрес интерфейса le0 следует записать в файл /etc/hostname.le0:1 Шлюз по умолчанию Шлюз задается IP-адресом, который записывается в файл /etc/defaultrouter. Именование хостов Файл /etc/inet/hosts содержит имена хостов и IP-адреса, о которых должна знать данная машина. Каждая строка файла имеет формат: address hostname [nickname] [#comment]] | | | | IP
| | | имя хоста
| | | комментарий мнемоническое имя (псевдоним) хоста
Исходный файл /etc/inet/hosts создается при инсталляции, изначально содержит минимальное количество элементов – адрес интерфейса обратной петли (loopback), IP-адрес и имя хоста. Пример 127.0.0.1 localhost 192.8.200.3 octopussy
loghost
#loopback address #hostname
Именование домена Файл /etc/defaultdomain присутствует только в том случае, если сеть использует какую-нибудь службу имен, и содержит один элемент – полное официальное доменное имя того административного домена, к которому принадлежит сеть этого локального узла.
75
8.3. Программы конфигурирования и тестирования сети Программа ifconfig Формат команды: ifconfig интерфейс [семейство] адрес действие опция, где интерфейс – имя драйвера (например, le0, iprb0), семейство – по умолчанию inet для протокола IP (может быть опущено), действие – up, down – включение/выключение интерфейса. Опции команды ifconfig : netmask – задание маски подсети, broadcast – задание широковещательного адреса. Пример 1 ifconfig le0 127.0.0.1 up Пример 2 ifconfig en0 128.136.144.1 up netmask 255.255.255.0 broadcast 128.136.144.255 Интерфейсы становятся доступными по команде ifconfig plumb. При указании имени интерфейса в качестве аргумента программа выдаёт его характеристики. Программа route Программа route используется для изменения таблиц маршрутизации. Формат команды: route [-f] операция [тип] адрес шлюз счетчик, где операция – add, delete – добавление или удаление записи (чтобы удалить все записи, используется опция -f), тип – net или host, в зависимости от адресата, адрес – адрес сети, хоста или ключевое слово default, шлюз – адрес во внутренней сети, на который посылать пакет для достижения адресата, счетчик – число переходов до адресата, используется, если имеется несколько шлюзов, через которые достижим адресат. Пример: установка шлюза по умолчанию route add default 198.160.50.10 76
Программа ping Программа ping проверяет доступность хоста, его работоспособность и достижимость по сети. Формат команды: ping опции хост [timeout] Некоторые опции: -v расширенный вывод информации, -l интервал времени между успешными передачами (по умолчанию одна секунда), -s посылать одну датаграмму в интервал времени до тех пор, пока не наступит timeout или не будет прерывания. Пример ping 198.160.50.8 Программа traceroute Позволяет проследить маршрут, по которому сетевые пакеты доставляются адресату. Пример traceroute 198.160.50.8 Программа netstat Отображает состояние и характеристики сетевых соединений. Пример. Отображение таблицы маршрутизации netstat -r Программа spray Позволяет провести тестирование надежности сети и установить, были ли факты задержки или отбрасывания пакетов. 8.4. Защита информации в сети. Доверяемые хосты Список доверяемых хостов для некоторой системы содержится в файле /etc/hosts.equiv по одному имени в строке. Если пользователь имеет права суперпользователя в системе, то он имеет те же права и на любом доверяемом хосте. Формат строки файла /etc/hosts.equiv: systemA – хост systemA является доверяемым для любого пользователя, 77
systemA username – хост systemA является доверяемым только для username. Если в файле /etc/hosts.equiv единственная строка содержит символ +, то каждый известный хост является доверяемым. В файле /.rhosts содержится список хостов и пользователей. Если в файле упоминается комбинация хост-пользователь, то данному пользователю гарантируются полномочия на регистрацию в режиме дистанционного доступа от указанного хоста без предъявления пароля. Пользователь может создать свой файл rhosts (размещается в домашнем каталоге) и тем самым разрешить доверяемый доступ между собственными учетными записями на различных системах без использования записей в файле /etc/hosts.equiv.
8.5. Коммуникационные программы Программы, используемые для регистрации и работы в другой системе локальной сети, приведены в табл.8.2. Таблица 8.2 Программа
Описание
telnet
Регистрация в другой системе
ftp
Передача файлов между двумя системами в сети
rlogin
Регистрация в другой системе данной сети; если файлы /.rhosts и /etc/hosts.equiv правильно сконфигурированы, то нет необходимости вводить имя и пароль, в отличие от telnet.
rcp
Аналогична cp и не требует ввода имени и пароля
rsh
Выполнение команды на другой машине в сети, не требует пароля
rexec
Аналогична rsh, но требует пароль
rup
Статус (состояние) хостов удаленных систем
78
Пример 1. Копирование файла с локальной машины на машину hippo rcp /etc/hosts hippo:/etc/hosts Пример 2. Удалённое выполнение программы rsh hippo ls –l /etc Основным средством передачи файлов между машинами в сетях, в том числе в сети Internet, является сервис ftp. Команды описаны в табл.8.3. Таблица 8.3 Команда
Описание
!команда
Выполнение команды на локальном хосте
help [команда]
Справка
bye или quit
Закрытие сеанса связи и выход из ftp
close
Закрытие сеанса
open имя_хоста
Установка связи с хостом
ascii
Включение текстового режима
binary
Включение двоичного режима
hash
Копирование отображается индикатором #
append лок_файл удал_файл
Добавление локального файла к удаленному файлу
delete удал_файл
Удаление файла на удаленной машине
cd каталог
Изменение текущего рабочего каталога на удаленной машине
79
Продолжение таблицы 8.3 Команда
Описание
lcd [каталог]
Изменение текущего каталога на локальной машине
get удал_файл Копирование удаленного [лок_файл] локальный файл mget маска put удал_файл
файла
в
Копирование удаленных файлов по маске лок_файл Копирование локального удаленный файл
файла
в
mput маска
Копирование локальных файлов по маске
ls
Просмотр содержимого удаленного каталога
mkdir
Создание удаленного каталога
rmdir
Удаление удаленного каталога
pwd
Вывод имени текущего каталога
rename удал_файл1 Переименование удаленного файла удал_файл2
Упражнения 1. Определите имя компьютера, на котором Вы работаете. 2. Измените имя компьютера. Удостоверьтесь, что изменения вступили в силу. 3. Определите число и наименование сетевых интерфейсов, имеющихся в системе. 80
4. Определите IP-адрес системы. 5. Измените IP-адрес системы и сетевую маску. 6. Создайте дополнительный виртуальный интерфейс (назначьте системе альтернативный адрес). 7. Отобразите таблицу маршрутизации. 8. Задайте шлюз по умолчанию. 9. Задайте шлюз для некоторых адресов и сетей явно. Отобразите таблицу маршрутизации. 10. Проверьте наличие связи с соседними компьютерами. 11. Предоставьте право пользователю соседнего компьютера регистрироваться на Вашем компьютере. Какими способами это можно сделать. 12. Попробуйте зарегистрироваться на соседнем компьютере, предполагая, что на нём выполнено задание 11 в отношении Вас. 13. Сконфигурируйте систему так, чтобы при обращении к машинам локальной сети можно было бы использовать имена, а не IPадреса. 14. Временно отключите сетевой интерфейс. Проверьте, можно ли подключиться к Вашей системе. С помощью каких программ можно определить работоспособность интерфейса. 15. Запустите сетевой интерфейс. Проверьте его работоспособность. Посмотрите его характеристики. 16. Измените IP-адрес системы, не внося изменений в файлы конфигурации. Сохранились ли изменения после перезагрузки системы? 17. Как сделать, чтобы изменения IP-адреса сохранились после рестарта системы? 18. Решите задачи 16 и 17 в отношении шлюза по умолчанию. 19. В какие файлы следует внести изменения, если изменился IPадрес? Если изменилась сетевая маска? 81
20. Определите маршрут до заданного компьютера. Сколько промежуточных шлюзов используется? 21. Очистите таблицу маршрутизации и попробуйте определить маршрут до компьютера из задания 20. Объясните результат. Какую команду следует выполнить, чтобы исправить положение? 22. Выполните команду на удаленной машине. 23. Передайте файл на другую машину. 24. Скопируйте файл на свою машину. 25. Выполните задания 23 и 24, одновременно пересылая несколько файлов. 26. Каким способом Вы копировали файлы? Существуют ли другие способы? 27. Как убедиться, что Вы действительно скопировали файлы на другую машину (ftp не использовать)? 28. Скопируйте двоичный (исполняемый) файл на другую машину. В каком режиме он скопирован. Запустите его. Не поврежден ли файл. Измените режим и повторите опыт. 29. Несколькими способами создайте каталог на удаленной машине. 30. Зарегистрируйтесь с помощью telnet на удаленной машине несколько раз. Определите процессы, отвечающие за работу на удалённой машине. Принудительно разорвите одно из соединений. 31. Определите, не подключился ли кто к Вашей машине. Разорвите все соединения и запретите любые подключения.
82
СПИСОК ЛИТЕРАТУРЫ
1. Дунаев С.Б. UNIX System V Release 4.2. Общее руководство. М.: Диалог-МИФИ, 1996. 2. Гласс Г., Эйблс К. UNIX для программистов и пользователей. СПб.: БХВ-Петербург, 2004. 3. Кэлкинс Б. Solaris 8: Сертификация системного администратора. Киев: ООО ”ТИД” ДС”, 2003. 4. Немет Э. и др. UNIX. Руководство системного администратора. Киев: BHV, 1997. 5. Уинзор Дж. Solaris. Руководство системного администратора. 3-е изд. СПб.: Питер, 2003.
83