Crie um novo destino systemd para essas atividades de manutenção do sistema, já que é provável que impedir que os usuários façam login não é a única atividade do sistema que precisa ser alterada. Faça com que o alvo dependa do alvo padrão, para que você não mude o modo gráfico atual ou desconecte os usuários.
Crie um novo serviço systemd para evitar logins criando ou excluindo o arquivo / etc / nologin (veja o uso de pam_nologin em /etc/pam.d para saber como / etc / nologin funciona). Tome cuidado para excluir apenas um arquivo / etc / nologin que você criou (por exemplo, verificando uma string mágica no conteúdo). Ter esse serviço para ser procurado pelo novo alvo systemd.
Mesmo que você faça isso, ainda haverá "usuários" em execução, como o gdm exibindo a tela de login. A maioria das VMs existe para suportar serviços diferentes de um login de usuário em uma linha de comando; para aqueles que você pode precisar para descentralizar a máquina do cluster de compartilhamento de carga. Você precisa ser muito claro sobre o que você quer dizer quando diz "nenhum usuário".
A experiência com as atualizações do sistema é que é melhor fazer o download e prepará-las durante a operação normal e depois aplicá-las como parte do reinício do sistema. O Systemd possui ganchos para isso que você pode aproveitar. Veja o sistema pkcon para saber como eles podem ser usados. Você pode querer um estado de "drenagem" onde você não é dado ou não permite novas sessões (e isso pode acontecer automaticamente, como com a remoção de um cluster, ou isso pode precisa de um novo alvo, conforme descrito acima).
Houve um trabalho substancial no gerenciamento de VMs Linux, com grandes comunidades em torno de Ansible, Puppet e outras. Então, estou um pouco surpreso por você estar escrevendo outro daemon.