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