Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Практикум по администрированию программного обеспечения. Лабораторный практикум

.pdf
Скачиваний:
0
Добавлен:
11.08.2026
Размер:
662 Кб
Скачать

Лабораторный практикум

R – рекурсивное назначение прав. Т. е. назначить права всем объектам, руководствуясь регулярным выражением.

Например :

chmod -R 755 * – Назначение прав всем объектам текущего каталога, включая подкаталоги.

chmod -R 700 z* – Назначить полные права для владельца и исключить права для группы и всех остальных для всех объектов, которые начинаются именоваться на z, находящиеся в текущем каталоге и его подкаталогах.

Права можно записывать как в восьмеричном представлении, так и в символьном. В восьмеричном представлении, для стандартных прав, указываются 3 восьмеричные цифры.

Например :

chmod 744 koshka.txt – установит права для файла koshka. txt – (r w x r – – r – -);

chmod -R 775 sobaki – установит права на каталог sobaki и на все объекты, что внутри этого каталога, включая содержимое подкаталогов (r w x r w x r – x);

chmod 700 * – установит права только для владельца на все файлы и каталоги в текущем каталоге, включая подкаталоги и их объекты (rwx – – – – – -).

Другой способ назначения прав – это использование маски режима доступа (символьное представление). Помимо прав задается информация, кому мы собираемся эти права выставлять:

u – владельцу объекта; g – группе объекта;

- – пользователю «все остальные»; a – все вышеперечисленное.

Для назначения прав используются три знака: минус, плюс или равно:

- – убрать указанные права с объекта; + – добавить указанные права к существующим правам объекта;

= – заменить права объекта на указанные. Пример :

chmod g+w koshki.txt – Добавить пользователям группы файла koshki.txt права на запись в этот файл;

chmod a=rwx sobaki.doc – Заменит существующие права на файле sobaki.doc на полные права всем;

chmod o-w test.cgi – Уберет права на запись для пользователя «Все остальные».

chmod ug=rw spisok.doc – Выставить права на чтение и запись файлу spisok.doc для владельца и группы. Обратите внима-

21

Практикум по администрированию программного обеспечения

ние, что если у пользователя «все остальные» были какие-либо права, они сохранятся в неизменном виде.

Использование символьного представления позволяет редактировать права файлов более гибко:

chmod u+x,g+w-x koshki.txt – Добавить владельцу файла koshki.txt права на его выполнение, пользователям группы разрешить запись и запретить выполнение и оставить права остальных пользователей без изменений;

chmod u=rwx,g+w,go-x sobaki.doc – Установить полные пра-

ва для владельца файла, разрешить пользователям группы запись и запретить выполнение всем пользователям, кроме владельца файла.

Символьное назначение окажет неоценимую услугу, если требуется добавить права на объект к уже существующим правам.

Биты SUID, SGID и Sticky. Unix отслеживает не символьные имена владельцев и групп, а их идентификаторы (UID – для пользователей и GID для групп). Эти идентификаторы хранятся в файлах /etc/passwd и /etc/group соответственно. Символьные эквиваленты идентификаторов используются только для удобства, например, при использовании команды ls, идентификаторы заменяются соответствующими символьными обозначениями.

Если при создании пользователя основная группа не указана явно, то основной группой пользователя будет группа с тем же именем, что и имя пользователя.

Что касается процессов, то с ними связано не два идентификатора, а четыре: реальный и эффективный пользовательский (UID),

атакже реальный и эффективный групповой (GID). Реальные номера применяются для учета использования системных ресурсов,

аэффективные для определения прав доступа к процессам. Как правило, реальные и эффективные идентификаторы совпадают. Владелец процесса может посылать ему сигналы, а также изменять приоритет.

Процесс не может явно изменить ни одного из своих четырех идентификаторов, но есть ситуации, когда происходит косвенная установка новых эффективных идентификаторов процесса. Дело в том, что существуют два специальных бита: SUID (Set User ID – бит смены идентификатора пользователя) и SGID (Set Group ID – бит смены идентификатора группы). Когда пользователь или процесс запускает исполняемый файл с установленным одним из этих битов, файлу временно назначаются права его (файла) владельца или группы (в зависимости от того, какой бит задан). Таким обра-

22

Лабораторный практикум

зом, пользователь может даже запускать файлы от имени суперпользователя:

восьмеричные значения для SUID и SGID – 4000 и 2000;

символьные: u+s и g+s.

В общем, установка битов SUID или SGID позволит пользователям запускать исполняемые файлы от имени владельца (или группы) запускаемого файла. Например, как говорилось выше, команду chmod по умолчанию может запускать только root. Если мы установим SUID на исполняемый файл /bin/chmod, то обычный пользователь сможет использовать эту команду без использования sudo, так что она будет выполняться от имени пользователя root. Кстати по такому принципу работает команда passwd, c помощью которой пользователь может изменить свой пароль.

Если установить SGID для каталога, то все файлы, созданные в нем, при запуске будут принимать идентификатор группы каталога, а не группы владельца, который создал файл в этом каталоге. Аналогично SUID. Иными словами, если пользователь поместил исполняемый файл в такой каталог, запустив его, процесс запустится от имени владельца (группы) каталога, в котором лежит этот файл.

Однако в системе FreeBSD, если скомпилировать ядро с поддержкой suiddir, а так же смонтировать раздел с этой опцией, все объекты, создаваемые в каталоге, где установлен SUID, будут иметь владельца этого каталога (наследование). Реализация подобного в Linux возможна на файловой системе GFS2. Данная функция считается уязвимостью. Установить SUID и SGID можно командой chmod:

chmod 4755 koshka.pl – устанавливает на файл koshka.pl бит SUID и заменяет обычные права на 755 (rwxr-xr-x).

chmod u+s koshka.pl – то же самое, только обычные права не перезаписываются.

chmod 2755 koshka.pl – устанавливает на файл koshka.pl бит SGID и заменяет обычные права на 755 (rwxr-xr-x).

chmod g+s koshka.pl – то же самое, только обычные права не перезаписываются.

Снять установленные биты можно различными способами:

chmod u-s koshka.pl – убираем SUID;

chmod g-s koshka.pl – убираем SGID;

chmod 0644 koska.pl – убираем все дополнительные биты и меняем права на 644.

23

Практикум по администрированию программного обеспечения

Очевидно, что использование стандартных прав Unix не достаточно при реализации сложных схем доступа. Они не так гибки, как хотелось бы. Даже используя различные биты доступа в сочетании со стандартными правами, желаемого эффекта в большинстве случаев добиться не удастся.

В больших сетях с многоуровневыми схемами доступа применяется более гибкая реализация назначения прав, именуемая как

ACL.

Практическое задание

1.Изучить и описать структуру каталогов в стандарте иерархии файловой системы.

2.Собрать информацию о правах доступа по умолчанию к важным каталогам в системе.

3.Создатьпользователейuser1,user2,user3(принадлежностьк группам и пароль – произвольные, остальное – по умолчанию). Со-

здать каталоги /share/12, /share/13, /share/23. Настроить совмест-

ную работу с этими каталогами: в каталоге /share/12 пользователи user1 и user2 могут создавать каталоги и файлы, оба пользователя должны получать все права на них, а пользователь user3 – только права на чтение; в каталоге /share/13 пользователи user1 и user3 могут создавать каталоги и файлы, оба пользователя должны получать все права на них, а пользователь user2 – только права на чтение; в каталоге /share/23 пользователи user2 и user3 могут создавать каталоги и файлы, оба пользователя должны получать все права на них, а пользователь user1 – только права на чтение. Права должны наследоваться создаваемыми файлами и каталогами рекурсивно. Выражение «все права» подразумевает наличие права и на чтение, и на запись.

Контрольные вопросы

1.Типы файловых систем. Их преимущества и недостатки.

2.Опишите стандарт иерархии файловой системы.

3.Как реализуются права доступа в ОС Linux?

4.Структура учетных записей и групп в ОС Linux.

5.Преимущества и недостатки встроенных прав доступа в ОС

Linux.

Литература : 1, 2, 3, 4.

24

Лабораторный практикум

4. ИССЛЕДОВАНИЕ МЕНЕДЖЕРА ПАКЕТОВ И РЕПОЗИТОРИЯ ОС LINUX

Цель – научиться устанавливать, удалять и обновлять пакеты, получить представление о структуре и задачах репозитория.

Формируемые компетенции или их части: ПК-12; ПК-37.

Теоретическая часть

В Ubuntu, как и в других операционных системах, есть понятие зависимостей.Этозначит,чтопрограммуможноустановить,только если уже установлены пакеты, от которых она зависит. Такая схема позволяет избежать дублирования данных в пакетах (например, если несколько программ зависят от одной и той же библиотеки, то не придётся помещать эту библиотеку в пакет каждой программы – она вставится один раз отдельным пакетом). В отличие, например, от Slackware или Windows, в Ubuntu зависимости разрешаются пакетным менеджером (Synaptic, apt, Центр приложений, apt-get, aptitude) – он автоматически установит зависимости из репозитория. Зависимости придётся устанавливать вручную, если нужный репозиторий не подключен, не доступен, если нужного пакета нет в репозитории, если вы ставите пакеты без использования пакетного менеджера (используете Gdebi или dpkg), если вы устанавливаете программу не из пакета (компилируете из исходников, запускаете установочный run/sh скрипт).

Установка из репозиториев. Репозиторий – место централи-

зованного хранения пакетов программного обеспечения. Использование репозиториев позволяет упростить установку программ и обновление системы. Пользователь волен выбирать, какими репозиториями будет пользоваться, и даже может создать собственный. Список используемых репозиториев содержится в файле

/etc/apt/sources.list и в файлах каталога /etc/apt/sources.list.d/, проще всего его посмотреть через специальное приложение, которое можно вызвать через главное меню: Система→Администрирование→ Источники Приложений, или через Менеджер пакетов Synaptic.

Если вы не добавляли локальные репозитории (например, CD/ DVD диски), то для установки программ из репозиториев вам понадобится Интернет.

У такого метода установки программ есть множество преимуществ: это удобно, так как вы устанавливаете уже протестированные программы, которые гарантированно будут работать на вашей

25

Практикум по администрированию программного обеспечения

системе; зависимости между пакетами будут решаться автоматически, при появлении в репозитории новых версий установленных программ вас об этом проинформируют.

Установка из командной строки позволяет получить больше информации о процессе установки и позволяет гибко его настраивать, хотя и может показаться неудобной начинающему пользователю.

Advanced Packaging Tool – набор утилит для управления программными пакетами в операционных системах, основанных на Debian. APT предоставляет дружественную надстройку над DPKG

ипозволяет:

устанавливать, удалять и обновлять пакеты,

решать зависимости,

искать пакеты по заданным критериям,

просматривать подробную информацию о пакете,

манипулировать ключами от репозиториев.

APT является одной из базовых программ и включена в состав

Ubuntu.

Настройки. Все файлы настроек APT хранятся в директории

/etc/apt. apt.conf.

/etc/apt/apt.conf – основной файл настроек, используемый всеми инструментами из состава APT. Описание всех возможных настроек и опций можно прочитать в документации к нему:

man apt.conf

apt.conf.d. Директория содержит в себе файлы конфигурации, аналогичные по синтаксису apt.conf. При помощи этой директории можно быстро и удобно манипулировать настройками APT добавляя или удаляя подготовленные файлы с настройками.

auth.conf. Файл содержит ключи для авторизации в репозиториях. Например, туда добавляются логины и пароли от репозиториев к купленным в Центре приложений программам.

sources.list. Файл с перечнем репозиториев.

sources.list.d. Директория с файлами репозиторий, по назначению аналогичных sources.list. Каждый репозиторий описывается в отдельном файле.

Использование. В APT входит несколько утилит, выполняющих отдельные задачи.

apt-get – это утилита управления пакетами. apt-get требует прав суперпользователя для своей работы.

Основные команды:

update – обновить информацию о пакетах, содержащихся в репозиториях;

26

Лабораторный практикум

install foo – установить пакет foo. Скачивание, установка и настройка происходят автоматически. Если для настройки пакета foo нужны дополнительные сведения, будет показан запрос к пользователю;

upgrade – обновление пакетов, для которых в репозитории доступны новые версии;

dist-upgrade – обновление пакетов, требующих разрешения зависимостей (установка дополнительных или удаление конфликтующих пакетов);

remove foo – удаление пакета foo из системы.

purge foo – удаление пакета foo и очистка системы от его конфигурационных файлов. Файлы настроек в домашних каталогах пользователей удалены не будут;

autoremove – удаление пакета, который более не нужен в системе. Используется для очистки системы от ненужных пакетов. Факт, что пакет более не нужен, определяется следующим образом: если пакет был установлен не сам по себе, а как зависимость для другого пакета, который впоследствии был удалён, значит, этот пакет тоже уже не нужен в системе;

source foo – получение исходных текстов пакета foo;

build-dep foo – получение зависимостей для сборки пакетаfoo.

Починка базы пакетов

apt-get также используется для устранения сбоев в базе паке-

тов вызванных нарушенными зависимостями. Разрешение зависимостей производится командой:

sudo apt-get install –f.

apt-cache – утилита, позволяющая выполнять запросы к кешу

APT.

Основные команды:

search – поиск пакета по части названия или описания. Поддерживает регулярные выражения;

show – информация о пакете: версия, размер, описание и т. п.; depends – зависимости указанного пакета;

rdepends – обратные зависимости пакета.

apt-key служит для добавления ключей от репозиториев в систему. Ключи защищают репозитории от возможности подделки пакета.

Основные команды:

add – добавление ключа в базу доверенных ключей; del – удаление ключа из доверенных.

27

Практикум по администрированию программного обеспечения

Контрольные вопросы

1.Какие задачи решает репозиторий и менеджер пакетов?

2.Опишите типовой сценарий взаимодействия с менеджером пакетов при утсановка новой программы.

3.Основные системы управления пакетами. Их отличия.

4.Опишите алгоритм подключения стороннего репозитория.

5.Способы публикации собственных программных продуктов

врепозитории.

Литература : 1, 2, 3, 4.

5. РАЗРАБОТКА СКРИПТОВ ДЛЯ АВТОМАТИЗАЦИИ ОПЕРАЦИЙ АДМИНИСТРИРОВАНИЯ

Цель – научиться разрабатывать скрипты для выполнения типовых задач администрирования серверов.

Формируемые компетенции или их части: ПК-12; ПК-37.

Теоретическая часть Командный интерпретатор нужен для обеспечения взаимодей-

ствия пользователя с функциями системы – интерфейса. Одним из таких интерпретаторов является Bash, от английского «Bourne again shell» – усовершенствованная версия командной оболочки Bourne shell, которая была создана Стивеном Борном в 1977 г. и доработана Брайаном Фоксом в 1987 г. Будучи одним из популярных среди подобных себе в среде Linux, bash зачастую используется в качестве предустановленной командной оболочки.

Bash – это командный процессор, который работает, в основном, в интерактивном режиме в текстовом окне. Также Bash может считывать команды из файла, который называется скриптом. Как

ивсе Unix-оболочки, он поддерживает автодополнение имён файлов и директорий, подстановку вывода результата команд, переменные, контроль за порядком выполнения, операторы ветвления

ицикла. Ключевые слова, синтаксис и другие основные особенности языка были заимствованы из Bourne shell. Другие же функции были скопированы из C shell и Korn shell.

28

Лабораторный практикум

Но Bash является не только программной оболочкой, но также и языком написания сценариев (скриптов). Скрипты позволяют в полной мере использовать возможности оболочки и автоматизировать огромное количество задач, которые иначе потребуют для своего выполнения ввода множества команд.

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

Синтаксис команд Bash – это расширенный синтаксис команд Bourne shell. Окончательная спецификация синтаксиса команд

Bash есть в Bash Reference Manual.

Обычно скрипты имеют расширение «.sh». Это позволяет определить, что файл является скриптом.

Переменные «PS1» и «PS2» устанавливают первичное и вторичное приглашение командного интерпретатора. Первичное приглашение «PS1» указывает на готовность интерпретатора к вводу команд. Проверить, запущен ли Bash можно командой «echo \$SHELL». Любой скрипт написанный на Bash должен начинаться со строки «#!/bin/bash», в ней указывается путь к интерпретатору. Комментарии так же должны начинаться с символа «#». После первой можно добавить строки «set -o nounset» и «set -o errexit» – первая защищает от попыток использовать необъявленные переменные, а вторая позволяет игнорировать аварийное завершение программ.

Перед выполнением скрипта необходимо сделать его исполняемым, осуществляется это с помощью команды «$ chmod ugo+x your_shell_script.sh».

В языке Bash существуют функции, которые с помощью команд позволяют ему выполнять над строкой ряд преобразований:

команда «alias» – назначает псевдоним команды, то есть обеспечивает сокращенный ввод длинных команд. Команда «unalias» удаляет псевдоним;

метасимволы (wildcards) – позволяют ссылаться одновременно на более чем один файл;

переменные командного интерпретатора – как и любой язык программирования Bash поддерживает переменные. Имя переменной должно начинаться с буквы и может состоять из латинских букв,

цифр и знака подчеркивания;

29

Практикум по администрированию программного обеспечения

– подстановки и организация взаимодействия между командами – имя переменной может быть заменено на ее значение; может быть подставлен результат арифметического выражения, осуществлена подстановка команды в строку, содержащую другую команду.

Для выполнения остальных функций необходимо использование специальных операторов.

Вывод команд может быть реализован с помощью синтаксиса $(команда), например, команда «$ date» возвращает текущую дату, а «echo» выводит результат выполнения на экран. В большинстве же случаев требуется спросить у пользователя какое действие предпринять или какой файл использовать. При вызове скрипта можно передавать ему параметры, которые доступны в виде переменных с именами в виде номеров, то есть переменная с именем «1» содержит значение первого параметра, «2» – второго, и так далее.

При создании скриптов важно использование управляющих конструкций, например, проверка условий или команда сравнения параметров.

Циклы, представляющие собой конструкции «while – do», «for – do» и «if» позволяют создать скрипт, состоящий лишь из пары строк, которые при этом будут выполняться часами, анализируя множество параметров и выполняя заданные действия.

При необходимости можно сделать интерпретатора GUI – графическую оболочку, которая позволит работать с диалоговыми окнами.

Массивы в Bash поддерживаются лишь одномерные. Объявление массива в скрипте производится с помощью директивы

«declare»: «declare -a variable».

Возможности Bash-скриптов крайне широки, они позволяют выполнять невероятное множество различных задач, плоть до того, что можно осуществлять управление системой и программами лишь только с их помощью.

Практическое задание

1.Описать структуру скриптов в ОС Linux.

2.Описать процесс разработки и тестирования скриптов в Linux.

3.Реализовать скрипт резервного копирования, копирующий файлы из каталога по некоторой маске. Каталог назначения – дата запуска скрипта в формате yyyymmdd. Если каталог назначения существует, создать каталог yyyymmdd+постфикс, постфикс выбрать самостоятельно. Если каталог назначения с постфиксом су-

ществует, переписать данные в каталоге yyyymmdd+постфикс.

30

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]