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 the capability specified by capability was set in the effective capabilities mask. A positive return value means that is were set, zero means that it was 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 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 pkg-config1 file. See Also systemd1, sd-bus3, credentials7, fork2, execve2, free3, proc5, systemd.journald-fields7