7 Ограничение программной среды

7.1 Введение

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

7.2 Включение программ в автозагрузку

Утилита chkconfig позволяет включать программы в автозагрузку с целью их автоматического запуска при старте операционной системы.

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

Опции утилиты chkconfig и их значения

Опция

Значение

--level levels

Определяет уровни, на которых соответствующая программа должна выполняться. Уровни указываются на месте параметра levels в качестве строки целочисленных значений в диапазоне от 0 до 6. Так, например, при передаче опции --level 35 утилите будет передано указание на уровни 3 и 5 соответственно.

--no-redirect

Если утилита запущена в системе, использующей утилиту systemd в качестве системы инициализации, то chkconfig будет перенаправлять команды в systemd, если у данной службы существует соответствующий файл, предназначенный для таких обращений. Данная опция отключает процесс перенаправления утилите systemd и обеспечивает работу только с символьными ссылками в директориях /etc/rc[0-6].d.

--add name

Добавляет новую службу для управления утилитой chkconfig. Имя службы указывается на месте параметра name.

--del name

Удаляет службу, имя которой указывается на месте параметра name, из-под управления утилитой chkconfig. Также из директорий /etc/rc[0-6].d удаляются любые символьные ссылки, указывающие на удаляемую службу.

--override name

Производит переопределение настроек службы, имя которой указывается на месте параметра name, вместо базовых настроек.

--list name

Выводит все службы, доступные для chkconfig, а также показывает их статус на каждом уровне (вкл/выкл). Если опции передать аргументом имя некоторой службы, которое указывается на месте параметра name, то будет выведена информация только об указанной службе.

7.3 Управление системными службами

Утилита systemctl позволяет управлять системными службами.

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

Опции утилиты systemctl и их значения

Опция

Значение

-t, --type

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

-a, --all

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

start [имя сервиса]

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

stop [имя сервиса]

Останавливает работу сервиса с указанным именем.

reload [имя сервиса]

Перезагружает конфигурацию сервиса с указанным именем.

restart [имя сервиса]

Перезапускает сервис с указанным именем.

try-restart [имя сервиса]

Перезапускает сервис с указанным именем, если данный сервис уже работает на момент запуска утилиты.

reload-or-restart [имя сервиса]

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

reload-or-try-restart [имя сервиса]

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

kill [имя сервиса]

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

is-active [имя сервиса]

Осуществляет проверку, активна ли на момент запуска утилиты служба с указанным именем. Если служба активна, или хотя бы одна из служб, переданных в качестве аргумента данной команде, активна (в случае, если были переданы наименования более, чем одной службы), выведется нулевое значение. В противном случае — ненулевое.

is-failed [имя сервиса]

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

enable [имя сервиса]

Добавляет указанный сервис (или их множество) в автозапуск.

disable [имя сервиса]

Убирает указанный сервис (или их множество) из автозапуска.

is-enabled [имя сервиса]

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

--version

Вывести информацию о версии утилиты.

-h, --help

Вывести справочную информацию об утилите.

Пример: проверим статус сервера печати.

Для этого выполним следующую команду:

[root@msvsphere ~]# systemctl status cups
cups.service - CUPS Printing Service
  Loaded: loaded (/usr/lib/systemd/system/cups.service; disabled; vendor preset: enabled)
  Active: inactive (dead)

Пример: разрешим автоматический запуск сервера печати CUPS при загрузке системы.

Для этого выполним следующую команду:

[root@msvsphere ~]# systemctl enable cups
Created symlink from /etc/systemd/system/multi-user.target.wants/cups.service to /usr/lib/systemd/system/cups.service.
Created symlink from /etc/systemd/system/printer.target.wants/cups.service to /usr/lib/systemd/system/cups.service.
Created symlink from /etc/systemd/system/sockets.target.wants/cups.service to /usr/lib/systemd/system/cups.socket.
Created symlink from /etc/systemd/system/multi-user.target.wants/cups.path to /usr/lib/systemd/system/cups.path.

7.4 Настройка запуска программ по расписанию

Утилита crontab позволяет настраивать запуск программ по расписанию.

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

Опции утилиты crontab и их значения

Опция

Значение

-u

Указывает пользователя, чье расписание должно редактироваться.

-l

Вывод текущего файла расписания.

-r

Удаление текущего файла расписания.

Редактирование файла расписания.

Таблица расписания состоит из шести колонок, разделяемых пробелами или символами табуляции. Первые пять колонок задают время выполнения (минута, час, день, месяц, день недели). В них может находиться число, список чисел, разделённых запятыми, диапазон чисел, разделённых дефисом, символы * или /. После полей времени указывается пользователь, от которого запускается программа. Все остальные символы в строке интерпретируются как выполняемая программа с её параметрами.

Пример: установим с помощью утилиты crontab ограничения на доступ к системе по времени, с 10:28 до 10:30. Команда passwd -l user2 блокирует возможность авторизации, дописывая символ восклицательного знака к строке пароля в файле /etc/shadow. Команда passwd -u user2 производит обратную операцию, снимая тем самым блокировку. Заполним файл расписания и выполним команду service crond restart:

[root@msvsphere user]# crontab -e
crontab: Installing new crontab
[root@msvsphere user]# service crond restart
Redirecting to /bin/systemctl restart crond.service
[root@msvsphere user]# crontab -l
28 10 * * * /usr/bin/passwd -l user2
30 10 * * * /usr/bin/passwd -u user2
[root@msvsphere user]#

7.5 Управление программными пакетами

Утилита rpm позволяет управлять так называемыми программными пакетами, т.е. управлять их установкой, обновлением, проверкой и удалением.

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

Опции утилиты rpm и их значения

Опция

Значение

-i, --install

Установка нового пакета.

-u, --upgrade

Установка или обновление уже установленного пакета до новой версии. При этом после установки пакета все другие версии удаляются.

-f, --freshen

Обновление пакета, но только если предыдущая версия уже установлена.

--nodeps

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

--nosuggest

Не предлагать пакет(ы) для разрешения отсутствующих зависимостей.

--noorder

Не выполнять переупорядочивание пакетов для установки. Список пакетов обычно переупорядочивается для удовлетворения зависимостей.

--oldpackage

Разрешает обновить или заменить пакет более старой версией.

--replacefiles

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

--replacepkgs

Установить пакеты, даже если они уже установлены в систему.

--includedocs

Устанавливать файлы с документацией.

--excludedocs

Не устанавливать файлы с документацией.

-e, --erase

Удалить заданный пакет.

--allmatches

Удалить все версии пакета.

--nodeps

Не проверять зависимости перед удалением пакетов.

--test

Выполнить только проверку установки пакета.

-q, --query

Вывести информацию о пакете.

-a, --all

Выполняет запрос ко всем установленным пакетам.

--changelog

Вывести информацию об изменениях в пакете.

-l, --list

Вывести список файлов в пакете.

-P, --provides

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

-R, --requires

Вывести пакеты, от которых зависит этот пакет.

-v, --verify

Выполнить проверку метаданных пакета и его контрольной суммы.

--version

Вывести номер версии утилиты.

--help

Вывести справку об использовании утилиты.

7.6 Установка последней версии пакета/группы пакетов

Утилита dnf используется для установки последней версии пакета или группы пакетов с учетом существующих зависимостей.

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

Опции утилиты dnf и их значения

Опция

Значение

install

Используется для установки последней версии пакета с учетом существующих зависимостей.

reinstall

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

update

Используется для обновления всех пакетов в системе.

download

Используется для загрузки пакета из репозитория.

downgrade

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

remove

Используется для удаления указанных пакетов из системы, а также для удаления пакетов, зависящих от удаляемых пакетов.

info

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

search

Используется для поиска пакетов.

list

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

repolist all

Используется для вывода списка всех репозиториев.

clean

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

history

Используется для вывода истории использования утилиты.

groupinstall

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

groupupdate

Используется для обновления всех пакетов из группы.

groupremove

Используется для удаления всех пакетов из группы.

groupinfo

Используется для вывода списка пакетов, относящихся к группе.

grouplist

Используется для вывода имен всех существующих групп пакетов.

provides

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

repoquery --requires

Вывести зависимости неустановленного пакета.

repoquery --requires --resolve

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

-v, --verbose

Запустить с большим количеством отладочной информации.

-d, --debuglevel

Устанавливает уровень отладки.

-h, --help

Вывести справку и выйти.