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

except_4

.pdf
Скачиваний:
65
Добавлен:
24.06.2017
Размер:
11.13 Mб
Скачать

23.Управление программным обеспечением операционной системы. Пакет RPM. Зависимости пакетов. Состав пакета (файлы, метаданные, скрипты). Бинарные и src-пакеты. Назначение spec-файла.

RPM (Red Hat Package Manager — менеджер пакетов Red Hat) обозначает две сущности: формат пакетов программного обеспечения и программа, созданная для управления этими пакетами. Используется для установки, удаления и обновления программного обеспечения.

Пакеты:

бинарные .rpm содержат полный набор приложений и библиотек, собранных под определенную процессорную архитектуру

исходники .src.rpm содержит все необходимые средства, нужные для сборки бинарного пакета

Структура пакета

Метаданные

Файлы

название, описание, версия,

архив типа cpio

зависимости

 

Spec-файл требуется для построения пакета. Это обычный текстовый файл, который имеет суффикс .spec и содержит в себе название пакета, версию, номер релиза, инструкции по сборке и установке пакета и список изменений.

Именование пакета: name-version-release.arch.rpm

Зависимости возникают в тех случаях, когда работоспособность ПО из одного пакета зависит от ПО, входящего в состав другого пакета. RPM различает четыре типа зависимостей:

Requirements - случаи, когда пакету требуются возможности, предоставляемые другим пакетом

Provides - списки пакетов, которые требуют возможностей данного, а он их предоставляет

Conflicts - случаи, когда пакет конфликтует с возможностями, предоставляемыми другим пакетом

Obsoletes - случаи, когда возможности данного пакета делают устаревшими возможности другого пакета; обычно бывают, если при смене версии пакет меняет имя.

В RPM 11 режимов работы:

 

RPM для системного

 

RPM для распространения ПО

 

администрирования

 

 

 

 

 

Install

 

 

Build

rpm -i install-options

 

Создать пакет

package_file

 

rpmbuild

 

 

 

 

 

 

Upgrade

 

 

Rebuild Database

rpm -U upgrade-options

 

Изменить пакетную информацию

package_file

 

 

rpm --rebuilddb

 

 

 

 

 

 

Erase

 

 

Fix Permissions

rpm -e erase-options package_file

 

 

Изменить исходные разрешения

 

 

Query

 

 

 

rpm --setperms {packagename}

Определить, установлен ли уже пакет и

 

 

 

Signature Check

где он находится

 

 

Проверить целостность

rpm -q query-options

 

 

rpm -K package.rpm

 

 

 

 

 

 

Verify

 

Set owners and Groups

Сравнить установленный пакет с

 

 

Изменить исходные пользователя и

оригинальным( размер, контрольная

 

 

группу

сумма, разрешения, тип, владелец и

 

 

rpm --setugids {packagename}

группа)

 

 

Show RC

rpm -V verify verify-options

 

 

rmp --showrc

 

 

 

 

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

База данных RPM хранит информацию обо всех пакетах, установленных в системе. Эта база может использоваться для запросов, касающихся того, что установлено, для информирования о версиях установленного ПО, для оценки целостности пакетов и системы.База данных пакетов обычно хранится в директории /var/lib/rpm .

Верификация установленного пакета.

Кроме запросов к установленным пакетам RPM позволяет оценить целостность системы и каждого пакета в отдельности с помощью режима верификации. Режим включается опцией -V.

Базовый синтаксис: rpm -V verify_options package_name

Если все в порядке, не выводится никаких сообщений, так как режим rpm -V выводит только сообщения об ошибках.

Верификация (ключ -V) включает:

проверку зависимости пакета от возможностей, предоставляемых другими пакетами (отключается ключом --nodeps)

выполнение верификационных скриптов, предоставляемых разработчиком пакета (отключается ключом --noscripts)

проверку наличия всех файлов и их корректное состояние (отключается ключом --nofiles)

Взависимости от типа файла проверяется:

директория: права доступа, владелец, группа

символьная ссылка: строка ссылки, права доступа (всегда 777), владелец (всегда root), группа (всегда root)

FIFO: права доступа, владелец, группа

устройство: права доступа, владелец, группа, major, minor

обычный файл: размер, права доступа, владелец, группа, MD5, время модификации

При несовпадении атрибутов файла с записью в БД выдается строка вида :

SM5DLUGT c имя_файла

Для совпадающего атрибута вместо буквы выводится точка. Если невозможно произвести проверку, то выводится вопросительный знак. Кодовые символы говорят о характере несовпадения атрибутов файла:

S - Изменился размер файла

M - Изменились атрибуты доступа файла

5 - Изменилась контрольная сумма MD5 файла

D - Старший и младший номер файла устройства изменились

L - Ошибка ссылки

U - Изменился владелец файла

G - Изменилась группа файла

T - Время создания или время последней модификации файла изменились

с - выводится, если файл относится к конфигурационным

d - выводится, если файл относится к файлам документации

Восстановление прав доступа файлов по БД пакетов: rpm --setperms ключи_выбора_пакета

Восстановление владельца и группы файлов по БД пакетов: rpm --setugids ключи_выбора_пакета

Ключи: -vv, --root путь, --dbpath путь работают как обычно.

Ключи выбора пакета:

метка_пакета (можно указать только имя)

-a (все установленные пакеты)

-f полное_имя_файла (пакет, которому принадлежит указанный файл; в пути не д.б. символьных ссылок)

-p rpm-файл (вместо имени м.б. URL; БД пакетов не используется)

-g класификационная_группа_и_подгруппа

--whatprovides capability (пакеты, обеспечивающие указанную возможность)

--whatrequires capability (пакеты, требующие указанную возможность)

--triggeredby метка_пакета (пакеты, содержащие триггерскрипты, активизируемые указанным пакетом)

Билет №25. Управление программным обеспечением операционной системы. Обеспечение безопасности при установке и обновлении программного обеспечения операционной системы. Подпись пакетов RPM.

RPM предоставляет широкий спектр функций проверки безопасности при установке и обновлении ПО:

анализ пакетов;

проверка файлов в пакетах;

установка подписи, проверка подписи пакетов.

Подписи пакетов

GPG-подписьстандартный механизм подписи пакетов в RPM. Для ее генерации необходимо:

1.Генерация пары GPG-ключей.

2.Конфигурирование RPM для использования ключа.

3.Подпись пакетов.

4.Экспорт публичного ключа.

Генерация пары ключей.

Команда генерации ключа: gpg --gen-key.

После запуска генерации ключей появляется сообщение:

gpg (GnuPG) 1.2.6; Copyright (C) 2004 Free Software Foundation, Inc. This program comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to redistribute it under certain conditions. See the file COPYING for details. Please select what kind of key you want: (1) DSA and ElGamal (default) (2) DSA (sign only) (4) RSA (sign only) Your selection?

Примите значение (1) DSA and ElGamal, что позволит создать цифровую подпись. Введите 1 и нажмите Enter.

Выберите длину ключа, срок действия ключа.

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

Конфигурирование RPM для использования ключа.

В файл ~/.rpmmacros нужно добавить следующее:

%_signature gpg %_gpg_name key_id

key_id – идентификатор пользователя, указанный в предыдущем пункте.

Подпись пакета.

Команда подписи пакета: package-name-1.0-1.noarch.rpm

Параметры:

--addsign - начальная подпись. Используется в случае, если пакет не подписывался

ранее.

--resign – переподписать уже подписанный пакет.

Экспорт ключа

Команда экспорта открытого ключа: gpg --export -a 'имя' > public_key.txt

В этом случае ключ будет сохранен в файле public_key.txt

Команда импорта открытого ключа: rpm -import public_key.txt

Проверка подписи пакета

Команда: rpm --checksig -v package-name-1.0-1.noarch.rpm

Вывод: Good signature from "имя", где имя — имя пользователя, подписавшего пакет.

Управление сервисами (#26 алешин)

Сервисы следят за:

1.состоянием системы

2.автоматическим подключением внешних устройств

3.взаимодействием с сетью

4.обеспечением безотказной работы различных служб (веб-сервисы, базы данных и тд)

Сервисы бывают:

1.Системные

2.Сетевые

systemd – системный менеджер, демон инициализации других демонов в Linux. Особенность: интенсивное распараллеливание запуска служб в процессе загрузки

системы позволило существенно ускорить запуск ОС.

Оперируют специально оформленными файлами конфигурации – юниты (units) Unit отвечает за

1.Отдельно взятую службу

2.Точку монтирования

3.Подключаемые устройства

4.Файлы подкачки

5.Виртуальные машины

Юниты представлены конфигурационными файлами, размещенными в одной из директорий:

/usr/lib/systemd/system/ – юниты из установленных пакетов RPM.

/run/systemd/system/ – юниты, созданные в рантайме. Этот каталог приоритетнее каталога с установленными юнитами из пакетов.

/etc/systemd/system/ – юниты, созданные и управляемые системным

администратором. Этот каталог приоритетнее каталога юнитов, созданных в рантайме.

Типичный systemd.service

[Unit]

Description=Daemon to detect crashing apps After=syslog.target

[Service]

ExecStart=/usr/sbin/abrtd

Type=forking

[Install] WantedBy=multi-user.target

Типы юнитов:

.target - позволяет группировать юниты, воплощая концепцию уровней запуска

(runlevel)

.service - отвечает за запуск сервисов (служб), также поддерживает вызов интерпретаторов для исполнения пользовательских скриптов

.mount - отвечает за монтирование файловых систем

.automount - позволяет отложить монтирование файловых систем до фактического обращения к точке монтирования

.swap - отвечает за подключение файла или устройства подкачки

.timer - позволяет запускать юниты по расписанию

.socket - предоставляет службам поддержку механизма сокет-активации

.slice - отвечает за создание контейнера cgroups

.device - позволяет реагировать на подключение устройств

.path - управляет иерархией файловой системы

Основные команды управления systemd

# systemctl start name.service – запуск сервиса.

# systemctl stop name.service – остановка сервиса

# systemctl restart name.service – перезапуск сервиса

#systemctl try-restart name.service – перезапуск сервиса только,

если он запущен

#systemctl reload name.service – перезагрузка конфигурации сервиса

#systemctl status name.service – проверка, запущен ли сервис с детальным выводом состояния сервиса

#systemctl is-active name.service – проверка, запущен ли сервис с простым ответом: active или inactive

#systemctl list-units --type service --all – отображение статуса всех сервисов

#systemctl enable name.service – активирует сервис (позволяет стартовать во время запуска системы)

#systemctl disable name.service – деактивирует сервис

#systemctl reenable name.service – деактивирует сервис и сразу активирует его

#systemctl is–enabled name.service – проверяет, активирован ли сервис

#systemctl list-unit-files --type service – отображает все сервисы и проверяет, какие из них активированы

#systemctl mask name.service – заменяет файл сервиса симлинком на /dev/null, делая юнит недоступным для systemd

#systemctl unmask name.service – возвращает файл сервиса, делая юнит доступным для systemd

Зависимости (targets)

Файлы целей systemd.target предназначены для группировки вместе других юнитов systemd через цепочку зависимостей. Например юнит graphical.target, использующийся для старта графической сессии, запускает системные сервисы

GNOME Display Manager (gdm.service) и Accounts Service (accountsdaemon.service) и активирует multiuser.target. В свою очередь multiuser.target запускает другие системные сервисы, такие как Network Manager

(NetworkManager.service) или D-Bus (dbus.service) и активирует другие целевые юниты basic.target.

27.Управление системными и сетевыми сервисами. Управление serviceюнитами. Разрешенные и запрещённые сервисы. Запуск, останов и перезагрузка сервиса.

Сервис - это программы, которые запускаются и останавливаются через инициализационные скрипты, расположенные в каталоге /etc/init.d. Многие из этих сервисов запускаются на этапе загрузки системы.

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

Юниты представлены конфигурационными файлами.

Описание сервис-юнита:

[Unit]

Description=Daemon to detect crashing apps After=syslog.target

[Service]

ExecStart=/usr/sbin/abrtd Type=forking

[Install]

WantedBy=multi-user.target

[Unit]. Она содержит общую информацию о сервисе В примере дается описание сервиса и указываем на то, что демон должен быть запущен после

Syslog.

[Service] непосредственно содержится информация о сервисе. Используемый параметр ExecStart указывает на исполняемый файл сервиса.

В Type указывается, как сервис уведомляет systemd об окончании запуска.

Финальная секция [Install] содержит информацию о цели, в которой сервис должен стартовать. В данном случае говорится, что сервис должен быть запущен, когда будет активирована цель multi–user.target.

Для просмотра, старта, остановки, перезагрузки, включения или выключения системных сервисов используется команда systemctl.

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

systemctl start name.service – запусксервиса.

systemctlstopname.service — остановка сервиса

systemctl restart name.service — перезапусксервиса

systemctl reload name.service — перезагрузкаконфигурациисервиса

systemctlstatusname.service — проверка, запущен ли сервис с детальным выводом состояния сервиса

systemctlis-activename.service — проверка, запущен ли сервис с простым ответом: active или inactive

systemctlenablename.service – активирует сервис (По умолчанию большинство юнитов systemd не запускается автоматически. Чтобы настроить автозапуск юнита, нужно его включить. Это соединит юнит с определѐнным целевым компонентом, и тогда юнит будет запускаться вместе с ним.)

systemctl disable name.service – деактивируетсервис

systemctlreenablename.service

деактивируетсервисисразуактивируетего

systemctlis–enabledname.service – проверяет, активирован ли сервис

Разрешенные сервисы – сервисы, которые будут запускаться при загрузке.

systemctllist-unit-files --typeservice – отображает все сервисы и проверяет,

какие из них активированы, выводит результат:

Соседние файлы в предмете Безопасность операционных систем