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]]
|
[[package]]
|
||||||
name = "lesavka_client"
|
name = "lesavka_client"
|
||||||
version = "0.25.0"
|
version = "0.25.1"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"async-stream",
|
"async-stream",
|
||||||
@ -1692,7 +1692,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "lesavka_common"
|
name = "lesavka_common"
|
||||||
version = "0.25.0"
|
version = "0.25.1"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"base64",
|
"base64",
|
||||||
@ -1704,7 +1704,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "lesavka_server"
|
name = "lesavka_server"
|
||||||
version = "0.25.0"
|
version = "0.25.1"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"base64",
|
"base64",
|
||||||
|
|||||||
@ -4,7 +4,7 @@ path = "src/main.rs"
|
|||||||
|
|
||||||
[package]
|
[package]
|
||||||
name = "lesavka_client"
|
name = "lesavka_client"
|
||||||
version = "0.25.0"
|
version = "0.25.1"
|
||||||
edition = "2024"
|
edition = "2024"
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "lesavka_common"
|
name = "lesavka_common"
|
||||||
version = "0.25.0"
|
version = "0.25.1"
|
||||||
edition = "2024"
|
edition = "2024"
|
||||||
build = "build.rs"
|
build = "build.rs"
|
||||||
|
|
||||||
|
|||||||
@ -1,12 +1,39 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
# scripts/install/server.sh - install and setup all server related apps and environments
|
# scripts/install/server.sh - install and setup all server related apps and environments
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
ORIG_USER=${SUDO_USER:-$(id -un)}
|
|
||||||
SCRIPT_DIR=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)
|
SCRIPT_DIR=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)
|
||||||
SCRIPT_REPO_ROOT=$(cd -- "$SCRIPT_DIR/../.." && pwd)
|
SCRIPT_REPO_ROOT=$(cd -- "$SCRIPT_DIR/../.." && pwd)
|
||||||
DEFAULT_REPO_URL=ssh://git@scm.bstein.dev:2242/bstein/lesavka.git
|
DEFAULT_REPO_URL=ssh://git@scm.bstein.dev:2242/bstein/lesavka.git
|
||||||
export TMPDIR=${TMPDIR:-/var/tmp}
|
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() {
|
persisted_env_value() {
|
||||||
local file=$1
|
local file=$1
|
||||||
local key=$2
|
local key=$2
|
||||||
|
|||||||
@ -16,7 +16,7 @@ bench = false
|
|||||||
|
|
||||||
[package]
|
[package]
|
||||||
name = "lesavka_server"
|
name = "lesavka_server"
|
||||||
version = "0.25.0"
|
version = "0.25.1"
|
||||||
edition = "2024"
|
edition = "2024"
|
||||||
autobins = false
|
autobins = false
|
||||||
|
|
||||||
|
|||||||
@ -10,6 +10,21 @@ const SERVER_INSTALL: &str = include_str!(concat!(
|
|||||||
"/scripts/install/server.sh"
|
"/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]
|
#[test]
|
||||||
fn server_install_pins_hdmi_camera_and_display_defaults() {
|
fn server_install_pins_hdmi_camera_and_display_defaults() {
|
||||||
for expected in [
|
for expected in [
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user