SD_PID_GET_OWNER_UID - Online Linux Manual PageSection : 3
Updated :
Source : systemd 250
Note : sd_pid_get_owner_uid

NAMEsd_pid_get_owner_uid, sd_pid_get_session, sd_pid_get_user_unit, sd_pid_get_unit, sd_pid_get_machine_name, sd_pid_get_slice, sd_pid_get_user_slice, sd_pid_get_cgroup, sd_peer_get_owner_uid, sd_peer_get_session, sd_peer_get_user_unit, sd_peer_get_unit, sd_peer_get_machine_name, sd_peer_get_slice, sd_peer_get_user_slice, sd_peer_get_cgroup − Determine the owner uid of the user unit or session, or the session, user unit, system unit, container/VM or slice that a specific PID or socket peer belongs to

SYNOPSIS#include <systemd/sd−login​.h>int sd_pid_get_owner_uid(pid_t pid, uid_t *uid); int sd_pid_get_session(pid_t pid, char **session); int sd_pid_get_user_unit(pid_t pid, char **unit); int sd_pid_get_unit(pid_t pid, char **unit); int sd_pid_get_machine_name(pid_t pid, char **name); int sd_pid_get_slice(pid_t pid, char **slice); int sd_pid_get_user_slice(pid_t pid, char **slice); int sd_pid_get_cgroup(pid_t pid, char **cgroup); int sd_peer_get_owner_uid(int fd, uid_t *uid); int sd_peer_get_session(int fd, char **session); int sd_peer_get_user_unit(int fd, char **unit); int sd_peer_get_unit(int fd, char **unit); int sd_peer_get_machine_name(int fd, char **name); int sd_peer_get_slice(int fd, char **slice); int sd_peer_get_user_slice(int fd, char **slice); int sd_peer_get_cgroup(int fd, char **cgroup);

DESCRIPTIONsd_pid_get_owner_uid() may be used to determine the Unix UID (user identifier) which owns the login session or systemd user unit of a process identified by the specified PID​. For processes which are not part of a login session and not managed by a user manager, this function will fail with −ENODATA​. sd_pid_get_session() may be used to determine the login session identifier of a process identified by the specified process identifier​. The session identifier is a short string, suitable for usage in file system paths​. Please note the login session may be limited to a stub process or two​. User processes may instead be started from their systemd user manager, e​.g​. GUI applications started using DBus activation, as well as service processes which are shared between multiple logins of the same user​. For processes which are not part of a login session, this function will fail with −ENODATA​. The returned string needs to be freed with the libc free(3) call after use​. sd_pid_get_user_unit() may be used to determine the systemd user unit (i​.e​. user service or scope unit) identifier of a process identified by the specified PID​. The unit name is a short string, suitable for usage in file system paths​. For processes which are not managed by a user manager, this function will fail with −ENODATA​. The returned string needs to be freed with the libc free(3) call after use​. sd_pid_get_unit() may be used to determine the systemd system unit (i​.e​. system service or scope unit) identifier of a process identified by the specified PID​. The unit name is a short string, suitable for usage in file system paths​. Note that not all processes are part of a system unit/service​. For processes not being part of a systemd system unit, this function will fail with −ENODATA​. (More specifically, this call will not work for kernel threads​.) The returned string needs to be freed with the libc free(3) call after use​. sd_pid_get_machine_name() may be used to determine the name of the VM or container is a member of​. The machine name is a short string, suitable for usage in file system paths​. The returned string needs to be freed with the libc free(3) call after use​. For processes not part of a VM or container, this function fails with −ENODATA​. sd_pid_get_slice() may be used to determine the slice unit the process is a member of​. See systemd.slice(5) for details about slices​. The returned string needs to be freed with the libc free(3) call after use​. Similarly, sd_pid_get_user_slice() returns the user slice (as managed by the user's systemd instance) of a process​. sd_pid_get_cgroup() returns the control group path of the specified process, relative to the root of the hierarchy​. Returns the path without trailing slash, except for processes located in the root control group, where "/" is returned​. To find the actual control group path in the file system, the returned path needs to be prefixed with /sys/fs/cgroup/ (if the unified control group setup is used), or /sys/fs/cgroup/HIERARCHY/ (if the legacy multi−hierarchy control group setup is used)​. If the pid parameter of any of these functions is passed as 0, the operation is executed for the calling process​. The sd_peer_get_owner_uid(), sd_peer_get_session(), sd_peer_get_user_unit(), sd_peer_get_unit(), sd_peer_get_machine_name(), sd_peer_get_slice(), sd_peer_get_user_slice() and sd_peer_get_cgroup() calls operate similar to their PID counterparts, but operate on a connected AF_UNIX socket and retrieve information about the connected peer process​. Note that these fields are retrieved via /proc/, and hence are not suitable for authorization purposes, as they are subject to races​.

RETURN VALUEOn success, these calls return 0 or a positive integer​. On failure, these calls return a negative errno−style error code​.

ErrorsReturned errors may indicate the following problems: −ESRCH The specified PID does not refer to a running process​. −EBADF The specified socket file descriptor was invalid​. −ENODATA The given field is not specified for the described process or peer​. −EINVAL An input parameter was invalid (out of range, or NULL, where that is not accepted)​. −ENOMEM Memory allocation failed​.

NOTESThese APIs are implemented as a shared library, which can be compiled and linked to with the libsystemd ​pkg-config(1) file​. Note that the login session identifier as returned by sd_pid_get_session() is completely unrelated to the process session identifier as returned by getsid(2)​.

SEE ALSOsystemd(1), sd-login(3), sd_session_is_active(3), getsid(2), systemd.slice(5), systemd-machined.service(8)
0
Johanes Gumabo
Data Size   :   21,843 byte
man-sd_pid_get_user_slice.3Build   :   2024-12-05, 20:55   :  
Visitor Screen   :   x
Visitor Counter ( page / site )   :   2 / 200,862
Visitor ID   :     :  
Visitor IP   :   3.140.195.142   :  
Visitor Provider   :   AMAZON-02   :  
Provider Position ( lat x lon )   :   39.962500 x -83.006100   :   x
Provider Accuracy Radius ( km )   :   1000   :  
Provider City   :   Columbus   :  
Provider Province   :   Ohio ,   :   ,
Provider Country   :   United States   :  
Provider Continent   :   North America   :  
Visitor Recorder   :   Version   :  
Visitor Recorder   :   Library   :  
Online Linux Manual Page   :   Version   :   Online Linux Manual Page - Fedora.40 - march=x86-64 - mtune=generic - 24.12.05
Online Linux Manual Page   :   Library   :   lib_c - 24.10.03 - march=x86-64 - mtune=generic - Fedora.40
Online Linux Manual Page   :   Library   :   lib_m - 24.10.03 - march=x86-64 - mtune=generic - Fedora.40
Data Base   :   Version   :   Online Linux Manual Page Database - 24.04.13 - march=x86-64 - mtune=generic - fedora-38
Data Base   :   Library   :   lib_c - 23.02.07 - march=x86-64 - mtune=generic - fedora.36

Very long time ago, I have the best tutor, Wenzel Svojanovsky . If someone knows the email address of Wenzel Svojanovsky , please send an email to johanes_gumabo@yahoo.co.id .
If error, please print screen and send to johanes_gumabo@yahoo.co.id
Under development. Support me via PayPal.