Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package run0-wrappers for openSUSE:Factory checked in at 2026-02-17 16:44:41 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/run0-wrappers (Old) and /work/SRC/openSUSE:Factory/.run0-wrappers.new.1977 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "run0-wrappers" Tue Feb 17 16:44:41 2026 rev:2 rq:1333372 version:0.4+git20260203.bbbfcf8 Changes: -------- --- /work/SRC/openSUSE:Factory/run0-wrappers/run0-wrappers.changes 2026-01-27 16:05:32.072994378 +0100 +++ /work/SRC/openSUSE:Factory/.run0-wrappers.new.1977/run0-wrappers.changes 2026-02-17 16:44:43.712862010 +0100 @@ -1,0 +2,13 @@ +Mon Feb 16 14:09:39 UTC 2026 - Thorsten Kukuk <[email protected]> + +- Always enable polkit rules + +------------------------------------------------------------------- +Tue Feb 10 16:12:24 UTC 2026 - Thorsten Kukuk <[email protected]> + +- Update to version 0.4+git20260203.bbbfcf8: + * Change all upper case variables to internal lowercase ones (#3) + * tests: run shellcheck on all scripts + * run0-sudo: unset secure_path before calling run0 (test 5) + +------------------------------------------------------------------- Old: ---- run0-wrappers-0.4+git20260109.43967c3.tar.xz New: ---- run0-wrappers-0.4+git20260203.bbbfcf8.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ run0-wrappers.spec ++++++ --- /var/tmp/diff_new_pack.Vs9XIO/_old 2026-02-17 16:44:46.052959647 +0100 +++ /var/tmp/diff_new_pack.Vs9XIO/_new 2026-02-17 16:44:46.076960648 +0100 @@ -15,10 +15,8 @@ # Please submit bugfixes or comments via https://bugs.opensuse.org/ # -%bcond_with polkit_rules - Name: run0-wrappers -Version: 0.4+git20260109.43967c3 +Version: 0.4+git20260203.bbbfcf8 Release: 0 Summary: Configs and scripts to simulate some sudo and su behavior with run0 License: BSD-2-Clause @@ -42,7 +40,6 @@ sudo-policy-auth-wheel-self RPM as far as possible. Supported are "nopasswd" and self authentication if an user is in the wheel group. -%if %{with polkit_rules} %package -n run0-policy-wheel-auth-self Summary: Users in the wheel group can authenticate as admin Requires: %{name} = %{version} @@ -52,7 +49,6 @@ %description -n run0-policy-wheel-auth-self run0 authentication policy that allows users in the wheel group to authenticate as root with their own password. -%endif %prep %autosetup @@ -60,18 +56,12 @@ %build %meson --sysconfdir=%{_prefix}/etc -Dpkexec-compat=true -Dsudo-compat=true %meson_build -%if %{with polkit_rules} sed -i -e 's|"wheel";|"";|g' polkit/50-run0-sudo.rules -%endif %install %meson_install install -Dm0644 %{SOURCE1} %{buildroot}%{_tmpfilesdir}/run0-wrappers.conf -%if %{with polkit_rules} echo 'polkit._run0_admin_group = "wheel";' > %{buildroot}%{_datadir}/polkit-1/rules.d/51-run0-admin-group.rules -%else -rm -fv %{buildroot}%{_datadir}/polkit-1/rules.d/50-run0-sudo.rules -%endif %files %license LICENSE @@ -82,10 +72,8 @@ %{_bindir}/run0-sudo %{_bindir}/sudo %{_prefix}%{_sysconfdir}/profile.d/run0-wrappers.sh -%if %{with polkit_rules} %attr(0555, root, root) %dir %{_datadir}/polkit-1/rules.d %{_datadir}/polkit-1/rules.d/50-run0-sudo.rules -%endif %{_tmpfilesdir}/run0-wrappers.conf %{_mandir}/man1/run0-pkexec.1%{?ext_man} %{_mandir}/man1/pkexec.1%{?ext_man} @@ -94,8 +82,6 @@ %{_mandir}/man1/sudo.1%{?ext_man} %{_mandir}/man5/sudo.conf.5%{?ext_man} -%if %{with polkit_rules} %files -n run0-policy-wheel-auth-self %{_datadir}/polkit-1/rules.d/51-run0-admin-group.rules -%endif ++++++ _servicedata ++++++ --- /var/tmp/diff_new_pack.Vs9XIO/_old 2026-02-17 16:44:46.360972498 +0100 +++ /var/tmp/diff_new_pack.Vs9XIO/_new 2026-02-17 16:44:46.384973500 +0100 @@ -1,6 +1,6 @@ <servicedata> <service name="tar_scm"> <param name="url">https://github.com/thkukuk/run0-wrappers.git</param> -<param name="changesrevision">43967c30ec578fb4d5bcfc2e1b71d4ff40bf3e4f</param></service></servicedata> +<param name="changesrevision">bbbfcf827b0eb2d6d6cb72c9925431306283b683</param></service></servicedata> (No newline at EOF) ++++++ run0-wrappers-0.4+git20260109.43967c3.tar.xz -> run0-wrappers-0.4+git20260203.bbbfcf8.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/run0-wrappers-0.4+git20260109.43967c3/src/run0-pkexec.sh.in new/run0-wrappers-0.4+git20260203.bbbfcf8/src/run0-pkexec.sh.in --- old/run0-wrappers-0.4+git20260109.43967c3/src/run0-pkexec.sh.in 2026-01-09 13:47:56.000000000 +0100 +++ new/run0-wrappers-0.4+git20260203.bbbfcf8/src/run0-pkexec.sh.in 2026-02-03 20:37:43.000000000 +0100 @@ -3,7 +3,7 @@ # This script acts as a basic su wrapper using run0. # It handles the common case of switching to root to run a command. -RUN0_EXEC="run0" +_run0_exec="run0" RUN0_BACKGROUND="--background=" # --- Function to display usage information --- @@ -35,9 +35,9 @@ # --- Main Logic --- # Array to hold the final command and arguments for run0 -RUN0_ARGS=("$RUN0_BACKGROUND") -RUN0_COMMANDS=() -TARGET_USER="root" +__run0_args=("$RUN0_BACKGROUND") +__run0_commands=() +__run0_target_user="root" while (( "$#" )); do arg="$1" @@ -48,11 +48,11 @@ shift ;; --keep-cwd) - RUN0_ARGS+=("--chdir=$PWD") + __run0_args+=("--chdir=$PWD") shift ;; --user) - TARGET_USER="$2" + __run0_target_user="$2" shift 2 ;; --help) @@ -82,7 +82,7 @@ esac done -RUN0_ARGS+=("--user=${TARGET_USER}") -RUN0_COMMANDS+=("$@") +__run0_args+=("--user=${__run0_target_user}") +__run0_commands+=("$@") -exec "${RUN0_EXEC}" "${RUN0_ARGS[@]}" -- "${RUN0_COMMANDS[@]}" +exec "${_run0_exec}" "${__run0_args[@]}" -- "${__run0_commands[@]}" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/run0-wrappers-0.4+git20260109.43967c3/src/run0-su.sh.in new/run0-wrappers-0.4+git20260203.bbbfcf8/src/run0-su.sh.in --- old/run0-wrappers-0.4+git20260109.43967c3/src/run0-su.sh.in 2026-01-09 13:47:56.000000000 +0100 +++ new/run0-wrappers-0.4+git20260203.bbbfcf8/src/run0-su.sh.in 2026-02-03 20:37:43.000000000 +0100 @@ -3,7 +3,7 @@ # This script acts as a basic su wrapper using run0. # It handles the common case of switching to root to run a command. -RUN0_EXEC="run0" +__run0_exec="run0" RUN0_BACKGROUND="--background=" # --- Function to display usage information --- @@ -33,6 +33,7 @@ } show_version() { + local run0_version run0_version="$(run0 --version 2>/dev/null | head -n 1 | cut -d' ' -f3 | sed 's/[()]//g')" echo "run0-su (@PACKAGE@) @VERSION@" echo "systemd run0 version $run0_version" @@ -55,15 +56,15 @@ # --- Main Logic --- # Array to hold the final command and arguments for run0 -RUN0_ARGS=("$RUN0_BACKGROUND") -RUN0_COMMANDS=() -RUN0_ENV=() +__run0_args=("$RUN0_BACKGROUND") +__run0_commands=() +__run0_env=() # Variables to track user and command -RUN0_SHELL="" -TARGET_USER="" -TARGET_GROUP="" -LOGIN_SHELL=0 +__run0_shell="" +__target_user="" +__target_group="" +__login_shell=0 while (( "$#" )); do arg="$1" @@ -72,8 +73,8 @@ -c|--command) # The next argument is the command string if (( "$#" )); then - RUN0_COMMANDS+=("-c") - RUN0_COMMANDS+=("$2") + __run0_commands+=("-c") + __run0_commands+=("$2") else echo "run0-su: option requires an argument -- '$arg'" >&2 show_usage >&2 @@ -82,11 +83,11 @@ shift 2 ;; -f|--fast) - RUN0_COMMANDS+=("-f") + __run0_commands+=("-f") shift ;; -g|--group) - TARGET_GROUP="--group=$2" + __target_group="--group=$2" shift 2 ;; -G|--supp-group) @@ -94,8 +95,8 @@ shift 2 ;; -|-l|--login) - RUN0_COMMANDS+=("-l") - LOGIN_SHELL=1 + __run0_commands+=("-l") + __login_shell=1 shift ;; -m|-p|--preserve-environment) @@ -103,16 +104,16 @@ shift ;; -P |--pty) - RUN0_ARGS+=("--pty-late") + __run0_args+=("--pty-late") shift ;; -s|--shell) # The next argument is the shell - RUN0_SHELL="$2" + __run0_shell="$2" shift 2 ;; --shell=*) - RUN0_SHELL="${1#*=}" + __run0_shell="${1#*=}" shift ;; -w|--whitelist-environment) @@ -120,7 +121,7 @@ for var in $VARS; do # Remove whitespace var="${var//[[:blank:]]/}" - RUN0_ENV+=("--setenv=$var") + __run0_env+=("--setenv=$var") done shift 2 ;; @@ -140,14 +141,14 @@ exit 1 ;; root) - TARGET_USER="root" + __target_user="root" shift ;; *) # This must be the target user or the start of a command/arguments - if [ -z "$TARGET_USER" ]; then + if [ -z "$__target_user" ]; then # First positional argument is the user - TARGET_USER="$arg" + __target_user="$arg" shift else echo "run0-su: invalid option -- '$arg'" >&2 @@ -158,32 +159,33 @@ esac done -RUN0_COMMANDS+=("$@") +__run0_commands+=("$@") # we need a shell for -l and change CWD to ~ -if [ $LOGIN_SHELL -eq 1 ]; then - if [ -z "$TARGET_USER" ]; then +if [ $__login_shell -eq 1 ]; then + if [ -z "$__target_user" ]; then # run0 will change home if target user is specified - TARGET_USER="root" + __target_user="root" fi else # No login shell, keep current directory - RUN0_ARGS+=("--chdir=$PWD") + __run0_args+=("--chdir=$PWD") fi -if [ -z "$RUN0_SHELL" ]; then - RUN0_SHELL=$(get_shell "$TARGET_USER") +if [ -z "$__run0_shell" ]; then + __run0_shell=$(get_shell "$__target_user") fi -if [ -n "$TARGET_USER" ]; then - RUN0_ARGS+=("--user=${TARGET_USER}") +if [ -n "$__target_user" ]; then + __run0_args+=("--user=${__target_user}") fi -if [ -n "$TARGET_GROUP" ]; then - RUN0_ARGS+=("--group=${TARGET_GROUP}") +if [ -n "$__target_group" ]; then + __run0_args+=("--group=${__target_group}") fi -if [ ${LOGIN_SHELL} -eq 0 ]; then - mapfile -t RUN0_ENV < <(printenv | grep -v ^_ | grep -v ^PATH= | awk '{print "--setenv="$0}') +if [ ${__login_shell} -eq 0 ]; then + mapfile -t __run0_env < <(printenv | grep -v ^_ | grep -v ^PATH= | awk '{print "--setenv="$0}') fi -exec "${RUN0_EXEC}" "${RUN0_ARGS[@]}" "${RUN0_ENV[@]}" -- ${RUN0_SHELL} "${RUN0_COMMANDS[@]}" +# shellcheck disable=SC2086 +exec "${__run0_exec}" "${__run0_args[@]}" "${__run0_env[@]}" -- ${__run0_shell} "${__run0_commands[@]}" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/run0-wrappers-0.4+git20260109.43967c3/src/run0-sudo.sh.in new/run0-wrappers-0.4+git20260203.bbbfcf8/src/run0-sudo.sh.in --- old/run0-wrappers-0.4+git20260109.43967c3/src/run0-sudo.sh.in 2026-01-09 13:47:56.000000000 +0100 +++ new/run0-wrappers-0.4+git20260203.bbbfcf8/src/run0-sudo.sh.in 2026-02-03 20:37:43.000000000 +0100 @@ -3,13 +3,14 @@ # This script acts as a basic sudo wrapper using run0. # It handles the common case of switching to root to run a command. -CONFIG_FILE="/etc/run0-wrappers/sudo.conf" -RUN0_EXEC="run0" +__config_file="/etc/run0-wrappers/sudo.conf" +__run0_exec="run0" RUN0_BACKGROUND="--background=" secure_path="/usr/sbin:/usr/bin:/sbin:/bin" -if [ -f "${CONFIG_FILE}" ]; then - . "${CONFIG_FILE}" +if [ -f "${__config_file}" ]; then + # shellcheck source=/dev/null + . "${__config_file}" fi # --- Function to display usage information --- @@ -63,31 +64,31 @@ # --- option handling --- # Array to hold the arguments for run0 -RUN0_ARGS=("$RUN0_BACKGROUND") +__run0_args=("$RUN0_BACKGROUND") # Array to hold the final command for run0 -RUN0_COMMAND=() -RUN0_ENV=() +__run0_command=() +__run0_env=() # Shell to use if one is specified -RUN0_SHELL="" -LOGIN_SHELL="" -VALIDATE_ONLY="" -PRESERVE_ENV="" +__run0_shell="" +__run0_login_shell="" +__run0_validate_only="" +__run0_preserve_env="" # Variables to track user and command -TARGET_USER="" -TARGET_GROUP="" -TARGET_CWD="" +__run0_target_user="" +__run0_target_group="" +__run0_target_cwd="" command_args() { - if [ -n "$RUN0_SHELL" ]; then - RUN0_COMMAND+=("$RUN0_SHELL") - if [ -n "$LOGIN_SHELL" ]; then - RUN0_COMMAND+=("$LOGIN_SHELL") + if [ -n "$__run0_shell" ]; then + __run0_command+=("$__run0_shell") + if [ -n "$__run0_login_shell" ]; then + __run0_command+=("$__run0_login_shell") fi if [ $# -gt 0 ]; then - RUN0_COMMAND+=("-c" "$*") + __run0_command+=("-c" "$*") fi else - RUN0_COMMAND=("$@") + __run0_command=("$@") fi } @@ -127,7 +128,7 @@ shift 2 ;; -D|--chdir) - TARGET_CWD="$2" + __run0_target_cwd="$2" shift 2 ;; -E|--preserve-env) @@ -139,16 +140,16 @@ show_help >&2 exit 1 fi - PRESERVE_ENV="$2" + __run0_preserve_env="$2" shift 2 else # -E format (preserve all) or --preserve-env without argument - PRESERVE_ENV="all" + __run0_preserve_env="all" shift 1 fi ;; -g|--group) - TARGET_GROUP="$2" + __run0_target_group="$2" shift 2 ;; -H|--set-home) @@ -160,12 +161,12 @@ exit 0 ;; -i|--login) - RUN0_SHELL=$(get_shell "$TARGET_USER") - LOGIN_SHELL="-l" + __run0_shell=$(get_shell "$__run0_target_user") + __run0_login_shell="-l" # We need to change CWD to ~ # run0 will do that if a target user is specified - if [ -z "$TARGET_USER" ]; then - TARGET_USER="root" + if [ -z "$__run0_target_user" ]; then + __run0_target_user="root" fi shift ;; @@ -182,7 +183,7 @@ shift ;; -n|--non-interactive) - RUN0_ARGS+=("--no-ask-password") + __run0_args+=("--no-ask-password") shift ;; -P|--preserve-groups) @@ -190,15 +191,15 @@ shift ;; -s|--shell) - RUN0_SHELL=$(get_shell "$TARGET_USER") + __run0_shell=$(get_shell "$__run0_target_user") shift ;; -u|--user) - TARGET_USER="$2" + __run0_target_user="$2" shift 2 ;; -v|--validate) - VALIDATE_ONLY=1 + __run0_validate_only=1 shift ;; -V|--version) @@ -217,8 +218,8 @@ # Show usage if no command is provided (default run0 behavior is to run a shell) if [ $# -eq 0 ] && \ - [ -z "$LOGIN_SHELL" ] && \ - [ -z "$RUN0_SHELL" ]; then + [ -z "$__run0_login_shell" ] && \ + [ -z "$__run0_shell" ]; then show_help >&2 exit 1 fi @@ -232,31 +233,32 @@ parse_arguments "$@" -if [ -n "$TARGET_USER" ]; then - RUN0_ARGS+=("--user=${TARGET_USER}") +if [ -n "$__run0_target_user" ]; then + __run0_args+=("--user=${__run0_target_user}") fi -if [ -n "$TARGET_GROUP" ]; then - RUN0_ARGS+=("--group=${TARGET_GROUP}") +if [ -n "$__run0_target_group" ]; then + __run0_args+=("--group=${__run0_target_group}") fi -if [ -n "$TARGET_CWD" ]; then - RUN0_ARGS+=("--chdir=${TARGET_CWD}") +if [ -n "$__run0_target_cwd" ]; then + __run0_args+=("--chdir=${__run0_target_cwd}") fi -if [ "$PRESERVE_ENV" == "all" ]; then - mapfile -t RUN0_ENV < <(printenv | grep -v ^LOGNAME= | grep -v ^USER= | grep -v ^_ | grep -v ^PATH= | grep -v ^HOME= | grep -v ^SUDO_ | awk '{print "--setenv="$0}') -elif [ -n "$PRESERVE_ENV" ]; then - VARS=$(echo "$PRESERVE_ENV" | tr ',' ' ') - for var in $VARS; do +if [ "$__run0_preserve_env" == "all" ]; then + mapfile -t __run0_env < <(printenv | grep -v ^LOGNAME= | grep -v ^USER= | grep -v ^_ | grep -v ^PATH= | grep -v ^HOME= | grep -v ^SUDO_ | awk '{print "--setenv="$0}') +elif [ -n "$__run0_preserve_env" ]; then + __vars=$(echo "$__run0_preserve_env" | tr ',' ' ') + for var in $__vars; do # Remove whitespace var="${var//[[:blank:]]/}" - RUN0_ENV+=("--setenv=$var") + __run0_env+=("--setenv=$var") done fi export PATH="${secure_path}" +unset secure_path -if [ "$VALIDATE_ONLY" == "1" ]; then - exec "${RUN0_EXEC}" "${RUN0_ARGS[@]}" "${RUN0_ENV[@]}" -- true +if [ "$__run0_validate_only" == "1" ]; then + exec "${__run0_exec}" "${__run0_args[@]}" "${__run0_env[@]}" -- true else - exec "${RUN0_EXEC}" "${RUN0_ARGS[@]}" "${RUN0_ENV[@]}" -- "${RUN0_COMMAND[@]}" + exec "${__run0_exec}" "${__run0_args[@]}" "${__run0_env[@]}" -- "${__run0_command[@]}" fi diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/run0-wrappers-0.4+git20260109.43967c3/tests/meson.build new/run0-wrappers-0.4+git20260203.bbbfcf8/tests/meson.build --- old/run0-wrappers-0.4+git20260109.43967c3/tests/meson.build 2026-01-09 13:47:56.000000000 +0100 +++ new/run0-wrappers-0.4+git20260203.bbbfcf8/tests/meson.build 2026-02-03 20:37:43.000000000 +0100 @@ -1,3 +1,21 @@ +shellcheck_exe = find_program('shellcheck', required : false) + +if shellcheck_exe.found() +test('shellcheck-run0-pkexec', + shellcheck_exe, + args: [files('../src/run0-pkexec.sh.in')] +) +test('shellcheck-run0-su', + shellcheck_exe, + args: [files('../src/run0-su.sh.in')] +) +test('shellcheck-run0-sudo', + shellcheck_exe, + args: [files('../src/run0-sudo.sh.in')] +) +endif + + test('tst_run0_sudo_1', find_program('tst-run0-sudo-1.sh')) test('tst_run0_sudo_2', find_program('tst-run0-sudo-2.sh')) test('tst_run0_sudo_3', find_program('tst-run0-sudo-3.sh'))
