<div dir="auto"><div dir="auto">The sessions listed in loginctl are created and their IDs assigned by systemd-logind (when asked by pam_systemd).</div><div dir="auto"><br></div><div dir="auto">If /proc/*/loginuid and /proc/*/sessionid are available (set up by pam_loginuid), then logind directly takes the audit session ID as logind session ID.</div><div dir="auto"><br></div><div dir="auto">If those are not available (kernel audit support disabled), then logind itself allocates a logind session ID and adds the "c" prefix to prevent collisions with audit IDs.<br></div><div dir="auto"><br></div><div dir="auto">src/login/logind-dbus.c:870:                        if (asprintf(&id, "c%lu", ++m->session_counter) < 0)<br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, Jan 11, 2023, 05:58 hai wu <<a href="mailto:haiwu.us@gmail.com" rel="noreferrer noreferrer noreferrer" target="_blank">haiwu.us@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Where is the systemd sessionid like `c508` being generated? If kernel<br>
auditd is disabled, then it seems systemd `loginctl list-sessions`<br>
command would list user session ids all with `c` character prefix<br>
instead.<br>
<br>
I could not find the source code where these session ids got<br>
generated. Are these session ids generated from systemd source code or<br>
from Linux kernel source code?<br>
<br>
systemd has this function `sd_pid_get_session` to get session id, it<br>
seems that's parsing `/proc/self/cgroup`, instead of generating such<br>
session ids..<br>
<br>
Regards,<br>
Hai<br>
</blockquote></div>