Como as sessões do PAM são aplicadas aos serviços do usuário do systemd?

1

Sempre que você faz login como usuário, você recebe uma nova sessão do PAM. Por exemplo. Acredito que as pessoas usaram pam_group para adicionar os processos da sua sessão a grupos para acesso a determinados dispositivos , se você registrar para um terminal local.

pam_systemd inicia uma systemd --user instance, que é compartilhada entre todas as sessões de login do usuário. Hoje em dia, por exemplo No Fedora 26, você verá que todos os processos do gnome-terminal foram iniciados por systemd --user . Então é aí que seus comandos de terminal são executados. Eles não são executados nos escopos de sessão do systemd que são criados para cada login individual ...

Como é a única systemd --user instância e os processos que ela cria, afetados pelas sessões do PAM?

    
por sourcejedi 15.09.2017 / 16:02

1 resposta

1

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 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.) Em vez disso, 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).

    
por 15.09.2017 / 16:02

Tags