diff options
| author | Doug Rabson <dfr@FreeBSD.org> | 2022-11-17 10:48:20 +0000 |
|---|---|---|
| committer | Doug Rabson <dfr@FreeBSD.org> | 2022-12-08 14:32:03 +0000 |
| commit | 5eeb4f737f11b253ac330ae459b05e30fd16d0e8 (patch) | |
| tree | f0e684e99a1138809498d60ce0f6766c84b15eab /usr.sbin/binmiscctl | |
| parent | cef3c4e0bab8bd5e84ab8cfa2fa48a1e3dca5876 (diff) | |
Diffstat (limited to 'usr.sbin/binmiscctl')
| -rw-r--r-- | usr.sbin/binmiscctl/binmiscctl.8 | 8 | ||||
| -rw-r--r-- | usr.sbin/binmiscctl/binmiscctl.c | 15 |
2 files changed, 19 insertions, 4 deletions
diff --git a/usr.sbin/binmiscctl/binmiscctl.8 b/usr.sbin/binmiscctl/binmiscctl.8 index 82624cccd9ed..198997d22058 100644 --- a/usr.sbin/binmiscctl/binmiscctl.8 +++ b/usr.sbin/binmiscctl/binmiscctl.8 @@ -46,6 +46,7 @@ .Op Fl -mask Ar mask .Op Fl -offset Ar offset .Op Fl -set-enabled +.Op Fl -pre-open .Nm .Cm disable .Ar name @@ -87,6 +88,7 @@ Operation must be one of the following: .Op Fl -mask Ar mask .Op Fl -offset Ar offset .Op Fl -set-enabled +.Op Fl -pre-open .Xc Add a new activator entry in the kernel. You must specify a @@ -124,6 +126,12 @@ To enable the activator entry the option is used. The activator default state is disabled. .Pp +To make the interpreter automatically available in jails and chroots, +use the +.Fl -pre-open +option to allow the kernel to open the binary at configuration time +rather then lazily when the the interpreted program is started. +.Pp The interpreter .Ar path may also contain arguments for the interpreter including diff --git a/usr.sbin/binmiscctl/binmiscctl.c b/usr.sbin/binmiscctl/binmiscctl.c index 3c5e19def67b..2ec2cc3f64d4 100644 --- a/usr.sbin/binmiscctl/binmiscctl.c +++ b/usr.sbin/binmiscctl/binmiscctl.c @@ -75,7 +75,8 @@ static const struct { "<name> --interpreter <path_and_arguments> \\\n" "\t\t--magic <magic_bytes> [--mask <mask_bytes>] \\\n" "\t\t--size <magic_size> [--offset <magic_offset>] \\\n" - "\t\t[--set-enabled]" + "\t\t[--set-enabled] \\\n" + "\t\t[--pre-open]" }, { CMD_REMOVE, @@ -122,6 +123,7 @@ add_opts[] = { { "magic", required_argument, NULL, 'm' }, { "offset", required_argument, NULL, 'o' }, { "size", required_argument, NULL, 's' }, + { "pre-open", no_argument, NULL, 'p' }, { NULL, 0, NULL, 0 } }; @@ -192,8 +194,9 @@ printxbe(ximgact_binmisc_entry_t *xbe) printf("name: %s\n", xbe->xbe_name); printf("interpreter: %s\n", xbe->xbe_interpreter); - printf("flags: %s%s\n", (flags & IBF_ENABLED) ? "ENABLED " : "", - (flags & IBF_USE_MASK) ? "USE_MASK " : ""); + printf("flags: %s%s%s\n", (flags & IBF_ENABLED) ? "ENABLED " : "", + (flags & IBF_USE_MASK) ? "USE_MASK " : "", + (flags & IBF_PRE_OPEN) ? "PRE_OPEN " : ""); printf("magic size: %u\n", xbe->xbe_msize); printf("magic offset: %u\n", xbe->xbe_moffset); @@ -291,7 +294,7 @@ add_cmd(__unused int argc, char *argv[], ximgact_binmisc_entry_t *xbe) IBE_NAME_MAX); strlcpy(&xbe->xbe_name[0], argv[0], IBE_NAME_MAX); - while ((ch = getopt_long(argc, argv, "ei:m:M:o:s:", add_opts, NULL)) + while ((ch = getopt_long(argc, argv, "epi:m:M:o:s:", add_opts, NULL)) != -1) { switch(ch) { @@ -328,6 +331,10 @@ add_cmd(__unused int argc, char *argv[], ximgact_binmisc_entry_t *xbe) xbe->xbe_msize); break; + case 'p': + xbe->xbe_flags |= IBF_PRE_OPEN; + break; + default: usage("Unknown argument: '%c'", ch); } |
