]> granicus.if.org Git - sudo/commitdiff
Bring back PERM_FULL_USER
authorTodd C. Miller <Todd.Miller@courtesan.com>
Wed, 16 Jan 2002 21:27:09 +0000 (21:27 +0000)
committerTodd C. Miller <Todd.Miller@courtesan.com>
Wed, 16 Jan 2002 21:27:09 +0000 (21:27 +0000)
set_perms.c
sudo.h

index 8520abc9e7ade05d163785da024ecd09a57c9791..65475828d44724038c8d9ff042a7aeb8470f95f9 100644 (file)
@@ -106,6 +106,13 @@ set_perms_posix(perm, sudo_mode)
                                if (seteuid(user_uid))
                                    fatal("seteuid(user_uid)");
                                break;
+
+       case PERM_FULL_USER:
+                               /* headed for exec() */
+                               (void) setgid(user_gid);
+                               if (setuid(user_uid))
+                                   fatal("setuid(user_uid)");
+                               break;
                                
        case PERM_RUNAS:
                                /* headed for exec(), assume euid == 0 */
@@ -168,6 +175,13 @@ set_perms_fallback(perm, sudo_mode)
                                    fatal("setreuid(0, user_uid)");
                                break;
                                
+       case PERM_FULL_USER:
+                               /* headed for exec() */
+                               (void) setgid(user_gid);
+                               if (setuid(user_uid))
+                                   fatal("setuid(user_uid)");
+                               break;
+                               
        case PERM_RUNAS:
                                /* headed for exec(), assume euid == 0 */
                                runas_setup();
@@ -228,6 +242,13 @@ set_perms_fallback(perm, sudo_mode)
                                    fatal("seteuid(user_uid)");
                                break;
                                
+       case PERM_FULL_USER:
+                               /* headed for exec() */
+                               (void) setgid(user_gid);
+                               if (setuid(user_uid))
+                                   fatal("setuid(user_uid)");
+                               break;
+                               
        case PERM_RUNAS:
                                /* headed for exec(), assume euid == 0 */
                                runas_setup();
diff --git a/sudo.h b/sudo.h
index 2d45dbc48ddc7cdfce432c92b9b4b6ea37080b42..dc0db0ceb1ef89b9cbd26520cb6170a224c9bbe9 100644 (file)
--- a/sudo.h
+++ b/sudo.h
@@ -113,8 +113,9 @@ struct sudo_user {
 #define PERM_ROOT                0x00
 #define PERM_FULL_ROOT           0x01
 #define PERM_USER                0x02
-#define PERM_SUDOERS             0x03
-#define PERM_RUNAS              0x04
+#define PERM_FULL_USER           0x03
+#define PERM_SUDOERS             0x04
+#define PERM_RUNAS               0x05
 
 /*
  * Shortcuts for sudo_user contents.