mirror of
https://github.com/torvalds/linux.git
synced 2026-05-24 15:12:13 +02:00
selftests/open_tree: add OPEN_TREE_NAMESPACE tests
Add tests for OPEN_TREE_NAMESPACE. Link: https://patch.msgid.link/20251229-work-empty-namespace-v1-2-bfb24c7b061f@kernel.org Tested-by: Jeff Layton <jlayton@kernel.org> Reviewed-by: Jeff Layton <jlayton@kernel.org> Signed-off-by: Christian Brauner <brauner@kernel.org>
This commit is contained in:
parent
9b8a0ba682
commit
b8f7622aa6
1
tools/testing/selftests/filesystems/open_tree_ns/.gitignore
vendored
Normal file
1
tools/testing/selftests/filesystems/open_tree_ns/.gitignore
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
open_tree_ns_test
|
||||
10
tools/testing/selftests/filesystems/open_tree_ns/Makefile
Normal file
10
tools/testing/selftests/filesystems/open_tree_ns/Makefile
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
# SPDX-License-Identifier: GPL-2.0
|
||||
TEST_GEN_PROGS := open_tree_ns_test
|
||||
|
||||
CFLAGS := -Wall -Werror -g $(KHDR_INCLUDES)
|
||||
LDLIBS := -lcap
|
||||
|
||||
include ../../lib.mk
|
||||
|
||||
$(OUTPUT)/open_tree_ns_test: open_tree_ns_test.c ../utils.c
|
||||
$(CC) $(CFLAGS) -o $@ $^ $(LDLIBS)
|
||||
1030
tools/testing/selftests/filesystems/open_tree_ns/open_tree_ns_test.c
Normal file
1030
tools/testing/selftests/filesystems/open_tree_ns/open_tree_ns_test.c
Normal file
File diff suppressed because it is too large
Load Diff
|
|
@ -515,6 +515,32 @@ int setup_userns(void)
|
|||
return 0;
|
||||
}
|
||||
|
||||
int enter_userns(void)
|
||||
{
|
||||
int ret;
|
||||
char buf[32];
|
||||
uid_t uid = getuid();
|
||||
gid_t gid = getgid();
|
||||
|
||||
ret = unshare(CLONE_NEWUSER);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
sprintf(buf, "0 %d 1", uid);
|
||||
ret = write_file("/proc/self/uid_map", buf);
|
||||
if (ret)
|
||||
return ret;
|
||||
ret = write_file("/proc/self/setgroups", "deny");
|
||||
if (ret)
|
||||
return ret;
|
||||
sprintf(buf, "0 %d 1", gid);
|
||||
ret = write_file("/proc/self/gid_map", buf);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* caps_down - lower all effective caps */
|
||||
int caps_down(void)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -28,6 +28,7 @@ extern int cap_down(cap_value_t down);
|
|||
|
||||
extern bool switch_ids(uid_t uid, gid_t gid);
|
||||
extern int setup_userns(void);
|
||||
extern int enter_userns(void);
|
||||
|
||||
static inline bool switch_userns(int fd, uid_t uid, gid_t gid, bool drop_caps)
|
||||
{
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user