1*cba191e2SOlivier Certner#!/usr/bin/env atf-sh 2*cba191e2SOlivier Certner# 3*cba191e2SOlivier Certner# Copyright (c) 2026, The FreeBSD Foundation 4*cba191e2SOlivier Certner# 5*cba191e2SOlivier Certner# This software was developed by Olivier Certner <olce@FreeBSD.org> at 6*cba191e2SOlivier Certner# Kumacom SARL under sponsorship from the FreeBSD Foundation. 7*cba191e2SOlivier Certner 8*cba191e2SOlivier Certneratf_test_case rule_uid_to_any 9*cba191e2SOlivier Certnerrule_uid_to_any_head() 10*cba191e2SOlivier Certner{ 11*cba191e2SOlivier Certner atf_set descr "Single \"to any\" rule" 12*cba191e2SOlivier Certner} 13*cba191e2SOlivier Certnerrule_uid_to_any_body() 14*cba191e2SOlivier Certner{ 15*cba191e2SOlivier Certner sysctl_set_and_check_rules "uid=1001>any" 16*cba191e2SOlivier Certner sysctl_set_and_check_rules "gid=1001>any" 17*cba191e2SOlivier Certner} 18*cba191e2SOlivier Certner 19*cba191e2SOlivier Certneratf_test_case rule_uid_to_uid 20*cba191e2SOlivier Certnerrule_uid_to_uid_head() 21*cba191e2SOlivier Certner{ 22*cba191e2SOlivier Certner atf_set descr "Single \"to UID\" rule" 23*cba191e2SOlivier Certner} 24*cba191e2SOlivier Certnerrule_uid_to_uid_body() 25*cba191e2SOlivier Certner{ 26*cba191e2SOlivier Certner sysctl_set_and_check_rules "uid=1001>uid=0" 27*cba191e2SOlivier Certner sysctl_set_and_check_rules "gid=1001>uid=0" 28*cba191e2SOlivier Certner} 29*cba191e2SOlivier Certner 30*cba191e2SOlivier Certneratf_test_case rule_uid_to_uid_any 31*cba191e2SOlivier Certnerrule_uid_to_uid_any_head() 32*cba191e2SOlivier Certner{ 33*cba191e2SOlivier Certner atf_set descr "Single \"to UID any\" rule" 34*cba191e2SOlivier Certner} 35*cba191e2SOlivier Certnerrule_uid_to_uid_any_body() 36*cba191e2SOlivier Certner{ 37*cba191e2SOlivier Certner sysctl_set_and_check_rules "uid=1001>uid=any" 38*cba191e2SOlivier Certner sysctl_set_and_check_rules "gid=1001>uid=any" 39*cba191e2SOlivier Certner} 40*cba191e2SOlivier Certner 41*cba191e2SOlivier Certneratf_test_case rule_uid_to_uid_star 42*cba191e2SOlivier Certnerrule_uid_to_uid_star_head() 43*cba191e2SOlivier Certner{ 44*cba191e2SOlivier Certner atf_set descr "Single \"to any (with '*')\" rule" 45*cba191e2SOlivier Certner} 46*cba191e2SOlivier Certnerrule_uid_to_uid_star_body() 47*cba191e2SOlivier Certner{ 48*cba191e2SOlivier Certner sysctl_set_and_check_rules "uid=1001>uid=*" 49*cba191e2SOlivier Certner sysctl_set_and_check_rules "gid=1001>uid=*" 50*cba191e2SOlivier Certner} 51*cba191e2SOlivier Certner 52*cba191e2SOlivier Certneratf_test_case rule_uid_to_uid_gid 53*cba191e2SOlivier Certnerrule_uid_to_uid_gid_head() 54*cba191e2SOlivier Certner{ 55*cba191e2SOlivier Certner atf_set descr "Single \"to UID and GID\" rule" 56*cba191e2SOlivier Certner} 57*cba191e2SOlivier Certnerrule_uid_to_uid_gid_body() 58*cba191e2SOlivier Certner{ 59*cba191e2SOlivier Certner sysctl_set_and_check_rules "uid=1001>uid=0,gid=0" 60*cba191e2SOlivier Certner sysctl_set_and_check_rules "gid=1001>uid=0,gid=0" 61*cba191e2SOlivier Certner} 62*cba191e2SOlivier Certner 63*cba191e2SOlivier Certneratf_test_case rule_uid_to_uid_gid_optional_sgid 64*cba191e2SOlivier Certnerrule_uid_to_uid_gid_optional_sgid_head() 65*cba191e2SOlivier Certner{ 66*cba191e2SOlivier Certner atf_set descr "Single \"to UID, GID and \ 67*cba191e2SOlivier Certneroptional supplementary group rule\" rule" 68*cba191e2SOlivier Certner} 69*cba191e2SOlivier Certnerrule_uid_to_uid_gid_optional_sgid_body() 70*cba191e2SOlivier Certner{ 71*cba191e2SOlivier Certner sysctl_set_and_check_rules "uid=1001>uid=0,gid=0,+gid=0" 72*cba191e2SOlivier Certner sysctl_set_and_check_rules "gid=1001>uid=0,gid=0,+gid=0" 73*cba191e2SOlivier Certner} 74*cba191e2SOlivier Certner 75*cba191e2SOlivier Certneratf_test_case rule_uid_to_uid_gid_mandatory_sgid 76*cba191e2SOlivier Certnerrule_uid_to_uid_gid_mandatory_sgid_head() 77*cba191e2SOlivier Certner{ 78*cba191e2SOlivier Certner atf_set descr "Single \"to UID, GID and \ 79*cba191e2SOlivier Certnermandatory supplementary group\" rule" 80*cba191e2SOlivier Certner} 81*cba191e2SOlivier Certnerrule_uid_to_uid_gid_mandatory_sgid_body() 82*cba191e2SOlivier Certner{ 83*cba191e2SOlivier Certner sysctl_set_and_check_rules "uid=1001>uid=0,gid=0,!gid=0" 84*cba191e2SOlivier Certner sysctl_set_and_check_rules "gid=1001>uid=0,gid=0,!gid=0" 85*cba191e2SOlivier Certner} 86*cba191e2SOlivier Certner 87*cba191e2SOlivier Certneratf_test_case rule_uid_to_uid_gid_excluded_sgid 88*cba191e2SOlivier Certnerrule_uid_to_uid_gid_excluded_sgid_head() 89*cba191e2SOlivier Certner{ 90*cba191e2SOlivier Certner atf_set descr "Single \"to UID, GID and excluded supplementary group\" rule" 91*cba191e2SOlivier Certner} 92*cba191e2SOlivier Certnerrule_uid_to_uid_gid_excluded_sgid_body() 93*cba191e2SOlivier Certner{ 94*cba191e2SOlivier Certner sysctl_set_and_check_rules "uid=1001>uid=0,gid=0,-gid=0" 95*cba191e2SOlivier Certner sysctl_set_and_check_rules "gid=1001>uid=0,gid=0,-gid=0" 96*cba191e2SOlivier Certner} 97*cba191e2SOlivier Certner 98*cba191e2SOlivier Certneratf_test_case rules_uid_to_uid 99*cba191e2SOlivier Certnerrules_uid_to_uid_head() 100*cba191e2SOlivier Certner{ 101*cba191e2SOlivier Certner atf_set descr "Multiple \"to UID\" rules" 102*cba191e2SOlivier Certner} 103*cba191e2SOlivier Certnerrules_uid_to_uid_body() { 104*cba191e2SOlivier Certner sysctl_set_and_check_rules \ 105*cba191e2SOlivier Certner "uid=1001>uid=0;uid=1001>uid=0,gid=0,!gid=0,+gid=5;gid=1001>gid=5" 106*cba191e2SOlivier Certner} 107*cba191e2SOlivier Certner 108*cba191e2SOlivier Certneratf_test_case rules_uid_to_uid_with_spaces 109*cba191e2SOlivier Certnerrules_uid_to_uid_with_spaces_head() 110*cba191e2SOlivier Certner{ 111*cba191e2SOlivier Certner atf_set descr "Multiple \"to UID\" rules with extra spaces" 112*cba191e2SOlivier Certner} 113*cba191e2SOlivier Certnerrules_uid_to_uid_with_spaces_body() 114*cba191e2SOlivier Certner{ 115*cba191e2SOlivier Certner sysctl_set_and_check_rules \ 116*cba191e2SOlivier Certner "uid=1001 > uid=0; uid=1001>uid=0, gid = 0, !gid =0,+gid =5; \ 117*cba191e2SOlivier Certnergid= 1001 >gid =5" 118*cba191e2SOlivier Certner} 119*cba191e2SOlivier Certner 120*cba191e2SOlivier Certner 121*cba191e2SOlivier Certneratf_init_test_cases() 122*cba191e2SOlivier Certner{ 123*cba191e2SOlivier Certner . $(atf_get_srcdir)/common.sh 124*cba191e2SOlivier Certner 125*cba191e2SOlivier Certner atf_add_test_case rule_uid_to_any 126*cba191e2SOlivier Certner atf_add_test_case rule_uid_to_uid 127*cba191e2SOlivier Certner atf_add_test_case rule_uid_to_uid_any 128*cba191e2SOlivier Certner atf_add_test_case rule_uid_to_uid_star 129*cba191e2SOlivier Certner atf_add_test_case rule_uid_to_uid_gid 130*cba191e2SOlivier Certner atf_add_test_case rule_uid_to_uid_gid_optional_sgid 131*cba191e2SOlivier Certner atf_add_test_case rule_uid_to_uid_gid_mandatory_sgid 132*cba191e2SOlivier Certner atf_add_test_case rule_uid_to_uid_gid_excluded_sgid 133*cba191e2SOlivier Certner atf_add_test_case rules_uid_to_uid 134*cba191e2SOlivier Certner atf_add_test_case rules_uid_to_uid_with_spaces 135*cba191e2SOlivier Certner} 136