#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
+#include <sys/prctl.h>
+#include <linux/prctl.h>
+#include <linux/capability.h>
#include <unistd.h>
/* Ensure that a pathname component @name does not contain the special Unix
gboolean
ot_util_process_privileged (void)
{
- return geteuid() == 0;
+ if (geteuid() != 0)
+ return FALSE;
+
+ // https://github.com/containers/bootc/blob/c88fcfd6e145863408bde7d4706937dd323f64e2/lib/src/cli.rs#L621
+ if (prctl (PR_CAPBSET_READ, CAP_SYS_ADMIN) != 1)
+ return FALSE;
+
+ return TRUE;
}