summaryrefslogtreecommitdiffstats
path: root/src/basic/user-util.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/basic/user-util.h')
-rw-r--r--src/basic/user-util.h22
1 files changed, 15 insertions, 7 deletions
diff --git a/src/basic/user-util.h b/src/basic/user-util.h
index 777451b8c8..6f221ebfb0 100644
--- a/src/basic/user-util.h
+++ b/src/basic/user-util.h
@@ -12,6 +12,8 @@
#include <sys/types.h>
#include <unistd.h>
+#include "string-util.h"
+
/* Users managed by systemd-homed. See https://systemd.io/UIDS-GIDS for details how this range fits into the rest of the world */
#define HOME_UID_MIN ((uid_t) 60001)
#define HOME_UID_MAX ((uid_t) 60513)
@@ -36,10 +38,20 @@ static inline int parse_gid(const char *s, gid_t *ret_gid) {
char* getlogname_malloc(void);
char* getusername_malloc(void);
+const char* default_root_shell_at(int rfd);
+const char* default_root_shell(const char *root);
+
+bool is_nologin_shell(const char *shell);
+
+static inline bool shell_is_placeholder(const char *shell) {
+ return isempty(shell) || is_nologin_shell(shell);
+}
+
typedef enum UserCredsFlags {
- USER_CREDS_PREFER_NSS = 1 << 0, /* if set, only synthesize user records if database lacks them. Normally we bypass the userdb entirely for the records we can synthesize */
- USER_CREDS_ALLOW_MISSING = 1 << 1, /* if a numeric UID string is resolved, be OK if there's no record for it */
- USER_CREDS_CLEAN = 1 << 2, /* try to clean up shell and home fields with invalid data */
+ USER_CREDS_PREFER_NSS = 1 << 0, /* if set, only synthesize user records if database lacks them. Normally we bypass the userdb entirely for the records we can synthesize */
+ USER_CREDS_ALLOW_MISSING = 1 << 1, /* if a numeric UID string is resolved, be OK if there's no record for it */
+ USER_CREDS_CLEAN = 1 << 2, /* try to clean up shell and home fields with invalid data */
+ USER_CREDS_SUPPRESS_PLACEHOLDER = 1 << 3, /* suppress home and/or shell fields if value is placeholder (root/empty/nologin) */
} UserCredsFlags;
int get_user_creds(const char **username, uid_t *ret_uid, gid_t *ret_gid, const char **ret_home, const char **ret_shell, UserCredsFlags flags);
@@ -125,10 +137,6 @@ int fgetsgent_sane(FILE *stream, struct sgrp **sg);
int putsgent_sane(const struct sgrp *sg, FILE *stream);
#endif
-bool is_nologin_shell(const char *shell);
-const char* default_root_shell_at(int rfd);
-const char* default_root_shell(const char *root);
-
int is_this_me(const char *username);
const char* get_home_root(void);