pam_systemd está documentado como iniciando systemd --user
usando [email protected]
.
[email protected]
usa PAMName=
, por isso é executado em uma sessão dedicada do PAM. pam_systemd
tem um caso especial para PAMName=systemd-user
, de forma que o início de [email protected]
não seja recursivo infinitamente ou um impasse. (Também este processo não é colocado em uma nova unidade de escopo de sessão).
$ systemctl cat user@
# /usr/lib/systemd/system/[email protected]
[Unit]
Description=User Manager for UID %i
After=systemd-user-sessions.service
[Service]
User=%i
PAMName=systemd-user
Type=notify
ExecStart=-/usr/lib/systemd/systemd --user
Slice=user-%i.slice
KillMode=mixed
Delegate=yes
TasksMax=infinity
TimeoutStopSec=120s
pam_systemd realmente não funciona com recursos vinculados à sessão do PAM que variam com base no TTY individual. Em vez de Em vez disso, pam_group
, o software pode usar logind
interfaces para obter acesso aos nós de dispositivos locais. (Isso afeta relativamente poucos aplicativos: servidores de exibição, servidores de som e gravadores de mídia ótica.) logind
usa ACLs para conceder o usuário logado a determinados dispositivos. Enquanto a sessão do PAM estiver aberta, qualquer processo com esse UID poderá acessá-los.
logind tambm tem uma interface DBus que permite que um processo desse usurio abra determinados dispositivos, destinados ao servidor de exibio, e. X Windows. Ele tem código para lidar com comutação de VTs e vários "lugares" (grupos de dispositivos).