summaryrefslogtreecommitdiff
path: root/src/shared/userdb.h
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2019-08-07 15:26:32 +0200
committerLennart Poettering <lennart@poettering.net>2020-01-15 15:27:41 +0100
commitec8e4a0ef12ff2fd393e58c335602d605d94f846 (patch)
treee7b1dc2dcfab245a4375dc2542e7c98d15084b32 /src/shared/userdb.h
parent9b2d907877ab10202fdfb7db7a5ce6e8b32c70b8 (diff)
downloadsystemd-ec8e4a0ef12ff2fd393e58c335602d605d94f846.tar.gz
shared: add internal API for querying JSON user records via varlink
This new API can be used in place of NSS by our own internal code if more than the classic UNIX records are needed.
Diffstat (limited to 'src/shared/userdb.h')
-rw-r--r--src/shared/userdb.h41
1 files changed, 41 insertions, 0 deletions
diff --git a/src/shared/userdb.h b/src/shared/userdb.h
new file mode 100644
index 0000000000..4288b0ff95
--- /dev/null
+++ b/src/shared/userdb.h
@@ -0,0 +1,41 @@
+/* SPDX-License-Identifier: LGPL-2.1+ */
+#pragma once
+
+#include <sys/socket.h>
+#include <sys/un.h>
+
+#include "group-record.h"
+#include "user-record.h"
+
+/* Inquire local services for user/group records */
+
+typedef struct UserDBIterator UserDBIterator;
+
+UserDBIterator *userdb_iterator_free(UserDBIterator *iterator);
+DEFINE_TRIVIAL_CLEANUP_FUNC(UserDBIterator*, userdb_iterator_free);
+
+typedef enum UserDBFlags {
+ USERDB_AVOID_NSS = 1 << 0, /* don't do client-side nor server-side NSS */
+ USERDB_AVOID_DYNAMIC_USER = 1 << 1, /* exclude looking up in io.systemd.DynamicUser */
+ USERDB_AVOID_MULTIPLEXER = 1 << 2, /* exclude looking up via io.systemd.Multiplexer */
+ USERDB_DONT_SYNTHESIZE = 1 << 3, /* don't synthesize root/nobody */
+} UserDBFlags;
+
+int userdb_by_name(const char *name, UserDBFlags flags, UserRecord **ret);
+int userdb_by_uid(uid_t uid, UserDBFlags flags, UserRecord **ret);
+int userdb_all(UserDBFlags flags, UserDBIterator **ret);
+int userdb_iterator_get(UserDBIterator *iterator, UserRecord **ret);
+
+int groupdb_by_name(const char *name, UserDBFlags flags, GroupRecord **ret);
+int groupdb_by_gid(gid_t gid, UserDBFlags flags, GroupRecord **ret);
+int groupdb_all(UserDBFlags flags, UserDBIterator **ret);
+int groupdb_iterator_get(UserDBIterator *iterator, GroupRecord **ret);
+
+int membershipdb_by_user(const char *name, UserDBFlags flags, UserDBIterator **ret);
+int membershipdb_by_group(const char *name, UserDBFlags flags, UserDBIterator **ret);
+int membershipdb_all(UserDBFlags flags, UserDBIterator **ret);
+int membershipdb_iterator_get(UserDBIterator *iterator, char **user, char **group);
+int membershipdb_by_group_strv(const char *name, UserDBFlags flags, char ***ret);
+
+int userdb_nss_compat_is_enabled(void);
+int userdb_nss_compat_disable(void);