Логотип

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

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

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

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

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

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

 

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

 

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

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

Читать  Частная служба DNS0.EU прекращает работу из-за проблем с экологичностью

 

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

Чтобы составить список замаскированных служб в 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. Поскольку службы в этом каталоге необходимы для работы системы, их маскировка может нанести ущерб нормальной функциональности системы. Однако отключение этих служб равносильно их маскировке.

Читать  Выпущена версия systemd 257-rc1 с множеством новых функций и изменений

 

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

Служба может быть замаскирована до следующей загрузки с помощью опции –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.

Читать  NetworkManager 1.54.3 улучшает проверку доступа к сертификатам

 

Заключение

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

Редактор: AndreyEx

Рейтинг: 4.3 (4 голоса)
Если статья понравилась, то поделитесь ей в социальных сетях:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

Это может быть вам интересно


Загрузка...

Спасибо!

Теперь редакторы в курсе.

Прокрутить страницу до начала