diff options
author | Jesus <heckyel@riseup.net> | 2023-09-25 02:46:41 +0800 |
---|---|---|
committer | Jesus <heckyel@riseup.net> | 2023-09-25 02:46:41 +0800 |
commit | fe6c9aa2b4a6a8f9dea8e0f4c3fa56b10c234018 (patch) | |
tree | 7f9771b348101c4a53ef4172eb957a9ca56fa314 | |
parent | 30e0053ac25f86c57c5da12d244981e97cc8d324 (diff) | |
download | hyperbola-bootstrap-fe6c9aa2b4a6a8f9dea8e0f4c3fa56b10c234018.tar.lz hyperbola-bootstrap-fe6c9aa2b4a6a8f9dea8e0f4c3fa56b10c234018.tar.xz hyperbola-bootstrap-fe6c9aa2b4a6a8f9dea8e0f4c3fa56b10c234018.zip |
update helpers
-rw-r--r-- | README.md | 13 | ||||
-rw-r--r-- | make-bootstrap-file.sh | 28 |
2 files changed, 33 insertions, 8 deletions
@@ -18,6 +18,19 @@ If you want change the download repository # bash make-bootstrap-file.sh -u https://mirror.fsf.org/hyperbola/gnu-plus-linux-libre/testing ``` +To display the script's help information, use the -h option: + +```console +# bash make-bootstrap-file.sh -h +``` + +Why Root (Superuser) is Required ? +=================================== + +This script must be run as root (superuser) because it performs several critical operations that require administrative privileges. +The primary reason is the use of the **mknod** command to make device nodes (/dev/null, /dev/random, and /dev/urandom), +which is restricted to superusers due to security considerations. + License ======= diff --git a/make-bootstrap-file.sh b/make-bootstrap-file.sh index de42f67..2e0c883 100644 --- a/make-bootstrap-file.sh +++ b/make-bootstrap-file.sh @@ -4,16 +4,25 @@ set -e -u -o pipefail +# Check if the user is root (superuser) +if [[ $(id -u) -ne 0 ]]; then + echo "This script must be run as root (superuser) because it uses 'mknod' to make device nodes, which requires superuser privileges." + exit 1 +fi + +# Display usage message usage() { cat <<EOF - Usage: - bash $0 make-bootstrap-file.sh - or - bash $0 make-bootstrap-file.sh --arch i686 --release v0.4.3 --url https://mirror.fsf.org/hyperbola/gnu-plus-linux-libre/stable - or - bash $0 make-bootstrap-file.sh -a i686 -r v0.4.3 -u https://mirror.fsf.org/hyperbola/gnu-plus-linux-libre/stable +Usage: bash $0 [options] + +Options: + -a, --arch ARCH Specify architecture (default: x86_64) + -r, --release VERSION Specify version (default: v0.4.3) + -u, --url URL Specify repository URL (default: https://mirror.fsf.org/hyperbola/gnu-plus-linux-libre/stable) + -owu, --owner-user-id ID Owner user ID for the tar file (default: 1000) + -owg, --owner-group-id ID Owner group ID for the tar file (default: 1000) + -h, --help Display this help message EOF - exit 1 } SCRIPT=$(readlink -f "$0") @@ -51,9 +60,12 @@ while [[ $# -gt 0 ]]; do TAR_OWNER_GROUP_ID="${2}" shift 2 ;; + -h|--help) + usage && exit 0 + ;; *) echo "Unrecognized option: $key" - usage + usage && exit 1 ;; esac done |