diff -Nur gksu-1.3.7/gksu/gksuexec.c gksu-1.3.7.new/gksu/gksuexec.c --- gksu-1.3.7/gksu/gksuexec.c 2005-10-19 19:00:48.000000000 +0200 +++ gksu-1.3.7.new/gksu/gksuexec.c 2006-04-30 11:44:36.000000000 +0200 @@ -19,6 +19,7 @@ #include #include +#define __USE_GNU #include #include #include @@ -26,6 +27,7 @@ #include #include #include +#include #include @@ -35,6 +37,7 @@ #include "util.h" #define GKSU_CMD (PREFIX "/bin/gksu") +#define GKSUDO_CMD (PREFIX "/bin/gksudo") void run_gksu (GksuContext conf) @@ -42,7 +45,21 @@ gchar **cmd = g_malloc (sizeof(gchar*)*7); gint i = 0; - cmd[i] = g_strdup (GKSU_CMD); i++; + // the user root is special on ubuntu + if(strcmp (conf.user, "root") == 0) + { + cmd[i] = g_strdup (GKSUDO_CMD); i++; + } + else + { + // if the user is in the admin group we use sudo + struct group *grp = getgrnam("admin"); + if(group_member(grp->gr_gid)) { + cmd[i] = g_strdup (GKSUDO_CMD); i++; + } else { + cmd[i] = g_strdup (GKSU_CMD); i++; + } + } cmd[i] = g_strdup ("--user"); i++; cmd[i] = g_strdup (conf.user); i++;