qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Paolo Bonzini <pbonzini@redhat.com>
To: qemu-devel@nongnu.org
Cc: Michael Tokarev <mjt@tls.msk.ru>, Eric Blake <eblake@redhat.com>,
	Richard Henderson <richard.henderson@linaro.org>
Subject: [PULL 07/51] os-posix.c: create and export os_set_runas()
Date: Thu,  7 Sep 2023 14:59:16 +0200	[thread overview]
Message-ID: <20230907130004.500601-8-pbonzini@redhat.com> (raw)
In-Reply-To: <20230907130004.500601-1-pbonzini@redhat.com>

From: Michael Tokarev <mjt@tls.msk.ru>

Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
Reviewed-by: Eric Blake <eblake@redhat.com>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-ID: <20230901101302.3618955-3-mjt@tls.msk.ru>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
 include/sysemu/os-posix.h |  1 +
 os-posix.c                | 23 ++++++++++++++++-------
 2 files changed, 17 insertions(+), 7 deletions(-)

diff --git a/include/sysemu/os-posix.h b/include/sysemu/os-posix.h
index 65b9c94e919..d32630f9e76 100644
--- a/include/sysemu/os-posix.h
+++ b/include/sysemu/os-posix.h
@@ -50,6 +50,7 @@ void os_setup_signal_handling(void);
 int os_set_daemonize(bool d);
 bool is_daemonized(void);
 void os_daemonize(void);
+bool os_set_runas(const char *optarg);
 void os_setup_post(void);
 int os_mlock(void);
 
diff --git a/os-posix.c b/os-posix.c
index cfcb96533c1..f0ee5c8b002 100644
--- a/os-posix.c
+++ b/os-posix.c
@@ -102,8 +102,14 @@ void os_set_proc_name(const char *s)
 #endif
 }
 
-
-static bool os_parse_runas_uid_gid(const char *optarg)
+/*
+ * Prepare to change user ID. optarg can be one of 3 forms:
+ *   - a username, in which case user ID will be changed to its uid,
+ *     with primary and supplementary groups set up too;
+ *   - a numeric uid, in which case only the uid will be set;
+ *   - a pair of numeric uid:gid.
+ */
+bool os_set_runas(const char *optarg)
 {
     unsigned long lv;
     const char *ep;
@@ -111,6 +117,13 @@ static bool os_parse_runas_uid_gid(const char *optarg)
     gid_t got_gid;
     int rc;
 
+    user_pwd = getpwnam(optarg);
+    if (user_pwd) {
+        user_uid = -1;
+        user_gid = -1;
+        return true;
+    }
+
     rc = qemu_strtoul(optarg, &ep, 0, &lv);
     got_uid = lv; /* overflow here is ID in C99 */
     if (rc || *ep != ':' || got_uid != lv || got_uid == (uid_t)-1) {
@@ -137,11 +150,7 @@ int os_parse_cmd_args(int index, const char *optarg)
 {
     switch (index) {
     case QEMU_OPTION_runas:
-        user_pwd = getpwnam(optarg);
-        if (user_pwd) {
-            user_uid = -1;
-            user_gid = -1;
-        } else if (!os_parse_runas_uid_gid(optarg)) {
+        if (!os_set_runas(optarg)) {
             error_report("User \"%s\" doesn't exist"
                          " (and is not <uid>:<gid>)",
                          optarg);
-- 
2.41.0



  parent reply	other threads:[~2023-09-07 13:06 UTC|newest]

Thread overview: 81+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-09-07 12:59 [PULL 00/51] Build system, i386 changes for 2023-09-07 Paolo Bonzini
2023-09-07 12:59 ` [PULL 01/51] linux-user, bsd-user: disable on unsupported host architectures Paolo Bonzini
2023-09-07 12:59 ` [PULL 02/51] target/i386: raise FERR interrupt with iothread locked Paolo Bonzini
2023-09-07 12:59 ` [PULL 03/51] target/i386: generalize operand size "ph" for use in CVTPS2PD Paolo Bonzini
2023-09-07 12:59 ` [PULL 04/51] target/i386: fix memory operand size for CVTPS2PD Paolo Bonzini
2023-09-07 12:59 ` [PULL 05/51] target/i386: Add support for AMX-COMPLEX in CPUID enumeration Paolo Bonzini
2023-09-07 12:59 ` [PULL 06/51] include/sysemu/os-posix.h: move *daemonize* declarations together Paolo Bonzini
2023-09-07 12:59 ` Paolo Bonzini [this message]
2023-09-07 12:59 ` [PULL 08/51] os-posix.c: create and export os_set_chroot() Paolo Bonzini
2023-09-07 12:59 ` [PULL 09/51] os-posix.c, softmmu/vl.c: move os_parse_cmd_args() into qemu_init() Paolo Bonzini
2023-09-07 12:59 ` [PULL 10/51] os-posix.c: move code around Paolo Bonzini
2023-09-07 12:59 ` [PULL 11/51] os-posix.c: remove unneeded #includes Paolo Bonzini
2023-09-07 12:59 ` [PULL 12/51] softmmu/vl.c: inline include/qemu/qemu-options.h into vl.c Paolo Bonzini
2023-09-07 12:59 ` [PULL 13/51] util/async-teardown.c: move to softmmu/, only build it when system build is requested Paolo Bonzini
2023-09-07 12:59 ` [PULL 14/51] contrib/plugins: remove -soname argument Paolo Bonzini
2023-09-07 12:59 ` [PULL 15/51] contrib/plugins/cache: Fix string format Paolo Bonzini
2023-09-07 12:59 ` [PULL 16/51] contrib/plugins/drcov: " Paolo Bonzini
2023-09-07 12:59 ` [PULL 17/51] contrib/plugins/howvec: " Paolo Bonzini
2023-09-07 12:59 ` [PULL 18/51] contrib/plugins/lockstep: " Paolo Bonzini
2023-09-07 12:59 ` [PULL 19/51] contrib/plugins: add Darwin support Paolo Bonzini
2023-09-07 12:59 ` [PULL 20/51] meson: do not unnecessarily use cmake for dependencies Paolo Bonzini
2023-09-07 12:59 ` [PULL 21/51] meson: update unsupported host/CPU messages Paolo Bonzini
2023-09-07 12:59 ` [PULL 22/51] configure: remove HOST_CC Paolo Bonzini
2023-09-07 12:59 ` [PULL 23/51] configure: create native file with contents of $host_cc Paolo Bonzini
2023-09-07 12:59 ` [PULL 24/51] meson: compile bundled device trees Paolo Bonzini
2023-09-08 16:27   ` Philippe Mathieu-Daudé
2023-09-08 17:20     ` Michael Tokarev
2023-09-08 19:21       ` BALATON Zoltan
2023-09-08 19:40         ` Michael Tokarev
2023-09-08 20:07           ` BALATON Zoltan
2023-09-11 14:48             ` Philippe Mathieu-Daudé
2023-09-11 15:16             ` Peter Maydell
2023-09-07 12:59 ` [PULL 25/51] configure: remove boolean variables for targets Paolo Bonzini
2023-09-07 12:59 ` [PULL 26/51] configure: move --enable-debug-tcg to meson Paolo Bonzini
2023-09-07 12:59 ` [PULL 27/51] contrib/plugins: use an independent makefile Paolo Bonzini
2023-09-07 12:59 ` [PULL 28/51] configure: unify recursion into sub-Makefiles Paolo Bonzini
2023-09-07 12:59 ` [PULL 29/51] configure, meson: move --enable-plugins to meson Paolo Bonzini
2023-09-07 12:59 ` [PULL 30/51] configure, meson: remove CONFIG_SOLARIS from config-host.mak Paolo Bonzini
2023-09-07 12:59 ` [PULL 31/51] configure, meson: remove target OS symbols " Paolo Bonzini
2023-09-07 12:59 ` [PULL 32/51] meson: list leftover CONFIG_* symbols Paolo Bonzini
2023-09-07 12:59 ` [PULL 33/51] configure: remove dead code Paolo Bonzini
2023-09-07 12:59 ` [PULL 34/51] Python: Drop support for Python 3.7 Paolo Bonzini
2023-09-07 12:59 ` [PULL 35/51] mkvenv: assume presence of importlib.metadata Paolo Bonzini
2023-09-07 12:59 ` [PULL 36/51] Revert "mkvenv: work around broken pip installations on Debian 10" Paolo Bonzini
2023-09-07 12:59 ` [PULL 37/51] hw/i386/pc: Include missing 'sysemu/tcg.h' header Paolo Bonzini
2023-09-07 12:59 ` [PULL 38/51] hw/i386/pc: Include missing 'cpu.h' header Paolo Bonzini
2023-09-07 12:59 ` [PULL 39/51] hw/i386/fw_cfg: " Paolo Bonzini
2023-09-07 12:59 ` [PULL 40/51] target/i386/helper: Restrict KVM declarations to system emulation Paolo Bonzini
2023-09-07 12:59 ` [PULL 41/51] target/i386/cpu-sysemu: Inline kvm_apic_in_kernel() Paolo Bonzini
2023-09-07 12:59 ` [PULL 42/51] target/i386: Remove unused KVM stubs Paolo Bonzini
2023-09-07 12:59 ` [PULL 43/51] target/i386: Allow elision of kvm_enable_x2apic() Paolo Bonzini
2023-09-07 12:59 ` [PULL 44/51] target/i386: Allow elision of kvm_hv_vpindex_settable() Paolo Bonzini
2023-09-07 12:59 ` [PULL 45/51] target/i386: Restrict declarations specific to CONFIG_KVM Paolo Bonzini
2023-09-07 12:59 ` [PULL 46/51] sysemu/kvm: Restrict kvm_arch_get_supported_cpuid/msr() to x86 targets Paolo Bonzini
2023-09-07 12:59 ` [PULL 47/51] sysemu/kvm: Restrict kvm_get_apic_state() " Paolo Bonzini
2023-09-07 12:59 ` [PULL 48/51] sysemu/kvm: Restrict kvm_has_pit_state2() " Paolo Bonzini
2023-09-07 12:59 ` [PULL 49/51] sysemu/kvm: Restrict kvm_pc_setup_irq_routing() " Paolo Bonzini
2023-09-07 12:59 ` [PULL 50/51] subprojects: add wrap file for libblkio Paolo Bonzini
2023-10-11  5:35   ` Philippe Mathieu-Daudé
2023-10-11  8:47     ` Daniel P. Berrangé
2023-10-11 20:58       ` Stefan Hajnoczi
2023-10-12  7:14         ` Daniel P. Berrangé
2023-09-07 13:00 ` [PULL 51/51] docs/system/replay: do not show removed command line option Paolo Bonzini
2023-09-07 15:44 ` [PULL 00/51] Build system, i386 changes for 2023-09-07 Stefan Hajnoczi
2023-09-08 15:01   ` Kevin Wolf
2023-09-08 15:47     ` Stefan Hajnoczi
2023-09-11 10:10       ` Philippe Mathieu-Daudé
2023-09-11 10:22         ` Philippe Mathieu-Daudé
2023-09-11 12:12           ` Kevin Wolf
2023-09-11 11:06         ` Stefan Hajnoczi
2023-09-11 12:40           ` Thomas Huth
2023-09-08 16:11     ` Philippe Mathieu-Daudé
2023-09-08 17:16       ` Kevin Wolf
2023-09-08 17:22         ` Daniel P. Berrangé
2023-09-08 17:28         ` Michael Tokarev
2023-09-08 17:28         ` Kevin Wolf
2023-09-08 19:21           ` Paolo Bonzini
2023-09-11 10:11             ` Philippe Mathieu-Daudé
2023-09-11 14:18               ` Philippe Mathieu-Daudé
2023-09-11 10:41             ` Michael Tokarev
2023-09-11 10:44               ` Michael Tokarev

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20230907130004.500601-8-pbonzini@redhat.com \
    --to=pbonzini@redhat.com \
    --cc=eblake@redhat.com \
    --cc=mjt@tls.msk.ru \
    --cc=qemu-devel@nongnu.org \
    --cc=richard.henderson@linaro.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).