diff --git a/man/rules/meson.build b/man/rules/meson.build
index ae0556058e..f74dbf9c77 100644
--- a/man/rules/meson.build
+++ b/man/rules/meson.build
@@ -441,7 +441,7 @@ manpages = [
'3',
['sd_notifyf', 'sd_pid_notify', 'sd_pid_notify_with_fds', 'sd_pid_notifyf'],
''],
- ['sd_pid_get_session',
+ ['sd_pid_get_owner_uid',
'3',
['sd_peer_get_cgroup',
'sd_peer_get_machine_name',
@@ -453,7 +453,7 @@ manpages = [
'sd_peer_get_user_unit',
'sd_pid_get_cgroup',
'sd_pid_get_machine_name',
- 'sd_pid_get_owner_uid',
+ 'sd_pid_get_session',
'sd_pid_get_slice',
'sd_pid_get_unit',
'sd_pid_get_user_slice',
diff --git a/man/sd_bus_creds_get_pid.xml b/man/sd_bus_creds_get_pid.xml
index 6ea95e0665..56e62863f2 100644
--- a/man/sd_bus_creds_get_pid.xml
+++ b/man/sd_bus_creds_get_pid.xml
@@ -394,16 +394,19 @@
sd_bus_creds_get_session() will
retrieve the identifier of the login session that the process is
- a part of. See
- systemd-logind.service8. For
- processes that are not part of a session, returns -ENXIO.
-
+ a part of. 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 that are not part
+ of a session, returns -ENXIO.
sd_bus_creds_get_owner_uid() will
retrieve the numeric UID (user identifier) of the user who owns
- the login session that the process is a part of. See
+ the user unit or login session that the process is a part of. See
systemd-logind.service8.
- For processes that are not part of a session, returns -ENXIO.
+ For processes that are not part of a user unit or session, returns
+ -ENXIO.
sd_bus_creds_has_effective_cap() will check whether the capability specified by
@@ -506,8 +509,10 @@
sd_bus_creds_get_user_slice(), and
sd_bus_creds_get_session() if the process is
not part of a systemd system unit, systemd user unit, systemd
- slice, or logind session. It will also be returned by
- sd_bus_creds_get_exe() and
+ slice, or logind session. It will be returned by
+ sd_bus_creds_get_owner_uid() if the process is
+ not part of a systemd user unit or logind session. It will also be
+ returned by sd_bus_creds_get_exe() and
sd_bus_creds_get_cmdline() for kernel
threads (since these are not started from an executable binary,
nor have a command line), and by
diff --git a/man/sd_pid_get_session.xml b/man/sd_pid_get_owner_uid.xml
similarity index 85%
rename from man/sd_pid_get_session.xml
rename to man/sd_pid_get_owner_uid.xml
index 14ebd53e36..5a2a07d096 100644
--- a/man/sd_pid_get_session.xml
+++ b/man/sd_pid_get_owner_uid.xml
@@ -21,10 +21,10 @@
along with systemd; If not, see .
-->
-
+
- sd_pid_get_session
+ sd_pid_get_owner_uid
systemd
@@ -38,30 +38,30 @@
- sd_pid_get_session
+ sd_pid_get_owner_uid
3
- sd_pid_get_session
- sd_pid_get_unit
- sd_pid_get_user_unit
sd_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_session
- sd_peer_get_unit
- sd_peer_get_user_unit
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 session, unit, owner of a session,
- container/VM or slice of a specific PID or socket
- peer
+ 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.
@@ -69,15 +69,15 @@
#include <systemd/sd-login.h>
- int sd_pid_get_session
+ int sd_pid_get_owner_uid
pid_t pid
- char **session
+ uid_t *uid
- int sd_pid_get_unit
+ int sd_pid_get_session
pid_t pid
- char **unit
+ char **session
@@ -87,9 +87,9 @@
- int sd_pid_get_owner_uid
+ int sd_pid_get_unit
pid_t pid
- uid_t *uid
+ char **unit
@@ -117,15 +117,15 @@
- int sd_peer_get_session
+ int sd_peer_get_owner_uid
int fd
- char **session
+ uid_t *uid
- int sd_peer_get_unit
+ int sd_peer_get_session
int fd
- char **unit
+ char **session
@@ -135,9 +135,9 @@
- int sd_peer_get_owner_uid
+ int sd_peer_get_unit
int fd
- uid_t *uid
+ char **unit
@@ -169,16 +169,34 @@
Description
+ sd_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. Note that
- not all processes are part of a login session (e.g. system service
- processes, user processes that are shared between multiple
- sessions of the same user, or kernel threads). For processes not
- being part of a login session, this function will fail with
- -ENODATA. The returned string needs to be freed with the libc
- -ENODATA.
+ The returned string needs to be freed with the libc free3
+ 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 free3
call after use.
@@ -186,37 +204,21 @@
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 (e.g. user processes, or kernel threads). 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 -ENODATA.
+ (More specifically, this call will not work for kernel threads.)
+ The returned string needs to be freed with the libc free3
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. This is
- similar to sd_pid_get_unit(), but applies to
- user units instead of system units.
-
- sd_pid_get_owner_uid() may be used to
- determine the Unix UID (user identifier) of the owner of the
- session of a process identified the specified PID. Note that this
- function will succeed for user processes which are shared between
- multiple login sessions of the same user, whereas
- sd_pid_get_session() will fail. For processes
- not being part of a login session and not being a shared process
- of a user, this function will fail with -ENODATA.
-
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
free3
- call after use. For processes not part of a VM or containers, this
+ 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
@@ -246,10 +248,10 @@
functions is passed as 0, the operation is executed for the
calling process.
- The sd_peer_get_session(),
- sd_peer_get_unit(),
+ The sd_peer_get_owner_uid(),
+ sd_peer_get_session(),
sd_peer_get_user_unit(),
- sd_peer_get_owner_uid(),
+ sd_peer_get_unit(),
sd_peer_get_machine_name(),
sd_peer_get_slice(),
sd_peer_get_user_slice() and