1 // SPDX-License-Identifier: GPL-2.0-or-later 2 /* 3 * Copyright (c) International Business Machines Corp., 2001 4 */ 5 6 /*\ 7 * [Description] 8 * 9 * Testcase to check the whether chroot sets errno to EPERM. 10 * 11 * As a non-root user attempt to perform chroot() to a directory. The 12 * chroot() call should fail with EPERM 13 */ 14 15 #include <stdlib.h> 16 #include <pwd.h> 17 #include "tst_test.h" 18 19 static char *path; 20 verify_chroot(void)21static void verify_chroot(void) 22 { 23 TST_EXP_FAIL(chroot(path), EPERM, "unprivileged chroot()"); 24 } 25 setup(void)26static void setup(void) 27 { 28 struct passwd *ltpuser; 29 30 path = tst_get_tmpdir(); 31 ltpuser = SAFE_GETPWNAM("nobody"); 32 SAFE_SETEUID(ltpuser->pw_uid); 33 } 34 cleanup(void)35static void cleanup(void) 36 { 37 free(path); 38 } 39 40 static struct tst_test test = { 41 .cleanup = cleanup, 42 .setup = setup, 43 .test_all = verify_chroot, 44 .needs_root = 1, 45 .needs_tmpdir = 1, 46 }; 47