sd_bus_creds_get_pid
systemd
A monkey with a typewriter
Zbigniew
Jędrzejewski-Szmek
zbyszek@in.waw.pl
sd_bus_creds_get_pid
3
sd_bus_creds_get_pid
sd_bus_creds_get_pid_starttime
sd_bus_creds_get_tid
sd_bus_creds_get_uid
sd_bus_creds_get_gid
sd_bus_creds_get_comm
sd_bus_creds_get_tid_comm
sd_bus_creds_get_exe
sd_bus_creds_get_cmdline
sd_bus_creds_get_cgroup
sd_bus_creds_get_unit
sd_bus_creds_get_user_unit
sd_bus_creds_get_slice
sd_bus_creds_get_session
sd_bus_creds_get_owner_uid
sd_bus_creds_has_effective_cap
sd_bus_creds_has_permitted_cap
sd_bus_creds_has_inheritable_cap
sd_bus_creds_has_bounding_cap
sd_bus_creds_get_selinux_context
sd_bus_creds_get_audit_session_id
sd_bus_creds_get_audit_login_uid
sd_bus_creds_get_unique_name
sd_bus_creds_get_well_known_names
Retrieve fields from a credentials object
#include <systemd/sd-bus.h>
int sd_bus_creds_get_pid
sd_bus_creds* c
pid_t *pid
int sd_bus_creds_get_pid_starttime
sd_bus_creds* c
uint64_t *usec
int sd_bus_creds_get_tid
sd_bus_creds* c
pid_t *tid
int sd_bus_creds_get_pid
sd_bus_creds* c
uid_t *uid
int sd_bus_creds_get_gid
sd_bus_creds* c
gid_t *gid
int sd_bus_creds_get_comm
sd_bus_creds* c
const char **comm
int sd_bus_creds_get_tid_comm
sd_bus_creds* c
const char **comm
int sd_bus_creds_get_exe
sd_bus_creds* c
const char **exe
int sd_bus_creds_get_cmdline
sd_bus_creds* c
char ***cmdline
int sd_bus_creds_get_cgroup
sd_bus_creds* c
const char **cgroup
int sd_bus_creds_get_unit
sd_bus_creds* c
const char **unit
int sd_bus_creds_get_user_unit
sd_bus_creds* c
const char **unit
int sd_bus_creds_get_slice
sd_bus_creds* c
const char **slice
int sd_bus_creds_get_session
sd_bus_creds* c
const char **slice
int sd_bus_creds_get_owner_uid
sd_bus_creds* c
uid_t *uid
int sd_bus_creds_has_effective_cap
sd_bus_creds* c
int capability
int sd_bus_creds_has_permitted_cap
sd_bus_creds* c
int capability
int sd_bus_creds_has_inheritable_cap
sd_bus_creds* c
int capability
int sd_bus_creds_has_bounding_cap
sd_bus_creds* c
int capability
int sd_bus_creds_get_selinux_context
sd_bus_creds* c
const char **context
int sd_bus_creds_get_audit_session_id
sd_bus_creds* c
uint32_t *sessionid
int sd_bus_creds_get_audit_login_uid
sd_bus_creds* c
uid_t *loginuid
int sd_bus_creds_get_unique_name
sd_bus_creds* c
const char **name
int sd_bus_creds_get_well_known_names
sd_bus_creds* c
char ***name
Description
Those functions return information from an
sd_bus_creds object. It may be created with
sd_bus_creds_new_from_pid3,
in which case it will describe the specified process, or it may be
created by
sd_bus_get_peer_creds3,
in which case it will describe the process at the other endpoint
of a connection.
sd_bus_creds_get_pid will retrieve the
PID (process identifier).
sd_bus_creds_get_pid_starttime will
retrieve the time since the start of the epoch in microseconds
since the process was started.
sd_bus_creds_get_tid will retrieve the
TID (thread identifier).
sd_bus_creds_get_uid will retrieve the
UID (user identifier).
sd_bus_creds_get_gid will retrieve the
GID (group identifier).
sd_bus_creds_get_comm will retrieve the
comm field (name of the executable, as stored in
/proc/pid/comm).
sd_bus_creds_get_tid_comm will retrieve
the comm field of the thread (as stored in
/proc/pid/task/tid/comm).
sd_bus_creds_get_exe will retrieve the
path to the program (as stored in the
/proc/pid/exe
link, but with (deleted) suffix removed).
sd_bus_creds_get_cmdline will retrieve
an array of command-line arguments (as stored in
/proc/pid/cmdline).
sd_bus_creds_get_cgroup will retrieve
the cgroup path. See cgroups.txt.
sd_bus_creds_get_unit will retrieve the
systemd unit name (in the system instance of systemd) that the
process is part of. See
systemd.unit5.
sd_bus_creds_get_user_unit will
retrieve the systemd unit name (in the user instance of systemd)
that the process is part of. See
systemd.unit5.
sd_bus_creds_get_slice will retrieve
the systemd slice (a unit in the system instance of systemd) that
the process is part of. See
systemd.slice5.
sd_bus_creds_get_session will retrieve
the logind session that the process is part of. See
systemd-logind.service8.
sd_bus_creds_get_owner_uid will retrieve
the UID (user identifier) of the user who owns the slice
that the process is part of. See
systemd.slice5
.
sd_bus_creds_has_effective_cap will
check whether all of the capabilities specified by
capability were set in the effective
capabilities mask. A positive return value means that they were
set, zero means that they were not set, and a negative return
value signifies an error. See
capabilities7
and Capabilities= and
CapabilityBoundingSet= settings in
systemd.exec5.
sd_bus_creds_has_permitted_cap is
similar to sd_bus_creds_has_effective_cap,
but will check the permitted capabilities mask.
sd_bus_creds_has_inheritable_cap is
similar to sd_bus_creds_has_effective_cap,
but will check the inheritable capabilities mask.
sd_bus_creds_has_bounding_cap is
similar to sd_bus_creds_has_effective_cap,
but will check the bounding capabilities mask.
sd_bus_creds_get_selinux_context will
retrieve the SELinux context of the process.
sd_bus_creds_get_audit_session_id will
retrieve the audit session identifier of the process.
sd_bus_creds_get_audit_login_uid will
retrieve the audit user login identifier (the identifier of the
user who is "responsible" for the session).
sd_bus_creds_get_unique_name will
retrieve the D-Bus unique name. See The
D-Bus specification.
sd_bus_creds_get_well_known_names will
retrieve the set of D-Bus well-known names. See The
D-Bus specification.
All functions that take a const
char** parameter will store the answer there as an
address of a NUL-terminated string. It will be valid as long as
c remains valid, and should not be freed or
modified by the caller.
All functions that take a char***
parameter will store the answer there as an address of a an array
of strings. Each invidividual string is NUL-terminated, and the
array is NULL-terminated as a whole. It will be valid as long as
c remains valid, and should not be freed or
modified by the caller.
Return Value
On success, these calls return 0 or a positive integer. On
failure, these calls return a negative errno-style error code.
Errors
Returned errors may indicate the following problems:
-ENODATA
Given field is not available in
c.
-ENOENT
Given field is not specified for the sender.
This will be returned by sd_bus_get_unit,
sd_bus_get_user_unit,
sd_bus_get_slice,
sd_bus_get_session, and
sd_bus_get_owner_uid if the sender is not
part of a systemd system unit, systemd user unit, systemd
slice, logind session, or a systemd user session.
-ENXIO
An error occured in parsing cgroup paths.
libsystemd-bus might be out of sync with
the running systemd version.
-EINVAL
Specified pointer parameter is NULL.
-ENOMEM
Memory allocation failed.
Notes
sd_bus_open_user() and other functions
described here are available as a shared library, which can be
compiled and linked to with the
libsystemd-bus pkg-config1
file.
See Also
systemd1,
sd-bus3,
credentials7,
fork2,
execve2,
free3,
proc5,
systemd.journald-fields7