From e735ad6710a82604a206ad29f6cbcdd7dc4b024c Mon Sep 17 00:00:00 2001 From: Tyler Murphy Date: Sun, 14 May 2023 21:43:02 -0400 Subject: refactor and add su --- lib/identity.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 lib/identity.c (limited to 'lib/identity.c') diff --git a/lib/identity.c b/lib/identity.c new file mode 100644 index 0000000..58dcf52 --- /dev/null +++ b/lib/identity.c @@ -0,0 +1,24 @@ +#include "lslib.h" + +#include +#include +#include +#include + +void change_identity(const struct passwd* pw) { + int res; + + res = initgroups(pw->pw_name, pw->pw_gid); + endgrent(); + + if (res != 0) { + if (errno == ENOSYS && pw->pw_uid == getuid()) { + return; + } + + error("can't set groups"); + } + + xsetgid(pw->pw_gid); + xsetuid(pw->pw_uid); +} -- cgit v1.2.3-freya