22#define G_LOG_DOMAIN "libgvm base"
67 struct passwd *user_pw;
69 user_pw = getpwnam (username);
72 if (initgroups (username, user_pw->pw_gid) != 0)
75 "Failed to drop supplementary groups privileges!\n");
76 if (setgid (user_pw->pw_gid) != 0)
79 "Failed to drop group privileges!\n");
80 if (setuid (user_pw->pw_uid) != 0)
83 "Failed to drop user privileges!\n");
89 "Failed to get gid and uid for user %s.", username);
97 "Only root can drop its privileges.");
static gint drop_privileges_error(GError **error, gint errorcode, const gchar *message)
Sets an error and return errorcode.
int drop_privileges(gchar *username, GError **error)
Drop privileges.
Privilege dropping header file.
#define GVM_DROP_PRIVILEGES_FAIL_DROP_GID
Definition of the return code FAIL_DROP_GID.
#define GVM_DROP_PRIVILEGES_FAIL_UNKNOWN_USER
Definition of the return code FAIL_UNKNOWN_USER.
#define GVM_DROP_PRIVILEGES_ERROR_ALREADY_SET
Definition of the return code ERROR_ALREADY_SET.
#define GVM_DROP_PRIVILEGES_FAIL_DROP_UID
Definition of the return code FAIL_DROP_UID.
#define GVM_DROP_PRIVILEGES_FAIL_SUPPLEMENTARY
Definition of the return code FAIL_SUPPLEMENTARY.
#define GVM_DROP_PRIVILEGES_OK
Definition of the return code OK.
#define GVM_DROP_PRIVILEGES
The GQuark for privilege dropping errors.
#define GVM_DROP_PRIVILEGES_FAIL_NOT_ROOT
Definition of the return code FAIL_NOT_ROOT.