]> Zhao Yanbai Git Server - minix.git/commitdiff
service: allow starting service with user's realuid
authorThomas Veerman <thomas@minix3.org>
Wed, 1 Feb 2012 13:21:56 +0000 (13:21 +0000)
committerThomas Veerman <thomas@minix3.org>
Wed, 1 Feb 2012 13:21:56 +0000 (13:21 +0000)
commands/service/parse.c
commands/service/parse.h
man/man5/system.conf.5

index 1c5a1ba07e84622a297c0af817835a937af8573d..82488e7238350ddc4c9506ce70d7e7f9a783979a 100644 (file)
@@ -138,11 +138,17 @@ PRIVATE void do_uid(config_t *cpe, struct rs_start *rs_start)
                uid= pw->pw_uid;
        else
        {
-               uid= strtol(cpe->word, &check, 0);
-               if (check[0] != '\0')
+               if (!strncmp(cpe->word, KW_SELF, strlen(KW_SELF)+1))
                {
-                       fatal("do_uid: bad uid/login '%s' at %s:%d",
-                               cpe->word, cpe->file, cpe->line);
+                       uid= getuid();  /* Real uid */
+               }
+               else {
+                       uid= strtol(cpe->word, &check, 0);
+                       if (check[0] != '\0')
+                       {
+                               fatal("do_uid: bad uid/login '%s' at %s:%d",
+                                       cpe->word, cpe->file, cpe->line);
+                       }
                }
        }
 
index 08487b628f34cdb2750b033c4c46a3fa904e2ba1..02fc0350f15ebd058f8039ebc48bff602d7bf0e7 100644 (file)
@@ -1,5 +1,6 @@
 #define KW_SERVICE     "service"
 #define KW_UID         "uid"
+#define KW_SELF                "SELF"
 #define KW_SIGMGR      "sigmgr"
 #define KW_SCHEDULER   "scheduler"
 #define KW_PRIORITY    "priority"
index ddf6aeeaed941e797bd7b69a49a4f85f6d4c4d70..111b21ea883b650d6c642cd1939f64b3f2052b9b 100644 (file)
@@ -42,10 +42,12 @@ where \fI<program_name>\fR is the name of the program used to start the
 given system service. In each service entry, the following options can
 be used:
 .PP
-\fBuid\fR \fI<uid|user name>\fR\fB;\fR
+\fBuid\fR \fI<uid|SELF|user name>\fR\fB;\fR
 .PP
 .RS
 specifies the user id or the user name to use to run the system service.
+\fISELF\fR can be used when the service has to start with the realuid of
+the user who's executing the \fBservice\fR utility.
 Many system services run with root privileges (uid \fB0\fR).
 The default user is service (uid \fB12\fR).
 .RE