]> git.ipfire.org Git - thirdparty/systemd.git/blame - man/sd_bus_creds_new_from_pid.xml
man: use same header for all files
[thirdparty/systemd.git] / man / sd_bus_creds_new_from_pid.xml
CommitLineData
514094f9 1<?xml version='1.0'?>
3a54a157
ZJS
2<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
3 "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
0307f791 4<!-- SPDX-License-Identifier: LGPL-2.1+ -->
4cf8496d 5
7d6b2723 6<refentry id="sd_bus_creds_new_from_pid" xmlns:xi="http://www.w3.org/2001/XInclude">
4cf8496d
ZJS
7
8 <refentryinfo>
9 <title>sd_bus_creds_new_from_pid</title>
10 <productname>systemd</productname>
4cf8496d
ZJS
11 </refentryinfo>
12
13 <refmeta>
14 <refentrytitle>sd_bus_creds_new_from_pid</refentrytitle>
15 <manvolnum>3</manvolnum>
16 </refmeta>
17
18 <refnamediv>
19 <refname>sd_bus_creds_new_from_pid</refname>
20 <refname>sd_bus_creds_get_mask</refname>
f6f7a984 21 <refname>sd_bus_creds_get_augmented_mask</refname>
4cf8496d
ZJS
22 <refname>sd_bus_creds_ref</refname>
23 <refname>sd_bus_creds_unref</refname>
4afd3348 24 <refname>sd_bus_creds_unrefp</refname>
4cf8496d
ZJS
25
26 <refpurpose>Retrieve credentials object for the specified PID</refpurpose>
27 </refnamediv>
28
29 <refsynopsisdiv>
30 <funcsynopsis>
31 <funcsynopsisinfo>#include &lt;systemd/sd-bus.h&gt;</funcsynopsisinfo>
32
33 <funcprototype>
34 <funcdef>int <function>sd_bus_creds_new_from_pid</function></funcdef>
35 <paramdef>pid_t <parameter>pid</parameter></paramdef>
36 <paramdef>uint64_t <parameter>creds_mask</parameter></paramdef>
8dc385e7 37 <paramdef>sd_bus_creds **<parameter>ret</parameter></paramdef>
4cf8496d
ZJS
38 </funcprototype>
39
40 <funcprototype>
41 <funcdef>uint64_t <function>sd_bus_creds_get_mask</function></funcdef>
512e3bbc 42 <paramdef>sd_bus_creds *<parameter>c</parameter></paramdef>
4cf8496d
ZJS
43 </funcprototype>
44
f6f7a984
LP
45 <funcprototype>
46 <funcdef>uint64_t <function>sd_bus_creds_get_augmented_mask</function></funcdef>
512e3bbc 47 <paramdef>sd_bus_creds *<parameter>c</parameter></paramdef>
f6f7a984
LP
48 </funcprototype>
49
4cf8496d 50 <funcprototype>
8dc385e7
JE
51 <funcdef>sd_bus_creds *<function>sd_bus_creds_ref</function></funcdef>
52 <paramdef>sd_bus_creds *<parameter>c</parameter></paramdef>
4cf8496d
ZJS
53 </funcprototype>
54
55 <funcprototype>
8dc385e7
JE
56 <funcdef>sd_bus_creds *<function>sd_bus_creds_unref</function></funcdef>
57 <paramdef>sd_bus_creds *<parameter>c</parameter></paramdef>
4cf8496d 58 </funcprototype>
4afd3348
LP
59
60 <funcprototype>
61 <funcdef>void <function>sd_bus_creds_unrefp</function></funcdef>
62 <paramdef>sd_bus_creds **<parameter>c</parameter></paramdef>
63 </funcprototype>
4cf8496d
ZJS
64 </funcsynopsis>
65
66 <para>
67 <constant>SD_BUS_CREDS_PID</constant>,
f6f7a984 68 <constant>SD_BUS_CREDS_PPID</constant>,
4cf8496d
ZJS
69 <constant>SD_BUS_CREDS_TID</constant>,
70 <constant>SD_BUS_CREDS_UID</constant>,
f6f7a984
LP
71 <constant>SD_BUS_CREDS_EUID</constant>,
72 <constant>SD_BUS_CREDS_SUID</constant>,
73 <constant>SD_BUS_CREDS_FSUID</constant>,
4cf8496d 74 <constant>SD_BUS_CREDS_GID</constant>,
f6f7a984
LP
75 <constant>SD_BUS_CREDS_EGID</constant>,
76 <constant>SD_BUS_CREDS_SGID</constant>,
77 <constant>SD_BUS_CREDS_FSGID</constant>,
78 <constant>SD_BUS_CREDS_SUPPLEMENTARY_GIDS</constant>,
4cf8496d
ZJS
79 <constant>SD_BUS_CREDS_COMM</constant>,
80 <constant>SD_BUS_CREDS_TID_COMM</constant>,
81 <constant>SD_BUS_CREDS_EXE</constant>,
82 <constant>SD_BUS_CREDS_CMDLINE</constant>,
83 <constant>SD_BUS_CREDS_CGROUP</constant>,
84 <constant>SD_BUS_CREDS_UNIT</constant>,
4cf8496d 85 <constant>SD_BUS_CREDS_SLICE</constant>,
f6f7a984
LP
86 <constant>SD_BUS_CREDS_USER_UNIT</constant>,
87 <constant>SD_BUS_CREDS_USER_SLICE</constant>,
4cf8496d
ZJS
88 <constant>SD_BUS_CREDS_SESSION</constant>,
89 <constant>SD_BUS_CREDS_OWNER_UID</constant>,
90 <constant>SD_BUS_CREDS_EFFECTIVE_CAPS</constant>,
91 <constant>SD_BUS_CREDS_PERMITTED_CAPS</constant>,
92 <constant>SD_BUS_CREDS_INHERITABLE_CAPS</constant>,
93 <constant>SD_BUS_CREDS_BOUNDING_CAPS</constant>,
94 <constant>SD_BUS_CREDS_SELINUX_CONTEXT</constant>,
95 <constant>SD_BUS_CREDS_AUDIT_SESSION_ID</constant>,
96 <constant>SD_BUS_CREDS_AUDIT_LOGIN_UID</constant>,
f6f7a984 97 <constant>SD_BUS_CREDS_TTY</constant>,
4cf8496d
ZJS
98 <constant>SD_BUS_CREDS_UNIQUE_NAME</constant>,
99 <constant>SD_BUS_CREDS_WELL_KNOWN_NAMES</constant>,
f6f7a984
LP
100 <constant>SD_BUS_CREDS_DESCRIPTION</constant>,
101 <constant>SD_BUS_CREDS_AUGMENT</constant>,
4cf8496d
ZJS
102 <constant>_SD_BUS_CREDS_ALL</constant>
103 </para>
104 </refsynopsisdiv>
105
106 <refsect1>
107 <title>Description</title>
108
f6f7a984
LP
109 <para><function>sd_bus_creds_new_from_pid()</function> creates a
110 new credentials object and fills it with information about the
111 process <parameter>pid</parameter>. The pointer to this object
a8eaaee7 112 will be stored in the <parameter>ret</parameter> pointer. Note that
f6f7a984
LP
113 credential objects may also be created and retrieved via
114 <citerefentry><refentrytitle>sd_bus_get_name_creds</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
115 <citerefentry><refentrytitle>sd_bus_get_owner_creds</refentrytitle><manvolnum>3</manvolnum></citerefentry>
116 and
117 <citerefentry><refentrytitle>sd_bus_message_get_creds</refentrytitle><manvolnum>3</manvolnum></citerefentry>.</para>
4cf8496d
ZJS
118
119 <para>The information that will be stored is determined by
120 <parameter>creds_mask</parameter>. It may contain a subset of ORed
121 constants <constant>SD_BUS_CREDS_PID</constant>,
f6f7a984 122 <constant>SD_BUS_CREDS_PPID</constant>,
4cf8496d
ZJS
123 <constant>SD_BUS_CREDS_TID</constant>,
124 <constant>SD_BUS_CREDS_UID</constant>,
f6f7a984
LP
125 <constant>SD_BUS_CREDS_EUID</constant>,
126 <constant>SD_BUS_CREDS_SUID</constant>,
127 <constant>SD_BUS_CREDS_FSUID</constant>,
4cf8496d 128 <constant>SD_BUS_CREDS_GID</constant>,
f6f7a984
LP
129 <constant>SD_BUS_CREDS_EGID</constant>,
130 <constant>SD_BUS_CREDS_SGID</constant>,
131 <constant>SD_BUS_CREDS_FSGID</constant>,
132 <constant>SD_BUS_CREDS_SUPPLEMENTARY_GIDS</constant>,
4cf8496d
ZJS
133 <constant>SD_BUS_CREDS_COMM</constant>,
134 <constant>SD_BUS_CREDS_TID_COMM</constant>,
135 <constant>SD_BUS_CREDS_EXE</constant>,
136 <constant>SD_BUS_CREDS_CMDLINE</constant>,
137 <constant>SD_BUS_CREDS_CGROUP</constant>,
138 <constant>SD_BUS_CREDS_UNIT</constant>,
4cf8496d 139 <constant>SD_BUS_CREDS_SLICE</constant>,
f6f7a984
LP
140 <constant>SD_BUS_CREDS_USER_UNIT</constant>,
141 <constant>SD_BUS_CREDS_USER_SLICE</constant>,
4cf8496d
ZJS
142 <constant>SD_BUS_CREDS_SESSION</constant>,
143 <constant>SD_BUS_CREDS_OWNER_UID</constant>,
144 <constant>SD_BUS_CREDS_EFFECTIVE_CAPS</constant>,
145 <constant>SD_BUS_CREDS_PERMITTED_CAPS</constant>,
146 <constant>SD_BUS_CREDS_INHERITABLE_CAPS</constant>,
147 <constant>SD_BUS_CREDS_BOUNDING_CAPS</constant>,
148 <constant>SD_BUS_CREDS_SELINUX_CONTEXT</constant>,
149 <constant>SD_BUS_CREDS_AUDIT_SESSION_ID</constant>,
150 <constant>SD_BUS_CREDS_AUDIT_LOGIN_UID</constant>,
f6f7a984 151 <constant>SD_BUS_CREDS_TTY</constant>,
4cf8496d 152 <constant>SD_BUS_CREDS_UNIQUE_NAME</constant>,
a8eaaee7 153 <constant>SD_BUS_CREDS_WELL_KNOWN_NAMES</constant>, and
f6f7a984
LP
154 <constant>SD_BUS_CREDS_DESCRIPTION</constant>. Use the special
155 value <constant>_SD_BUS_CREDS_ALL</constant> to request all
156 supported fields. The <constant>SD_BUS_CREDS_AUGMENT</constant>
a8eaaee7 157 constant may not be ORed into the mask for invocations of
f6f7a984 158 <function>sd_bus_creds_new_from_pid()</function>.</para>
4cf8496d
ZJS
159
160 <para>Fields can be retrieved from the credentials object using
161 <citerefentry><refentrytitle>sd_bus_creds_get_pid</refentrytitle><manvolnum>3</manvolnum></citerefentry>
162 and other functions which correspond directly to the constants
163 listed above.</para>
164
f6f7a984
LP
165 <para>A mask of fields which were actually successfully retrieved
166 can be retrieved with
167 <function>sd_bus_creds_get_mask()</function>. If the credentials
168 object was created with
4cf8496d
ZJS
169 <function>sd_bus_creds_new_from_pid()</function>, this will be a
170 subset of fields requested in <parameter>creds_mask</parameter>.
171 </para>
172
b938cb90 173 <para>Similar to <function>sd_bus_creds_get_mask()</function>, the
f6f7a984
LP
174 function <function>sd_bus_creds_get_augmented_mask()</function>
175 returns a bitmask of field constants. The mask indicates which
176 credential fields have been retrieved in a non-atomic fashion. For
177 credential objects created via
b938cb90 178 <function>sd_bus_creds_new_from_pid()</function>, this mask will be
f6f7a984
LP
179 identical to the mask returned by
180 <function>sd_bus_creds_get_mask()</function>. However, for
181 credential objects retrieved via
b938cb90 182 <function>sd_bus_get_name_creds()</function>, this mask will be set
f6f7a984
LP
183 for the credential fields that could not be determined atomically
184 at peer connection time, and which were later added by reading
185 augmenting credential data from
a8eaaee7 186 <filename>/proc</filename>. Similarly, for credential objects
b938cb90 187 retrieved via <function>sd_bus_get_owner_creds()</function>, the
f6f7a984 188 mask is set for the fields that could not be determined atomically
a8eaaee7 189 at bus creation time, but have been augmented. Similarly, for
f6f7a984 190 credential objects retrieved via
b938cb90 191 <function>sd_bus_message_get_creds()</function>, the mask is set
f6f7a984 192 for the fields that could not be determined atomically at message
a8eaaee7 193 sending time, but have been augmented. The mask returned by
f6f7a984
LP
194 <function>sd_bus_creds_get_augmented_mask()</function> is always a
195 subset of (or identical to) the mask returned by
196 <function>sd_bus_creds_get_mask()</function> for the same
197 object. The latter call hence returns all credential fields
198 available in the credential object, the former then marks the
199 subset of those that have been augmented. Note that augmented
b938cb90
JE
200 fields are unsuitable for authorization decisions, as they may be
201 retrieved at different times, thus being subject to races. Hence,
f6f7a984
LP
202 augmented fields should be used exclusively for informational
203 purposes.
204 </para>
205
206 <para><function>sd_bus_creds_ref()</function> creates a new
4cf8496d
ZJS
207 reference to the credentials object <parameter>c</parameter>. This
208 object will not be destroyed until
f6f7a984 209 <function>sd_bus_creds_unref()</function> has been called as many
4cf8496d 210 times plus once more. Once the reference count has dropped to zero,
06b643e7 211 <parameter>c</parameter> cannot be used anymore, so further
4cf8496d
ZJS
212 calls to <function>sd_bus_creds_ref(c)</function> or
213 <function>sd_bus_creds_unref(c)</function> are illegal.</para>
214
f6f7a984 215 <para><function>sd_bus_creds_unref()</function> destroys a reference
4cf8496d 216 to <parameter>c</parameter>.</para>
4afd3348
LP
217
218 <para><function>sd_bus_creds_unrefp()</function> is similar to
219 <function>sd_bus_creds_unref()</function> but takes a pointer to a
220 pointer to an <type>sd_bus_creds</type> object. This call is useful in
221 conjunction with GCC's and LLVM's <ulink
222 url="https://gcc.gnu.org/onlinedocs/gcc/Common-Variable-Attributes.html">Clean-up
223 Variable Attribute</ulink>. Note that this function is defined as
224 inline function.</para>
225
226 <para><function>sd_bus_creds_ref()</function>,
227 <function>sd_bus_creds_unref()</function> and
228 <function>sd_bus_creds_unrefp()</function> execute no operation if
229 the passed in bus credentials object is
230 <constant>NULL</constant>.</para>
231
4cf8496d
ZJS
232 </refsect1>
233
234 <refsect1>
235 <title>Return Value</title>
236
237 <para>On success, <function>sd_bus_creds_new_from_pid()</function>
238 returns 0 or a positive integer. On failure, it returns a negative
239 errno-style error code.</para>
240
241 <para><function>sd_bus_creds_get_mask()</function> returns the
242 mask of successfully acquired fields.</para>
243
f6f7a984
LP
244 <para><function>sd_bus_creds_get_augmented_mask()</function>
245 returns the mask of fields that have been augmented from data in
246 <filename>/proc</filename>, and are thus not suitable for
247 authorization decisions.</para>
248
249 <para><function>sd_bus_creds_ref()</function> always returns the
4cf8496d
ZJS
250 argument.</para>
251
f6f7a984 252 <para><function>sd_bus_creds_unref()</function> always returns
4cf8496d
ZJS
253 <constant>NULL</constant>.</para>
254 </refsect1>
255
256 <refsect1>
257 <title>Reference ownership</title>
258
259 <para>Function <function>sd_bus_creds_new_from_pid()</function>
260 creates a new object and the caller owns the sole reference. When
261 not needed anymore, this reference should be destroyed with
262 <citerefentry><refentrytitle>sd_bus_creds_unref</refentrytitle><manvolnum>3</manvolnum></citerefentry>.
263 </para>
264 </refsect1>
265
266 <refsect1>
267 <title>Errors</title>
268
269 <para>Returned errors may indicate the following problems:</para>
270
271 <variablelist>
272
273 <varlistentry>
8474b70c 274 <term><constant>-ESRCH</constant></term>
4cf8496d
ZJS
275
276 <listitem><para>Specified <parameter>pid</parameter> could not
277 be found.</para></listitem>
278 </varlistentry>
279
280 <varlistentry>
8474b70c 281 <term><constant>-EINVAL</constant></term>
4cf8496d
ZJS
282
283 <listitem><para>Specified parameter is invalid
284 (<constant>NULL</constant> in case of output
285 parameters).</para></listitem>
286 </varlistentry>
287
288 <varlistentry>
8474b70c 289 <term><constant>-ENOMEM</constant></term>
4cf8496d
ZJS
290
291 <listitem><para>Memory allocation failed.</para></listitem>
292 </varlistentry>
f6f7a984
LP
293
294 <varlistentry>
295 <term><constant>-EOPNOTSUPP</constant></term>
296
297 <listitem><para>One of the requested fields is unknown to the local system.</para></listitem>
298 </varlistentry>
4cf8496d
ZJS
299 </variablelist>
300 </refsect1>
301
7d6b2723 302 <xi:include href="libsystemd-pkgconfig.xml" />
4cf8496d
ZJS
303
304 <refsect1>
305 <title>See Also</title>
306
307 <para>
308 <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
309 <citerefentry><refentrytitle>sd-bus</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
4cf8496d 310 <citerefentry><refentrytitle>sd_bus_creds_get_pid</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
f6f7a984
LP
311 <citerefentry><refentrytitle>sd_bus_get_name_creds</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
312 <citerefentry><refentrytitle>sd_bus_get_owner_creds</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
313 <citerefentry><refentrytitle>sd_bus_message_get_creds</refentrytitle><manvolnum>3</manvolnum></citerefentry>
4cf8496d
ZJS
314 </para>
315 </refsect1>
316
317</refentry>