]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
* grub-core/commands/legacycfg.c (legacy_file): Default to restricted
authorVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Wed, 2 May 2012 08:26:09 +0000 (10:26 +0200)
committerVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Wed, 2 May 2012 08:26:09 +0000 (10:26 +0200)
entries.
* grub-core/commands/menuentry.c (grub_cmd_menuentry): Likewise.
* docs/grub.texi: Update menuentry description.

ChangeLog
docs/grub.texi
grub-core/commands/legacycfg.c
grub-core/commands/menuentry.c

index dc8698ba44a24a402cd8d8886c7d7b0f2a755e0e..1f6ab70c8158b65b87afdf6e1bc55a8c31650bdb 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2012-05-02  Vladimir Serbinenko  <phcoder@gmail.com>
+
+       * grub-core/commands/legacycfg.c (legacy_file): Default to restricted
+       entries.
+       * grub-core/commands/menuentry.c (grub_cmd_menuentry): Likewise.
+       * docs/grub.texi: Update menuentry description.
+
 2012-05-02  Vladimir Serbinenko  <phcoder@gmail.com>
 
        * util/grub-setup.c (setup): Remove duplicate call to embed. Fixes
index 55ae7e816cd31112d3da4888c36086274c2f3d14..b9ad270500ea8d94f1b48cfb30196aa6f4704625 100644 (file)
@@ -1437,7 +1437,7 @@ definitions do not affect the exit status in @code{$?}.  When executed, the
 exit status of a function is the exit status of the last command executed in
 the body.
 
-@item menuentry @var{title} [@option{--class=class} @dots{}] [@option{--users=users}] [@option{--hotkey=key}] @{ @var{command}; @dots{} @}
+@item menuentry @var{title} [@option{--class=class} @dots{}] [@option{--users=users}] [@option{--unrestricted}] [@option{--hotkey=key}] @{ @var{command}; @dots{} @}
 @xref{menuentry}.
 @end table
 
@@ -2960,7 +2960,7 @@ These commands can only be used in the menu:
 
 @deffn Command menuentry @var{title} @
  [@option{--class=class} @dots{}] [@option{--users=users}] @
- [@option{--hotkey=key}] @
+ [@option{--unrestricted}] [@option{--hotkey=key}] @
  @{ @var{command}; @dots{} @}
 This defines a GRUB menu entry named @var{title}.  When this entry is
 selected from the menu, GRUB will set the @var{chosen} environment variable
@@ -2975,6 +2975,9 @@ different styles.
 The @option{--users} option grants specific users access to specific menu
 entries.  @xref{Security}.
 
+The @option{--unrestricted} option grants all users access to specific menu
+entries.  @xref{Security}.
+
 The @option{--hotkey} option associates a hotkey with a menu entry.
 @var{key} may be a single letter, or one of the aliases @samp{backspace},
 @samp{tab}, or @samp{delete}.
@@ -2986,7 +2989,7 @@ The @option{--hotkey} option associates a hotkey with a menu entry.
 
 @deffn Command submenu @var{title} @
  [@option{--class=class} @dots{}] [@option{--users=users}] @
- [@option{--hotkey=key}] @
+ [@option{--unrestricted}] [@option{--hotkey=key}] @
  @{ @var{menu entries} @dots{} @}
 This defines a submenu.  An entry called @var{title} will be added to the
 menu; when that entry is selected, a new menu will be displayed showing all
@@ -4061,8 +4064,10 @@ restricted to superusers.
 
 Other users may be given access to specific menu entries by giving a list of
 usernames (as above) using the @option{--users} option to the
-@samp{menuentry} command (@pxref{menuentry}).  If the @option{--users}
-option is not used for a menu entry, then that entry is unrestricted.
+@samp{menuentry} command (@pxref{menuentry}).  If the @option{--unrestricted}
+option is used for a menu entry, then that entry is unrestricted.
+If the @option{--users} option is not used for a menu entry, then that
+only superusers are able to use it.
 
 Putting this together, a typical @file{grub.cfg} fragment might look like
 this:
@@ -4073,7 +4078,7 @@ set superusers="root"
 password_pbkdf2 root grub.pbkdf2.sha512.10000.biglongstring
 password user1 insecure
 
-menuentry "May be run by any user" @{
+menuentry "May be run by any user" --unrestricted @{
        set root=(hd0,1)
        linux /vmlinuz
 @}
index 3becaa6dbcd493f33d497911694946d47df2857f..5293accab9ed148c65cf9ae6c8b197b628bc8e6f 100644 (file)
@@ -123,7 +123,8 @@ legacy_file (const char *filename)
                return grub_errno;
              }
            args[0] = oldname;
-           grub_normal_add_menu_entry (1, args, NULL, NULL, NULL, NULL, NULL,
+           grub_normal_add_menu_entry (1, args, NULL, NULL, "legacy",
+                                       NULL, NULL,
                                        entrysrc, 0);
            grub_free (args);
            entrysrc[0] = 0;
index 403c751ea6a3e000cf3a9b43c2c3c2dfc7299d0e..a1a7e52eedd6c8b6bcce9fd8ac2a00aa142ff643 100644 (file)
@@ -37,6 +37,8 @@ static const struct grub_arg_option options[] =
     {"source", 4, 0,
      N_("Use STRING as menu entry body."), N_("STRING"), ARG_TYPE_STRING},
     {"id", 0, 0, N_("Menu entry identifier."), N_("STRING"), ARG_TYPE_STRING},
+    {"unrestricted", 0, 0, N_("This entry can be booted by any user."),
+     0, ARG_TYPE_NONE},
     {0, 0, 0, 0, 0, 0}
   };
 
@@ -254,6 +256,7 @@ grub_cmd_menuentry (grub_extcmd_context_t ctxt, int argc, char **args)
   char *prefix;
   unsigned len;
   grub_err_t r;
+  const char *users;
 
   if (! argc)
     return grub_error (GRUB_ERR_BAD_ARGUMENT, "missing arguments");
@@ -264,12 +267,19 @@ grub_cmd_menuentry (grub_extcmd_context_t ctxt, int argc, char **args)
   if (! ctxt->state[3].set && ! ctxt->script)
     return grub_error (GRUB_ERR_BAD_ARGUMENT, "no menuentry definition");
 
+  if (ctxt->state[1].set)
+    users = ctxt->state[1].arg;
+  else if (ctxt->state[5].set)
+    users = NULL;
+  else
+    users = "";
+
   if (! ctxt->script)
     return grub_normal_add_menu_entry (argc, (const char **) args,
                                       (ctxt->state[0].set ? ctxt->state[0].args
                                        : NULL),
                                       ctxt->state[4].arg,
-                                      ctxt->state[1].arg,
+                                      users,
                                       ctxt->state[2].arg, 0,
                                       ctxt->state[3].arg,
                                       ctxt->extcmd->cmd->name[0] == 's');
@@ -287,7 +297,7 @@ grub_cmd_menuentry (grub_extcmd_context_t ctxt, int argc, char **args)
 
   r = grub_normal_add_menu_entry (argc - 1, (const char **) args,
                                  ctxt->state[0].args, ctxt->state[4].arg,
-                                 ctxt->state[1].arg,
+                                 users,
                                  ctxt->state[2].arg, prefix, src + 1,
                                  ctxt->extcmd->cmd->name[0] == 's');