]> git.ipfire.org Git - thirdparty/systemd.git/blob - man/pam_systemd.xml
0e25a4ac9f94768077e6567c13512a2fb28c2e6f
[thirdparty/systemd.git] / man / pam_systemd.xml
1 <?xml version='1.0'?> <!--*-nxml-*-->
2 <!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
3 "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
4
5 <!--
6 This file is part of systemd.
7
8 Copyright 2010 Lennart Poettering
9
10 systemd is free software; you can redistribute it and/or modify it
11 under the terms of the GNU Lesser General Public License as published by
12 the Free Software Foundation; either version 2.1 of the License, or
13 (at your option) any later version.
14
15 systemd is distributed in the hope that it will be useful, but
16 WITHOUT ANY WARRANTY; without even the implied warranty of
17 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
18 Lesser General Public License for more details.
19
20 You should have received a copy of the GNU Lesser General Public License
21 along with systemd; If not, see <http://www.gnu.org/licenses/>.
22 -->
23
24 <refentry id="pam_systemd" conditional='HAVE_PAM'>
25
26 <refentryinfo>
27 <title>pam_systemd</title>
28 <productname>systemd</productname>
29
30 <authorgroup>
31 <author>
32 <contrib>Developer</contrib>
33 <firstname>Lennart</firstname>
34 <surname>Poettering</surname>
35 <email>lennart@poettering.net</email>
36 </author>
37 </authorgroup>
38 </refentryinfo>
39
40 <refmeta>
41 <refentrytitle>pam_systemd</refentrytitle>
42 <manvolnum>8</manvolnum>
43 </refmeta>
44
45 <refnamediv>
46 <refname>pam_systemd</refname>
47 <refpurpose>Register user sessions in the systemd login manager</refpurpose>
48 </refnamediv>
49
50 <refsynopsisdiv>
51 <para><filename>pam_systemd.so</filename></para>
52 </refsynopsisdiv>
53
54 <refsect1>
55 <title>Description</title>
56
57 <para><command>pam_systemd</command> registers user
58 sessions with the systemd login manager
59 <citerefentry><refentrytitle>systemd-logind.service</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
60 and hence the systemd control group hierarchy.</para>
61
62 <para>On login, this module ensures the following:</para>
63
64 <orderedlist>
65 <listitem><para>If it does not exist yet, the
66 user runtime directory
67 <filename>/run/user/$USER</filename> is
68 created and its ownership changed to the user
69 that is logging in.</para></listitem>
70
71 <listitem><para>The
72 <varname>$XDG_SESSION_ID</varname> environment
73 variable is initialized. If auditing is
74 available and
75 <command>pam_loginuid.so</command> run before
76 this module (which is highly recommended), the
77 variable is initialized from the auditing
78 session id
79 (<filename>/proc/self/sessionid</filename>). Otherwise
80 an independent session counter is
81 used.</para></listitem>
82
83 <listitem><para>A new systemd scope unit is
84 created for the session. If this is the first
85 concurrent session of the user, an implicit
86 slice below <filename>user.slice</filename> is
87 automatically created and the scope placed in
88 it. In instance of the system service
89 <filename>user@.service</filename> which runs
90 the systemd user manager
91 instance.</para></listitem>
92 </orderedlist>
93
94 <para>On logout, this module ensures the following:</para>
95
96 <orderedlist>
97 <listitem><para>If this is enabled, all
98 processes of the session are terminated. If
99 the last concurrent session of a user ends, his
100 user systemd instance will be terminated too,
101 and so will the user's slice
102 unit.</para></listitem>
103
104 <listitem><para>If the last concurrent session
105 of a user ends, the
106 <varname>$XDG_RUNTIME_DIR</varname> directory
107 and all its contents are removed,
108 too.</para></listitem>
109 </orderedlist>
110
111 <para>If the system was not booted up with systemd as
112 init system, this module does nothing and immediately
113 returns PAM_SUCCESS.</para>
114
115 </refsect1>
116
117 <refsect1>
118 <title>Options</title>
119
120 <para>The following options are understood:</para>
121
122 <variablelist class='pam-directives'>
123
124 <varlistentry>
125 <term><option>class=</option></term>
126
127 <listitem><para>Takes a string
128 argument which sets the session class.
129 The XDG_SESSION_CLASS environmental variable
130 takes precedence.</para></listitem>
131 </varlistentry>
132
133 <varlistentry>
134 <term><option>debug=</option></term>
135
136 <listitem><para>Takes a boolean
137 argument. If yes, the module will log
138 debugging information as it
139 operates.</para></listitem>
140 </varlistentry>
141 </variablelist>
142 </refsect1>
143
144 <refsect1>
145 <title>Module Types Provided</title>
146
147 <para>Only <option>session</option> is provided.</para>
148 </refsect1>
149
150 <refsect1>
151 <title>Environment</title>
152
153 <para>The following environment variables are set for the processes of the user's session:</para>
154
155 <variablelist class='environment-variables'>
156 <varlistentry>
157 <term><varname>$XDG_SESSION_ID</varname></term>
158
159 <listitem><para>A session identifier,
160 suitable to be used in filenames. The
161 string itself should be considered
162 opaque, although often it is just the
163 audit session ID as reported by
164 <filename>/proc/self/sessionid</filename>. Each
165 ID will be assigned only once during
166 machine uptime. It may hence be used
167 to uniquely label files or other
168 resources of this
169 session.</para></listitem>
170 </varlistentry>
171
172 <varlistentry>
173 <term><varname>$XDG_RUNTIME_DIR</varname></term>
174
175 <listitem><para>Path to a user-private
176 user-writable directory that is bound
177 to the user login time on the
178 machine. It is automatically created
179 the first time a user logs in and
180 removed on his final logout. If a user
181 logs in twice at the same time, both
182 sessions will see the same
183 <varname>$XDG_RUNTIME_DIR</varname>
184 and the same contents. If a user logs
185 in once, then logs out again, and logs
186 in again, the directory contents will
187 have been lost in between, but
188 applications should not rely on this
189 behavior and must be able to deal with
190 stale files. To store session-private
191 data in this directory, the user should
192 include the value of <varname>$XDG_SESSION_ID</varname>
193 in the filename. This directory shall
194 be used for runtime file system
195 objects such as <constant>AF_UNIX</constant> sockets,
196 FIFOs, PID files and similar. It is
197 guaranteed that this directory is
198 local and offers the greatest possible
199 file system feature set the
200 operating system
201 provides.</para></listitem>
202 </varlistentry>
203 </variablelist>
204 </refsect1>
205
206 <refsect1>
207 <title>Example</title>
208
209 <programlisting>#%PAM-1.0
210 auth required pam_unix.so
211 auth required pam_nologin.so
212 account required pam_unix.so
213 password required pam_unix.so
214 session required pam_unix.so
215 session required pam_loginuid.so
216 session required pam_systemd.so</programlisting>
217 </refsect1>
218
219 <refsect1>
220 <title>See Also</title>
221 <para>
222 <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
223 <citerefentry><refentrytitle>systemd-logind.service</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
224 <citerefentry><refentrytitle>logind.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
225 <citerefentry><refentrytitle>loginctl</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
226 <citerefentry><refentrytitle>pam.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
227 <citerefentry><refentrytitle>pam.d</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
228 <citerefentry><refentrytitle>pam</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
229 <citerefentry><refentrytitle>pam_loginuid</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
230 <citerefentry><refentrytitle>systemd.scope</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
231 <citerefentry><refentrytitle>systemd.slice</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
232 <citerefentry><refentrytitle>systemd.service</refentrytitle><manvolnum>5</manvolnum></citerefentry>
233 </para>
234 </refsect1>
235
236 </refentry>