diff options
Diffstat (limited to 'init.cfg')
-rw-r--r-- | init.cfg | 20 |
1 files changed, 20 insertions, 0 deletions
@@ -346,11 +346,31 @@ or use the shortcut target of the toplevel Makefile, fi } +# Test whether we can run our just-built rm setuidgid-to-root, +# i.e., that $NON_ROOT_USERNAME has access to the build directory. +setuidgid_has_perm_() +{ + local rm_version=$( + setuidgid $NON_ROOT_USERNAME env PATH="$PATH" rm --version | + sed -n 'ls/.* //p' + ) + case ":$rm_version:" in + :$PACKAGE_VERSION:) ;; + *) return 1;; + esac +} + require_root_() { uid_is_privileged_ || skip_ "must be run as root" NON_ROOT_USERNAME=${NON_ROOT_USERNAME=nobody} NON_ROOT_GROUP=${NON_ROOT_GROUP=$(id -g $NON_ROOT_USERNAME)} + + # When the current test invokes setuidgid, call setuidgid_has_perm_ + # to check for a common problem. + grep '^[ ]*setuidgid' "../$0" \ + && { setuidgid_has_perm_ \ + || skip_ "user $NON_ROOT_USERNAME lacks execute permissions"; } } skip_if_root_() { uid_is_privileged_ && skip_ "must be run as non-root"; } |