summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Zeuthen <davidz@redhat.com>2011-03-17 15:27:34 -0400
committerRay Strode <rstrode@redhat.com>2011-03-17 15:56:31 -0400
commit733291e426109d04fac0ae1cfc37a8585a3ccf76 (patch)
treebdc23f2889a1cc16aa6fdbe1d7370d604512c74b
parentb1df1b0074434cdc39ae3385aaffaf6c8d28b7b6 (diff)
daemon: drop desktop_<role>_r group checks
desktop_user_r isn't needed anymore now that supervisor types are gone. desktop_admin_r isn't widely used and reinvents the wheel. Drop both and instead rely on more traditional group names for designating adminstrative users. https://bugs.freedesktop.org/show_bug.cgi?id=35390 Punned-off-By: Ray Strode <rstrode@redhat.com>
-rw-r--r--src/daemon.c4
-rw-r--r--src/user.c43
2 files changed, 12 insertions, 35 deletions
diff --git a/src/daemon.c b/src/daemon.c
index 8d0a494..32e9c97 100644
--- a/src/daemon.c
+++ b/src/daemon.c
@@ -1106,13 +1106,11 @@ daemon_create_user_authorized_cb (Daemon *daemon,
argv[3] = cd->real_name;
if (cd->account_type == ACCOUNT_TYPE_ADMINISTRATOR) {
argv[4] = "-G";
- argv[5] = "desktop_admin_r";
+ argv[5] = "wheel";
argv[6] = cd->user_name;
argv[7] = NULL;
}
else if (cd->account_type == ACCOUNT_TYPE_STANDARD) {
- argv[4] = "-G";
- argv[5] = "desktop_user_r";
argv[6] = cd->user_name;
argv[7] = NULL;
}
diff --git a/src/user.c b/src/user.c
index d756123..dc9e227 100644
--- a/src/user.c
+++ b/src/user.c
@@ -412,32 +412,22 @@ static gint
account_type_from_groups (struct passwd *pwent)
{
struct group *grp;
- gid_t desktop_user_r;
- gid_t desktop_admin_r;
+ gid_t wheel;
gid_t *groups;
gint ngroups;
gint i;
- grp = getgrnam ("desktop_user_r");
+ grp = getgrnam ("wheel");
if (grp == NULL) {
- g_debug ("desktop_user_r group not found");
+ g_debug ("wheel group not found");
return ACCOUNT_TYPE_STANDARD;
}
- desktop_user_r = grp->gr_gid;
-
- grp = getgrnam ("desktop_admin_r");
- if (grp == NULL) {
- g_debug ("desktop_admin_r group not found");
- return ACCOUNT_TYPE_STANDARD;
- }
- desktop_admin_r = grp->gr_gid;
+ wheel = grp->gr_gid;
ngroups = get_user_groups (pwent->pw_name, pwent->pw_gid, &groups);
for (i = 0; i < ngroups; i++) {
- if (groups[i] == desktop_user_r)
- return ACCOUNT_TYPE_STANDARD;
- if (groups[i] == desktop_admin_r)
+ if (groups[i] == wheel)
return ACCOUNT_TYPE_ADMINISTRATOR;
}
@@ -1589,8 +1579,7 @@ user_change_account_type_authorized_cb (Daemon *daemon,
gid_t *groups;
gint ngroups;
GString *str;
- gid_t desktop_user_r;
- gid_t desktop_admin_r;
+ gid_t wheel;
struct group *grp;
gint i;
gchar *argv[5];
@@ -1600,34 +1589,24 @@ user_change_account_type_authorized_cb (Daemon *daemon,
"change account type of user '%s' (%d) to %d",
user->user_name, user->uid, account_type);
- grp = getgrnam ("desktop_user_r");
+ grp = getgrnam ("wheel");
if (grp == NULL) {
- throw_error (context, ERROR_FAILED, "failed to set account type: desktop_user_r group not found");
+ throw_error (context, ERROR_FAILED, "failed to set account type: wheel group not found");
return;
}
- desktop_user_r = grp->gr_gid;
-
- grp = getgrnam ("desktop_admin_r");
- if (grp == NULL) {
- throw_error (context, ERROR_FAILED, "failed to set account type: desktop_admin_r group not found");
- return;
- }
- desktop_admin_r = grp->gr_gid;
+ wheel = grp->gr_gid;
ngroups = get_user_groups (user->user_name, user->gid, &groups);
str = g_string_new ("");
for (i = 0; i < ngroups; i++) {
- if (groups[i] == desktop_user_r || groups[i] == desktop_admin_r)
+ if (groups[i] == wheel)
continue;
g_string_append_printf (str, "%d,", groups[i]);
}
switch (account_type) {
- case ACCOUNT_TYPE_STANDARD:
- g_string_append_printf (str, "%d", desktop_user_r);
- break;
case ACCOUNT_TYPE_ADMINISTRATOR:
- g_string_append_printf (str, "%d", desktop_admin_r);
+ g_string_append_printf (str, "%d", wheel);
break;
default:
/* remove excess comma */