Como verificar se um serviço do sistema está mascarado no Linux

LinuxBeginner
Pratique Agora

Introdução

Neste laboratório, você aprenderá como verificar se um serviço do sistema está mascarado no Linux usando o systemd. Mascarar um serviço impede que ele seja iniciado, o que é um conceito chave para gerenciamento e solução de problemas do sistema. Você usará o comando systemctl is-masked para verificar o status de máscara de serviços específicos e o comando systemctl list-unit-files para obter uma visão geral mais ampla dos arquivos de unidade do systemd. Por fim, você explorará os diretórios de configuração do systemd para entender onde essas configurações são armazenadas.

Verificar o mascaramento do serviço com systemctl is-masked

Nesta etapa, começaremos a explorar o systemd, o gerenciador de sistema e serviços em distribuições Linux modernas como o Ubuntu. O systemd é responsável por iniciar, parar e gerenciar serviços (como servidores web, bancos de dados, etc.) e outros recursos do sistema.

Um conceito importante no systemd é "mascarar" um serviço. Mascarar um serviço impede que ele seja iniciado, mesmo manualmente ou por outros serviços. Esta é uma maneira de desabilitar completamente um serviço.

Podemos verificar se um serviço está mascarado usando o comando systemctl is-masked. Vamos verificar o status de um serviço comum, o apache2. Apache é um servidor web popular.

Abra seu terminal se ele ainda não estiver aberto. Lembre-se, você pode encontrar o ícone do Xfce Terminal no lado esquerdo da sua área de trabalho.

Digite o seguinte comando e pressione Enter:

systemctl is-masked apache2

Você deve ver uma saída semelhante a esta:

inactive

Esta saída indica que o serviço apache2 não está mascarado. Se estivesse mascarado, a saída seria masked.

Vamos tentar verificar um serviço que normalmente é mascarado por padrão neste ambiente, como systemd-udevd-kernel.socket. Este é um serviço de sistema de baixo nível.

Digite o seguinte comando e pressione Enter:

systemctl is-masked systemd-udevd-kernel.socket

A saída deve ser:

masked

Isso confirma que o serviço systemd-udevd-kernel.socket está, de fato, mascarado.

Entender se um serviço está mascarado é crucial para solucionar problemas e gerenciar seu sistema. Se um serviço não estiver iniciando, verificar seu status de máscara é frequentemente um dos primeiros passos.

Clique em Continuar para prosseguir para a próxima etapa.

Listar arquivos de unidade com systemctl list-unit-files

Na etapa anterior, usamos systemctl is-masked para verificar o status de serviços individuais. Agora, vamos obter uma visão mais ampla de todos os arquivos de unidade que o systemd conhece.

O systemd gerencia vários tipos de "unidades" (units), que são arquivos de configuração que definem serviços, pontos de montagem, dispositivos, sockets e muito mais. O tipo mais comum é a unidade .service, que define como executar um processo em segundo plano (um serviço).

O comando systemctl list-unit-files exibe uma lista de todos os arquivos de unidade instalados e seu estado de "habilitação" (enable). O estado de habilitação indica se uma unidade está configurada para iniciar automaticamente na inicialização.

Digite o seguinte comando em seu terminal e pressione Enter:

systemctl list-unit-files

Este comando exibirá uma longa lista de arquivos de unidade. A saída será semelhante a esta (apenas uma pequena parte é mostrada):

UNIT FILE                                  STATE
proc-sys-fs-binfmt_misc.automount          static
dev-hugepages.mount                        static
dev-mqueue.mount                           static
proc-sys-fs-binfmt_misc.mount              static
sys-fs-fuse-connections.mount              static
sys-kernel-config.mount                    static
sys-kernel-debug.mount                     static
sys-kernel-tracing.mount                   static
...
apache2.service                            disabled
...

A saída tem duas colunas:

  • UNIT FILE: O nome do arquivo de unidade (por exemplo, apache2.service).
  • STATE: O estado de habilitação da unidade (por exemplo, static, enabled, disabled, masked).

Aqui está uma breve explicação de alguns estados comuns:

  • enabled: A unidade está configurada para iniciar automaticamente na inicialização.
  • disabled: A unidade não está configurada para iniciar automaticamente na inicialização.
  • static: A unidade não pode ser habilitada ou desabilitada; sua inicialização é controlada por outra unidade.
  • masked: A unidade está completamente desabilitada e não pode ser iniciada.

Você pode rolar pela saída usando a barra de rolagem do seu terminal ou canalizando a saída para um paginador como less. Por exemplo:

systemctl list-unit-files | less

Dentro do less, você pode usar as setas para rolar, pressionar a barra de espaço para descer uma página e pressionar q para sair.

Este comando é muito útil para ver quais serviços estão instalados em seu sistema e como eles estão configurados para iniciar.

Clique em Continuar para prosseguir.

Inspecionar a configuração do systemd em /etc/systemd

Nas etapas anteriores, usamos o comando systemctl para interagir com o systemd. Agora, vamos ver onde o systemd armazena seus arquivos de configuração.

O diretório principal para os arquivos de configuração do systemd é /etc/systemd. Este diretório contém subdiretórios para diferentes tipos de arquivos de unidade e configurações.

Vamos listar o conteúdo do diretório /etc/systemd usando o comando ls. Lembre-se, /etc é um diretório padrão no Linux para arquivos de configuração.

Digite o seguinte comando em seu terminal e pressione Enter:

ls /etc/systemd/

Você verá uma lista de diretórios e arquivos, semelhante a esta:

journald.conf  logind.conf  networkd.conf  resolved.conf  system  system.conf  timesyncd.conf  user  user.conf

O subdiretório mais importante aqui é /etc/systemd/system. É aqui que os arquivos de unidade em todo o sistema são frequentemente colocados ou vinculados. Vamos olhar dentro deste diretório.

Altere seu diretório atual para /etc/systemd/system usando o comando cd.

cd /etc/systemd/system

Agora, liste o conteúdo deste diretório:

ls

Você verá uma lista de arquivos e diretórios, muitos dos quais são links simbólicos (->) apontando para os arquivos de unidade reais localizados em outro lugar (frequentemente em /lib/systemd/system). É assim que os serviços são habilitados ou desabilitados – criando ou removendo esses links simbólicos.

Por exemplo, você pode ver algo como:

multi-user.target.wants -> /lib/systemd/system/multi-user.target.wants
sockets.target.wants -> /lib/systemd/system/sockets.target.wants
...

Os diretórios .wants contêm links simbólicos para serviços que devem ser iniciados quando esse alvo é alcançado. Por exemplo, multi-user.target.wants contém links para serviços que devem ser executados quando o sistema está em um estado multiusuário (como após a inicialização).

Vamos olhar dentro do diretório multi-user.target.wants.

ls multi-user.target.wants/

Você verá uma lista de serviços que estão habilitados para iniciar no alvo multiusuário.

anacron.service -> ../anacron.service
apache2.service -> ../../apache2.service
...

Isso mostra que apache2.service está vinculado aqui, o que significa que está habilitado para iniciar com o alvo multiusuário.

Explorar o diretório /etc/systemd/system ajuda você a entender como o systemd organiza e gerencia os serviços em seu sistema.

Clique em Continuar para finalizar este laboratório.

Resumo

Neste laboratório, começamos a explorar o systemd no Linux, focando em como determinar se um serviço do sistema está "mascarado" (masked). Mascarar um serviço é um método para desabilitá-lo completamente, impedindo-o de iniciar em quaisquer circunstâncias. Aprendemos a usar o comando systemctl is-masked para verificar o status de mascaramento de serviços específicos, observando que apache2 não estava mascarado, enquanto systemd-udevd-kernel.socket estava. Compreender o status de mascaramento é um passo fundamental na solução de problemas de inicialização de serviços.

Em seguida, passamos a usar systemctl list-unit-files para obter uma perspectiva mais ampla de todos os arquivos de unidade gerenciados pelo systemd, que são arquivos de configuração que representam vários recursos e serviços do sistema. Este comando fornece uma lista abrangente de unidades e seus estados, oferecendo uma visão mais ampla da configuração do sistema além das verificações de serviços individuais.