mirror of
https://github.com/git/git.git
synced 2024-12-15 12:53:36 +08:00
b9063afda1
Add a support library that provides one function that can be used to run a "scriplet" of commands through sudo and that helps invoking sudo in the slightly awkward way that is required to ensure it doesn't block the call (if shell was allowed as tested in the prerequisite) and it doesn't run the command through a different shell than the one we intended. Add additional negative tests as suggested by Junio and that use a new workspace that is owned by root. Document a regression that was introduced by previous commits where root won't be able anymore to access directories they own unless SUDO_UID is removed from their environment. The tests document additional ways that this new restriction could be worked around and the documentation explains why it might be instead considered a feature, but a "fix" is planned for a future change. Helped-by: Junio C Hamano <gitster@pobox.com> Helped-by: Phillip Wood <phillip.wood123@gmail.com> Signed-off-by: Carlo Marcelo Arenas Belón <carenas@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 lines
475 B
Bash
16 lines
475 B
Bash
# Helpers for running git commands under sudo.
|
|
|
|
# Runs a scriplet passed through stdin under sudo.
|
|
run_with_sudo () {
|
|
local ret
|
|
local RUN="$TEST_DIRECTORY/$$.sh"
|
|
write_script "$RUN" "$TEST_SHELL_PATH"
|
|
# avoid calling "$RUN" directly so sudo doesn't get a chance to
|
|
# override the shell, add aditional restrictions or even reject
|
|
# running the script because its security policy deem it unsafe
|
|
sudo "$TEST_SHELL_PATH" -c "\"$RUN\""
|
|
ret=$?
|
|
rm -f "$RUN"
|
|
return $ret
|
|
}
|