These tests require properly privileged root users, hence skip things
when we don't have CAP_SYS_ADMIN.
Fixes: #19746
can_unshare = have_namespaces();
/* It is needed otherwise cgroup creation fails */
- if (getuid() != 0)
- return log_tests_skipped("not root");
+ if (geteuid() != 0 || have_effective_cap(CAP_SYS_ADMIN) <= 0)
+ return log_tests_skipped("not privileged");
r = enter_cgroup_subroot(NULL);
if (r == -ENOMEDIUM)
#include <sys/statvfs.h>
#include "alloc-util.h"
+#include "capability-util.h"
#include "fd-util.h"
#include "fileio.h"
#include "mount-util.h"
_cleanup_free_ char *subdir = NULL;
const char *p;
- if (geteuid() != 0) {
- (void) log_tests_skipped("not running as root");
+ if (geteuid() != 0 || have_effective_cap(CAP_SYS_ADMIN) <= 0) {
+ (void) log_tests_skipped("not running privileged");
return;
}
static void test_bind_remount_one(void) {
pid_t pid;
- if (geteuid() != 0) {
- (void) log_tests_skipped("not running as root");
+ if (geteuid() != 0 || have_effective_cap(CAP_SYS_ADMIN) <= 0) {
+ (void) log_tests_skipped("not running privileged");
return;
}