elogind-246.10

Introdução a "elogind"

elogind é o "logind" do projeto systemd, extraído para ser um processo de segundo plano independente. Ele se integra com Linux-PAM-1.5.2 para rastrear todos(as) os(as) usuários(as) logados(as) em um sistema, e se eles(as) estão logados(as) graficamente, no console ou remotamente. Elogind expõe essas informações por meio da interface padrão org.freedesktop.login1 do D-Bus e também por meio do sistema de arquivos usando o esquema padrão /run/systemd do "systemd".

Esse pacote é conhecido por construir e funcionar adequadamente usando uma plataforma LFS 11.3.

Informação do Pacote

Dependências do "elogind"

Exigidas

dbus-1.14.6

Recomendadas

Opcionais

Para os testes: lxml-4.9.2, gobject-introspection-1.74.0, zsh-5.9, Valgrind-3.20.0, audit-userspace, bash-completion, kexec e SELinux

Observações de Usuário(a): https://wiki.linuxfromscratch.org/blfs/wiki/elogind

Configuração do Núcleo

Habilite as seguintes opções na configuração do núcleo e recompile o núcleo, se necessário:

General setup --->
    [*]     Control Group support                       [CONFIG_CGROUPS]
File systems --->
    [*]     Inotify support for userspace                [CONFIG_INOTIFY_USER]
            Pseudo filesystems --->
                [*]    Tmpfs POSIX Access Control Lists  [CONFIG_TMPFS_POSIX_ACL]

Além disso, alguns testes precisam da "API" criptográfica do espaço do(a) usuário(a) do núcleo, a qual é habilitada com:

-*- Cryptographic API --->                              [CONFIG_CRYPTO]
   <M/*> Userspace cryptographic algorithm configuration [CONFIG_CRYPTO_USER]
   <M/*> User-space interface for hash algorithms        [CONFIG_CRYPTO_USER_API_HASH]

Instalação do "elogind"

Instale elogind executando os seguintes comandos:

sed -i '/Disable polkit/,+8 d' meson.build &&

sed '/request_name/i\
r = sd_bus_set_exit_on_disconnect(m->bus, true);\
if (r < 0)\
    return log_error_errno(r, "Failed to set exit on disconnect: %m");' \
    -i src/login/logind.c &&

mkdir build &&
cd   build &&

meson --prefix=/usr                        \
      --buildtype=release                  \
      -Dcgroup-controller=elogind          \
      -Ddbuspolicydir=/etc/dbus-1/system.d \
      -Dman=auto                           \
      ..  &&
ninja

Para testar os resultados, emita: ninja test. Uns poucos testes são pulados se não executados com privilégios de root.

Agora, como o(a) usuário(a) root:

ninja install                                          &&
ln -sfv  libelogind.pc /usr/lib/pkgconfig/libsystemd.pc &&
ln -sfvn elogind /usr/include/systemd

Explicações do Comando

sed ... meson.build: Essa mudança permite que o pacote seja construído sem o "polkit" ser instalado (ainda é uma dependência de tempo de execução), mas apto a usar o "polkit" depois que tal pacote seja instalado.

sed ... src/login/logind.c: Essa mudança permite que o processo de segundo plano "elogind" saia quando for desconectado do "dbus" (por exemplo, quando o "dbus" for eliminado).

-Dcgroup-controller=elogind: Essa chave garante que elogind seja selecionado como o controlador de "cgroup", mesmo se inicializado com outro controlador de "cgroup" em execução.

-Ddbuspolicydir=/etc/dbus-1/system.d: Essa chave configura o local do diretório de políticas do D-Bus.

-Dman=auto: O valor padrão dessa chave é false. Configurá-lo como auto permite construir e instalar as páginas de manual se as dependências recomendadas estiverem instaladas.

-Ddefault-kill-user-processes=false: Determina se os processos de um(a) usuário(a) deveriam ser eliminados quando o(a) usuário(a) sai. O padrão é true, mas isso anula o uso tradicional de screen ou tmux. Isso também pode ser mudado no arquivo de configuração (veja-se abaixo).

ln -s ...: Esses comandos instalam links simbólicos, de modo que aqueles pacotes de software consigam encontrar a biblioteca e os cabeçalhos compatíveis com o "systemd".

Configurando o "elogind"

Arquivo de Configuração

/etc/elogind/logind.conf

Informação de Configuração

O arquivo instalado /etc/elogind/logind.conf contém todas as opções possíveis com os padrões delas comentados. Você possivelmente quera desabilitar a eliminação automática de processos do(a) usuário(a) quando o(a) usuário(a) sai, executando como o(a) usuário(a) root:

sed -e '/\[Login\]/a KillUserProcesses=no' \
   -i /etc/elogind/logind.conf

Cada usuário precisará registrar uma sessão de usuário(a) usando Linux-PAM no login. O arquivo /etc/pam.d/system-session precisa ser modificado e um novo arquivo precisa ser criado para a finalidade de que o elogind funcione corretamente. Execute os seguintes comandos como o(a) usuário(a) root:

cat >> /etc/pam.d/system-session << "EOF" &&
# Começo da adição de "elogind"

session  required    pam_loginuid.so
session  optional    pam_elogind.so

# Fim da adição de "elogind"
EOF
cat > /etc/pam.d/elogind-user << "EOF"
# Começo /etc/pam.d/elogind-user

account  required    pam_access.so
account  include     system-account

session  required    pam_env.so
session  required    pam_limits.so
session  required    pam_unix.so
session  required    pam_loginuid.so
session  optional    pam_keyinit.so force revoke
session  optional    pam_elogind.so

auth     required    pam_deny.so
password required    pam_deny.so

# Fim /etc/pam.d/elogind-user
EOF

Conteúdo

Aplicativos Instalados: busctl, elogind-inhibit e loginctl
Biblioteca Instalada: libelogind.so
Diretórios Instalados: /lib/elogind, /etc/elogind, /usr/include/elogind e /usr/share/doc/elogind-246.10

Descrições Curtas

busctl

é usado para introspectar e monitorar o barramento do "D-Bus"

elogind-inhibit

é usado para executar um aplicativo com bloqueio de inibidor de desligamento, suspensão ou inatividade

loginctl

é usado para introspectar e controlar o estado do Gerenciador de Login do "elogind"

libelogind.so

é a principal biblioteca de utilitários do "elogind"