summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRay Strode <rstrode@redhat.com>2011-03-17 15:59:47 -0400
committerRay Strode <rstrode@redhat.com>2011-03-17 15:59:47 -0400
commit971f0805a4d436c6bea70c604e7d74112567302a (patch)
tree88c002ba794f206e6b34a8f498894393029dc817
parent733291e426109d04fac0ae1cfc37a8585a3ccf76 (diff)
daemon: treat root user as admin
Previously, we were only looking at users in the wheel group, but the root user is an admin, too.
-rw-r--r--src/user.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/user.c b/src/user.c
index dc9e227..738b0d3 100644
--- a/src/user.c
+++ b/src/user.c
@@ -409,7 +409,7 @@ user_finalize (GObject *object)
}
static gint
-account_type_from_groups (struct passwd *pwent)
+account_type_from_pwent (struct passwd *pwent)
{
struct group *grp;
gid_t wheel;
@@ -417,6 +417,11 @@ account_type_from_groups (struct passwd *pwent)
gint ngroups;
gint i;
+ if (pwent->pw_uid == 0) {
+ g_debug ("user is root so account type is administrator");
+ return ACCOUNT_TYPE_ADMINISTRATOR;
+ }
+
grp = getgrnam ("wheel");
if (grp == NULL) {
g_debug ("wheel group not found");
@@ -504,7 +509,7 @@ user_local_update_from_pwent (User *user,
/* GID */
user->gid = pwent->pw_gid;
- user->account_type = account_type_from_groups (pwent);
+ user->account_type = account_type_from_pwent (pwent);
/* Username */
if (g_strcmp0 (user->user_name, pwent->pw_name) != 0) {