elogind-246.10

Introduction elogind

elogind est le « logind » du projet systemd extrait pour en faire un démon autonome. Il s'intègre avec Linux-PAM-1.5.2 pour connaître l'ensemble des utilisateurs qui sont connectés sur un système et s'ils sont connectés graphiquement, sur la console ou à distance. Elogind expose ces informations via l'interface D-Bus org.freedesktop.login1 standard, ainsi qu'à travers le système de fichier dans la hiérarchie standard de systemd dans /run/systemd.

[Note]

Note

Development versions of BLFS may not build or run some packages properly if dependencies have been updated since the most recent stable versions of the book.

Informations sur le paquet

Dépendances de elogind

Requises

dbus-1.14.0

Recommandes

Facultatives

Pour les tests : lxml-4.9.1, gobject-introspection-1.72.0, zsh-5.9, Valgrind-3.19.0, audit-userspace, bash-completion, kexec et SELinux

Notes utilisateur : https://wiki.linuxfromscratch.org/blfs/wiki/elogind

Configuration du noyau

Activez les options suivantes dans la configuration du noyau et recompilez le noyau si nécessaire :

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]

En plus, certains tests ont besoin de l'API noyau de cryptographie en espace utilisateur qui s'active avec :

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

Installation de elogind

Installez elogind en lanant les commandes suivantes :

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

Pour tester les résultats, lancez : ninja test. Quelques tests sont passés si vous n'utilisez pas les privilèges root.

Maintenant, en tant qu'utilisateur root :

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

Explication des commandes

sed ... meson.build : ce changement permet au paquet d'être construit sans avoir installé polkit (il est quand même requis à l'exécution) mais de lui permettre d'utiliser polkit après l'installation du paquet.

sed ... src/login/logind.c : ce changement permet au démon elogind de quitter quand il est déconnecté de dbus (par exemple si dbus est tué).

-Dcgroup-controller=elogind : ce paramètre s'assure qu'elogind est choisi comme contrôleur cgroup, même s'il est démarré avec un autre contrôleur cgroup.

-Ddbuspolicydir=/etc/dbus-1/system.d : ce paramètre choisi l'emplacement du répertoire de politique D-Bus.

-Dman=auto : la valeur par défaut de ce paramètre est false. Le mettre à auto permet de construire et d'installer les pages de manuel si les dépendances recommandées sont installées.

-Ddefault-kill-user-processes=false : indique si les processus d'un utilisateurs devraient être tués lorsqu'il se déconnecte. La valeur par défaut est true, mais cela contredit l'utilisation traditionnelle de screen ou tmux. Cela peut aussi se changer dans le fichier de configuration (voir plus bas).

ln -s … : ces commandes installent les liens symboliques pour que les paquets logiciels trouvent des bibliothèques et des en-têtes compatibles avec systemd.

Configuration de elogind

Fichier de configuration

/etc/elogind/logind.conf

Informations sur la configuration

Le fichier /etc/elogind/logind.conf installé contient toutes les options possibles avec leurs valeurs par défaut, commentées. Vous pourriez vouloir désactiver le fait de tuer les processus utilisateurs à la déconnexion, en lançant, en tant qu'utilisateur root :

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

Chaque utilisateur devra enregistrer une session utilisateur avec Linux-PAM à la connexion. Le fichier /etc/pam.d/system-session doit être modifié et un nouveau fichier doit être créé pour qu'elogind fonctionne correctement. Lancez les commandes suivante en tant qu'utilisateur root :

cat >> /etc/pam.d/system-session << "EOF" &&
# Begin elogind addition

session  required    pam_loginuid.so
session  optional    pam_elogind.so

# End elogind addition
EOF
cat > /etc/pam.d/elogind-user << "EOF"
# Begin /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

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

Contents

Programmes installs: busctl, elogind-inhibit et loginctl
Bibliothque installe: libelogind.so
Rpertoires installs: /lib/elogind, /etc/elogind, /usr/include/elogind et /usr/share/doc/elogind-246.10

Descriptions courtes

busctl

est utilisé pour inspecter et surveiller le bus D-Bus

elogind-inhibit

est utilisé pour exécuter un programme avec un verrou contre l'extinction, la veille ou l'hibernation

loginctl

est utilisé pour inspecter et contrôler l'état du gestionnaire de connexion elogind

libelogind.so

est la bibliothèque d'utilitaires principale d'elogind

Last updated on