From c64877f519cc51a7f2d664093a15f823b6953e89 Mon Sep 17 00:00:00 2001 From: Geoffroy Van Cutsem Date: Mon, 24 Jun 2019 13:43:59 +0200 Subject: [PATCH] tools: add check to verify that running with root privileges Add a check to acrnd and acrnctl to make sure we are running with root privileges. If not, print out a message instructing the user to run with root privileges and exit returning an error (-1). Add notes to the documentation as well to make it more obvious. Tracked-On: #3330 Signed-off-by: Geoffroy Van Cutsem Reviewed-by: Binbin Wu --- tools/acrn-manager/README.rst | 6 ++++++ tools/acrn-manager/acrnctl.c | 5 +++++ tools/acrn-manager/acrnd.c | 6 ++++++ 3 files changed, 17 insertions(+) diff --git a/tools/acrn-manager/README.rst b/tools/acrn-manager/README.rst index 957aaf3cd..06e288dc6 100644 --- a/tools/acrn-manager/README.rst +++ b/tools/acrn-manager/README.rst @@ -35,6 +35,9 @@ You can see the available ``acrnctl`` commands by running: blkrescan Use acrnctl [cmd] help for details +.. note:: + You must run ``acrnctl`` with root privileges. + Here are some usage examples: Add a VM @@ -163,6 +166,9 @@ A ``systemd`` service file (``acrnd.service``) is installed by default that will start the ``acrnd`` daemon when the Service OS comes up. You can restart/stop acrnd service using ``systemctl`` +.. note:: + You must run ``acrnd`` with root privileges. + Build and Install ***************** diff --git a/tools/acrn-manager/acrnctl.c b/tools/acrn-manager/acrnctl.c index ffb8cda59..469bec0f8 100644 --- a/tools/acrn-manager/acrnctl.c +++ b/tools/acrn-manager/acrnctl.c @@ -807,6 +807,11 @@ int main(int argc, char *argv[]) return 0; } + if (getuid() != 0) { + printf("Please run acrnctl with root privileges. Exiting.\n"); + return -1; + } + acrnctl_bin_path = argv[0]; /* first check acrnctl reserved operations */ diff --git a/tools/acrn-manager/acrnd.c b/tools/acrn-manager/acrnd.c index 7a255f997..3e8f527af 100644 --- a/tools/acrn-manager/acrnd.c +++ b/tools/acrn-manager/acrnd.c @@ -734,6 +734,12 @@ int main(int argc, char *argv[]) { int ret; + if (getuid() != 0) { + printf("Please run acrnd with root privileges. Exiting.\n"); + return -1; + } + + if (parse_opt(argc, argv)) return -1;