ИТ Блог. Администрирование серверов на основе Linux (Ubuntu, Debian, CentOS, openSUSE)

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

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

systemctl – это утилита командной строки, используемая для управления системными службами. У нее есть множество опций для управления службой в Linux, таких как запуск службы, ее остановка, включение и деактивация. Существует еще один вариант, называемый mask.

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

В этой статье мы расскажем вам, как замаскировать службу в Linux с помощью systemctl и как ее разоблачить. Более того, мы расскажем о ключевых различиях между замаскированной службой и отключенной службой.

Предупреждение: В Linux службы взаимозависимы. Поскольку маскировка службы отключает ее и запрещает любую активацию, поэтому используйте ее осторожно.

 

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

 

Что такое замаскированная служба

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

 

Как составить список замаскированных служб

Чтобы составить список замаскированных служб в Linux, используйте опцию list-units с указанным замаскированным состоянием.

systemctl list-units --state=masked
sam@sam: $ systemctl list-units --state=masked

UNIT               LOAD    ACTIVE  SUB   DESCRIPTION 
netscript.service masked inactive dead netscript.service

LOAD = Reflects whether the unit definition was properly loaded. 
ACTIVE = The high-level unit activation state, i.e. generalization of SUB. 
SUB = The low-level unit activation state, values depend on unit type. 
1 loaded units listed.

sam@sam: $

 

Как замаскировать службу

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

sudo systemctl mask [Service-Name]

 

Опция mask в приведенном выше синтаксисе по сути создает символическую ссылку на службу в /etc/systemd/system.

Также может быть упомянута одна или несколько служб, разделенных пробелом.

Давайте замаскируем службу SSH, используя приведенный выше синтаксис.

sudo systemctl mask ssh.service

 

sam@sam: $ sudo systemctl mask ssh.service

[sudo] password for sam:
Created symlink /etc/systemd/system/ssh.service ->/dev/null.

sam@sam: $

 

Чтобы проверить состояние замаскированной службы, используйте опцию –state= с помощью systemctl list-units.

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

 

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

 

sam@sam: $ sudo systemctl start ssh.service 
Failed to start ssh.service: Unit ssh.service is masked.

 

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

 

Как временно замаскировать службу

Служба может быть замаскирована до следующей загрузки с помощью опции –runtime .

sudo systemctl mask [Service-Name] --runtime
sam@sam: $ sudo systemctl mask ssh.service --runtime 
Created symlink /run/systemd/system/ssh.service ->/dev/null.

 

Она создает символическую ссылку на службу в каталоге /run/systemd/system. Если символическая ссылка службы уже присутствует в каталоге, то служба предназначена для временной маскировки.

 

Как убрать маску со службы

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

sudo systemctl снимает маску [Имя службы]

 

Возможно, вам потребуется перезагрузить систему после снятия маски с службы.

 

Разница между замаскированной службой и отключенной службой

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

Когда служба отключается, символическая ссылка, созданная в каталоге /etc/systemd/system, удаляется, и служба не активируется при загрузке. Но она может быть активирована зависимыми службами.

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

Обратите внимание, что каталог /dev содержит файлы блочных устройств. /dev/null – это виртуальное устройство, которое удаляет все, что на него записано. Обычно она используется для удаления выходных данных из stdout и stderr.

 

Заключение

Если вы хотите отключить какую-либо службу навсегда, используйте команду systemctl mask . Замаскированную службу не может включить даже система. В этом руководстве я описал, как замаскировать службу постоянно и временно. Более того, мы также упомянули метод демаскирования службы и ключевые различия между замаскированной и отключенной службой.

Exit mobile version