install: preserve invoking user through root wrapper
This commit is contained in:
parent
e0027e7929
commit
fabe7c2a76
6
Cargo.lock
generated
6
Cargo.lock
generated
@ -1658,7 +1658,7 @@ checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2"
|
||||
|
||||
[[package]]
|
||||
name = "lesavka_client"
|
||||
version = "0.25.0"
|
||||
version = "0.25.1"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"async-stream",
|
||||
@ -1692,7 +1692,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "lesavka_common"
|
||||
version = "0.25.0"
|
||||
version = "0.25.1"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"base64",
|
||||
@ -1704,7 +1704,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "lesavka_server"
|
||||
version = "0.25.0"
|
||||
version = "0.25.1"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"base64",
|
||||
|
||||
@ -4,7 +4,7 @@ path = "src/main.rs"
|
||||
|
||||
[package]
|
||||
name = "lesavka_client"
|
||||
version = "0.25.0"
|
||||
version = "0.25.1"
|
||||
edition = "2024"
|
||||
|
||||
[dependencies]
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "lesavka_common"
|
||||
version = "0.25.0"
|
||||
version = "0.25.1"
|
||||
edition = "2024"
|
||||
build = "build.rs"
|
||||
|
||||
|
||||
@ -1,12 +1,39 @@
|
||||
#!/usr/bin/env bash
|
||||
# scripts/install/server.sh - install and setup all server related apps and environments
|
||||
set -euo pipefail
|
||||
ORIG_USER=${SUDO_USER:-$(id -un)}
|
||||
SCRIPT_DIR=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)
|
||||
SCRIPT_REPO_ROOT=$(cd -- "$SCRIPT_DIR/../.." && pwd)
|
||||
DEFAULT_REPO_URL=ssh://git@scm.bstein.dev:2242/bstein/lesavka.git
|
||||
export TMPDIR=${TMPDIR:-/var/tmp}
|
||||
|
||||
resolve_install_user() {
|
||||
if [[ -n ${SUDO_USER:-} && ${SUDO_USER} != root ]]; then
|
||||
printf '%s\n' "$SUDO_USER"
|
||||
return 0
|
||||
fi
|
||||
|
||||
local current_user
|
||||
current_user=$(id -un)
|
||||
if [[ $current_user != root ]]; then
|
||||
printf '%s\n' "$current_user"
|
||||
return 0
|
||||
fi
|
||||
|
||||
local owner_uid owner_user
|
||||
owner_uid=$(stat -c '%u' "$SCRIPT_REPO_ROOT" 2>/dev/null || true)
|
||||
if [[ -n $owner_uid && $owner_uid != 0 ]]; then
|
||||
owner_user=$(getent passwd "$owner_uid" | cut -d: -f1)
|
||||
if [[ -n $owner_user ]]; then
|
||||
printf '%s\n' "$owner_user"
|
||||
return 0
|
||||
fi
|
||||
fi
|
||||
|
||||
printf 'root\n'
|
||||
}
|
||||
|
||||
ORIG_USER=$(resolve_install_user)
|
||||
|
||||
persisted_env_value() {
|
||||
local file=$1
|
||||
local key=$2
|
||||
|
||||
@ -16,7 +16,7 @@ bench = false
|
||||
|
||||
[package]
|
||||
name = "lesavka_server"
|
||||
version = "0.25.0"
|
||||
version = "0.25.1"
|
||||
edition = "2024"
|
||||
autobins = false
|
||||
|
||||
|
||||
@ -10,6 +10,21 @@ const SERVER_INSTALL: &str = include_str!(concat!(
|
||||
"/scripts/install/server.sh"
|
||||
));
|
||||
|
||||
#[test]
|
||||
fn server_install_infers_checkout_owner_when_root_wrapper_hides_sudo_user() {
|
||||
for expected in [
|
||||
"resolve_install_user()",
|
||||
"if [[ -n ${SUDO_USER:-} && ${SUDO_USER} != root ]]",
|
||||
"owner_uid=$(stat -c '%u' \"$SCRIPT_REPO_ROOT\"",
|
||||
"ORIG_USER=$(resolve_install_user)",
|
||||
] {
|
||||
assert!(
|
||||
SERVER_INSTALL.contains(expected),
|
||||
"install script should include root-wrapper install user inference: {expected}"
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn server_install_pins_hdmi_camera_and_display_defaults() {
|
||||
for expected in [
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user