From ae92a158955fd597d65e35f65ec949c98d554d30 Mon Sep 17 00:00:00 2001 From: buildplan Date: Wed, 2 Jul 2025 16:35:44 +0100 Subject: [PATCH 1/8] revised user_setup() --- du_setup.sh | 120 ++++++++++++++++++++++++++++++++++++++++------------ 1 file changed, 94 insertions(+), 26 deletions(-) diff --git a/du_setup.sh b/du_setup.sh index 7954b9a..7f4b94d 100644 --- a/du_setup.sh +++ b/du_setup.sh @@ -1,8 +1,9 @@ #!/bin/bash # Debian 12 and Ubuntu Server Hardening Interactive Script -# Version: 0.54 | 2025-07-02 +# Version: 0.55 | 2025-07-02 # Changelog: +# - v0.55: Improving setup_user() - ssh-keygen replaced the option to skip ssh key # - v0.54: Fix for rollback_ssh_changes() - more reliable on newer Ubuntu # Better error message if script is executed by non-root or without sudo # - v0.53: Fix for test_backup() - was failing if run as non root sudo user @@ -94,7 +95,7 @@ print_header() { echo -e "${CYAN}╔═════════════════════════════════════════════════════════════════╗${NC}" echo -e "${CYAN}║ ║${NC}" echo -e "${CYAN}║ DEBIAN/UBUNTU SERVER SETUP AND HARDENING SCRIPT ║${NC}" - echo -e "${CYAN}║ v0.54 | 2025-07-02 ║${NC}" + echo -e "${CYAN}║ v0.55 | 2025-07-02 ║${NC}" echo -e "${CYAN}║ ║${NC}" echo -e "${CYAN}╚═════════════════════════════════════════════════════════════════╝${NC}" echo @@ -389,7 +390,6 @@ setup_user() { log "Password setting skipped for '$USERNAME'." break elif [[ "$PASS1" == "$PASS2" ]]; then - # **SECURITY FIX**: Do not tee chpasswd output to log file. if echo "$USERNAME:$PASS1" | chpasswd >/dev/null 2>&1; then print_success "Password for '$USERNAME' updated." break @@ -407,38 +407,106 @@ setup_user() { SSH_DIR="$USER_HOME/.ssh" AUTH_KEYS="$SSH_DIR/authorized_keys" + # Check if home directory is writable + if [[ ! -w "$USER_HOME" ]]; then + print_error "Home directory $USER_HOME is not writable by $USERNAME." + print_info "Attempting to fix permissions..." + chown "$USERNAME:$USERNAME" "$USER_HOME" + chmod 700 "$USER_HOME" + if [[ ! -w "$USER_HOME" ]]; then + print_error "Failed to make $USER_HOME writable. Check filesystem permissions." + exit 1 + fi + log "Fixed permissions for $USER_HOME." + fi + if confirm "Add SSH public key(s) from your local machine now?"; then - while true; do # Loop to allow adding multiple keys - local SSH_PUBLIC_KEY # Declare locally to avoid issues - read -rp "$(echo -e "${CYAN}Paste your full SSH public key: ${NC}")" SSH_PUBLIC_KEY + while true; do + local SSH_PUBLIC_KEY + read -rp "$(echo -e "${CYAN}Paste your full SSH public key: ${NC}")" SSH_PUBLIC_KEY - if validate_ssh_key "$SSH_PUBLIC_KEY"; then - mkdir -p "$SSH_DIR" - chmod 700 "$SSH_DIR" - echo "$SSH_PUBLIC_KEY" >> "$AUTH_KEYS" - # De-duplicate keys after adding the new one - awk '!seen[$0]++' "$AUTH_KEYS" > "$AUTH_KEYS.tmp" && mv "$AUTH_KEYS.tmp" "$AUTH_KEYS" - chmod 600 "$AUTH_KEYS" - chown -R "$USERNAME:$USERNAME" "$SSH_DIR" - print_success "SSH public key added." - log "Added SSH public key for '$USERNAME'." - LOCAL_KEY_ADDED=true # Set this flag to true since at least one key was added - else - print_error "Invalid SSH key format. It should start with 'ssh-rsa', 'ecdsa-*', or 'ssh-ed25519'." - fi + if validate_ssh_key "$SSH_PUBLIC_KEY"; then + mkdir -p "$SSH_DIR" + chmod 700 "$SSH_DIR" + chown "$USERNAME:$USERNAME" "$SSH_DIR" + echo "$SSH_PUBLIC_KEY" >> "$AUTH_KEYS" + awk '!seen[$0]++' "$AUTH_KEYS" > "$AUTH_KEYS.tmp" && mv "$AUTH_KEYS.tmp" "$AUTH_KEYS" + chmod 600 "$AUTH_KEYS" + chown "$USERNAME:$USERNAME" "$AUTH_KEYS" + print_success "SSH public key added." + log "Added SSH public key for '$USERNAME'." + LOCAL_KEY_ADDED=true + else + print_error "Invalid SSH key format. It should start with 'ssh-rsa', 'ecdsa-*', or 'ssh-ed25519'." + fi - if ! confirm "Do you have another SSH public key to add?" "n"; then - print_info "Finished adding SSH keys." - break # User answered 'n', break the loop + if ! confirm "Do you have another SSH public key to add?" "n"; then + print_info "Finished adding SSH keys." + break + fi + done + else + print_info "No local SSH key provided. Generating a new key pair for '$USERNAME'." + log "User opted not to provide a local SSH key. Generating a new one." + + mkdir -p "$SSH_DIR" + chmod 700 "$SSH_DIR" + chown "$USERNAME:$USERNAME" "$SSH_DIR" + if ! sudo -u "$USERNAME" ssh-keygen -t ed25519 -f "$SSH_DIR/id_ed25519" -N "" -q; then + print_error "Failed to generate SSH key for '$USERNAME'." + exit 1 fi - done - fi + cat "$SSH_DIR/id_ed25519.pub" >> "$AUTH_KEYS" + chmod 600 "$AUTH_KEYS" + chown "$USERNAME:$USERNAME" "$AUTH_KEYS" + print_success "SSH key generated and added to authorized_keys." + log "Generated and added SSH key for '$USERNAME'." + + # Save private key to a temporary file for secure display + local TEMP_KEY_FILE="/tmp/$USERNAME_ssh_key_$(date +%s)" + cp "$SSH_DIR/id_ed25519" "$TEMP_KEY_FILE" + chmod 600 "$TEMP_KEY_FILE" + chown root:root "$TEMP_KEY_FILE" + + echo + echo -e "${YELLOW}⚠ SECURITY WARNING: The SSH key pair below is your only chance to access '$USERNAME' via SSH.${NC}" + echo -e "${YELLOW}⚠ Anyone with the private key can access your server. Secure it immediately.${NC}" + echo + echo -e "${PURPLE}ℹ ACTION REQUIRED: Save the keys to your local machine:${NC}" + echo -e "${CYAN}1. Save the PRIVATE key to ~/.ssh/$USERNAME_key:${NC}" + echo "------------------ BEGIN PRIVATE KEY ------------------" + cat "$TEMP_KEY_FILE" + echo "------------------- END PRIVATE KEY -------------------" + echo + echo -e "${CYAN}2. Save the PUBLIC key to verify or use elsewhere:${NC}" + echo "------------------ BEGIN PUBLIC KEY -------------------" + cat "$SSH_DIR/id_ed25519.pub" + echo "------------------- END PUBLIC KEY --------------------" + echo + echo -e "${CYAN}3. On your local machine, set permissions for the private key:${NC}" + echo -e "${CYAN} chmod 600 ~/.ssh/$USERNAME_key${NC}" + echo -e "${CYAN}4. Connect to the server using:${NC}" + echo -e "${CYAN} ssh -i ~/.ssh/$USERNAME_key -p $SSH_PORT $USERNAME@$SERVER_IP${NC}" + echo + echo -e "${PURPLE}ℹ The private key file ($TEMP_KEY_FILE) will be deleted after this step.${NC}" + read -rp "$(echo -e "${CYAN}Press Enter after you have saved the keys securely...${NC}")" + rm -f "$TEMP_KEY_FILE" + print_info "Temporary key file deleted." + + LOCAL_KEY_ADDED=true + fi print_success "User '$USERNAME' created." else print_info "Using existing user: $USERNAME" USER_HOME=$(getent passwd "$USERNAME" | cut -d: -f6) SSH_DIR="$USER_HOME/.ssh" AUTH_KEYS="$SSH_DIR/authorized_keys" + # Check if authorized_keys exists and has valid keys + if [[ ! -s "$AUTH_KEYS" || ! $(grep -E '^(ssh-rsa|ecdsa-sha2-nistp256|ecdsa-sha2-nistp384|ecdsa-sha2-nistp521|ssh-ed25519) ' "$AUTH_KEYS" 2>/dev/null) ]]; then + print_warning "No valid SSH keys found in $AUTH_KEYS for existing user '$USERNAME'." + print_info "You must manually add a public key to $AUTH_KEYS to enable SSH access." + log "No valid SSH keys found for existing user '$USERNAME'." + fi fi print_info "Adding '$USERNAME' to sudo group..." @@ -469,7 +537,7 @@ configure_system() { print_info "Configuring timezone..." while true; do - read -rp "$(echo -e "${CYAN}Enter desired timezone (e.g., Etc/UTC, America/New_York) [Etc/UTC]: ${NC}")" TIMEZONE + read -rp "$(echo -e "${CYAN}Enter desired timezone (e.g., Europe/London, America/New_York) [Etc/UTC]: ${NC}")" TIMEZONE TIMEZONE=${TIMEZONE:-Etc/UTC} if validate_timezone "$TIMEZONE"; then if [[ $(timedatectl status | grep "Time zone" | awk '{print $3}') != "$TIMEZONE" ]]; then From 9f3c91cfa72b3b0038146579cea5565b875d0297 Mon Sep 17 00:00:00 2001 From: buildplan Date: Wed, 2 Jul 2025 16:36:56 +0100 Subject: [PATCH 2/8] update hash --- du_setup.sh.sha256 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/du_setup.sh.sha256 b/du_setup.sh.sha256 index 26b7ddf..5448398 100644 --- a/du_setup.sh.sha256 +++ b/du_setup.sh.sha256 @@ -1 +1 @@ -e40b6015951c9d1f14b50ad3f923cc29d644dfcef982cb8543830f6cc8e573c3 du_setup.sh +891eb9bf1e1c2b51c9ba008d330612cade70a2c929e033dbd570259fa30ff33d du_setup.sh From 238fe76758046f1a99c830272c95f4d4f8f92f1e Mon Sep 17 00:00:00 2001 From: buildplan Date: Wed, 2 Jul 2025 16:37:20 +0100 Subject: [PATCH 3/8] update hash and version --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index e2dd214..7050bc2 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Debian & Ubuntu Server Setup & Hardening Script -**Version:** v0.54 +**Version:** v0.55 **Last Updated:** 2025-07-02 @@ -75,7 +75,7 @@ sha256sum du_setup.sh Compare the output hash to the one below. They must match exactly. -`e40b6015951c9d1f14b50ad3f923cc29d644dfcef982cb8543830f6cc8e573c3` +`891eb9bf1e1c2b51c9ba008d330612cade70a2c929e033dbd570259fa30ff33d` ### 3\. Run the Script From d15280f682728f7381f0e07563c12d3b93c3896e Mon Sep 17 00:00:00 2001 From: buildplan Date: Wed, 2 Jul 2025 17:25:17 +0100 Subject: [PATCH 4/8] fix add user --- du_setup.sh | 37 ++++++++++++++++++++++++------------- 1 file changed, 24 insertions(+), 13 deletions(-) diff --git a/du_setup.sh b/du_setup.sh index 7f4b94d..75bbe0c 100644 --- a/du_setup.sh +++ b/du_setup.sh @@ -367,7 +367,12 @@ install_packages() { setup_user() { print_section "User Management" - local USER_HOME SSH_DIR AUTH_KEYS PASS1 PASS2 SSH_PUBLIC_KEY + local USER_HOME SSH_DIR AUTH_KEYS PASS1 PASS2 SSH_PUBLIC_KEY TEMP_KEY_FILE + + if [[ -z "$USERNAME" ]]; then + print_error "USERNAME variable is not set. Cannot proceed with user setup." + exit 1 + fi if [[ $USER_EXISTS == false ]]; then print_info "Creating user '$USERNAME'..." @@ -449,6 +454,15 @@ setup_user() { print_info "No local SSH key provided. Generating a new key pair for '$USERNAME'." log "User opted not to provide a local SSH key. Generating a new one." + if ! command -v ssh-keygen >/dev/null 2>&1; then + print_error "ssh-keygen not found. Please install openssh-client." + exit 1 + fi + if [[ ! -w /tmp ]]; then + print_error "Cannot write to /tmp. Unable to create temporary key file." + exit 1 + fi + mkdir -p "$SSH_DIR" chmod 700 "$SSH_DIR" chown "$USERNAME:$USERNAME" "$SSH_DIR" @@ -462,8 +476,8 @@ setup_user() { print_success "SSH key generated and added to authorized_keys." log "Generated and added SSH key for '$USERNAME'." - # Save private key to a temporary file for secure display - local TEMP_KEY_FILE="/tmp/$USERNAME_ssh_key_$(date +%s)" + TEMP_KEY_FILE="/tmp/${USERNAME}_ssh_key_$(date +%s)" + trap 'rm -f "$TEMP_KEY_FILE" 2>/dev/null' EXIT cp "$SSH_DIR/id_ed25519" "$TEMP_KEY_FILE" chmod 600 "$TEMP_KEY_FILE" chown root:root "$TEMP_KEY_FILE" @@ -473,26 +487,24 @@ setup_user() { echo -e "${YELLOW}⚠ Anyone with the private key can access your server. Secure it immediately.${NC}" echo echo -e "${PURPLE}ℹ ACTION REQUIRED: Save the keys to your local machine:${NC}" - echo -e "${CYAN}1. Save the PRIVATE key to ~/.ssh/$USERNAME_key:${NC}" - echo "------------------ BEGIN PRIVATE KEY ------------------" + echo -e "${CYAN}1. Save the PRIVATE key to ~/.ssh/${USERNAME}_key:${NC}" + echo "${RED} ==PRIVATE KEY BELOW THIS LINE== ${NC}" cat "$TEMP_KEY_FILE" - echo "------------------- END PRIVATE KEY -------------------" + echo "${RED} ^^^^ PRIVATE KEY ABOVE THIS LINE ^^^^^ ${NC}" echo echo -e "${CYAN}2. Save the PUBLIC key to verify or use elsewhere:${NC}" - echo "------------------ BEGIN PUBLIC KEY -------------------" + echo "-----SSH PUBLIC KEY-----" cat "$SSH_DIR/id_ed25519.pub" - echo "------------------- END PUBLIC KEY --------------------" + echo "-----SSH PUBLIC KEY-----" echo echo -e "${CYAN}3. On your local machine, set permissions for the private key:${NC}" - echo -e "${CYAN} chmod 600 ~/.ssh/$USERNAME_key${NC}" + echo -e "${CYAN} chmod 600 ~/.ssh/${USERNAME}_key${NC}" echo -e "${CYAN}4. Connect to the server using:${NC}" - echo -e "${CYAN} ssh -i ~/.ssh/$USERNAME_key -p $SSH_PORT $USERNAME@$SERVER_IP${NC}" + echo -e "${CYAN} ssh -i ~/.ssh/${USERNAME}_key -p $SSH_PORT $USERNAME@$SERVER_IP${NC}" echo echo -e "${PURPLE}ℹ The private key file ($TEMP_KEY_FILE) will be deleted after this step.${NC}" read -rp "$(echo -e "${CYAN}Press Enter after you have saved the keys securely...${NC}")" - rm -f "$TEMP_KEY_FILE" print_info "Temporary key file deleted." - LOCAL_KEY_ADDED=true fi print_success "User '$USERNAME' created." @@ -501,7 +513,6 @@ setup_user() { USER_HOME=$(getent passwd "$USERNAME" | cut -d: -f6) SSH_DIR="$USER_HOME/.ssh" AUTH_KEYS="$SSH_DIR/authorized_keys" - # Check if authorized_keys exists and has valid keys if [[ ! -s "$AUTH_KEYS" || ! $(grep -E '^(ssh-rsa|ecdsa-sha2-nistp256|ecdsa-sha2-nistp384|ecdsa-sha2-nistp521|ssh-ed25519) ' "$AUTH_KEYS" 2>/dev/null) ]]; then print_warning "No valid SSH keys found in $AUTH_KEYS for existing user '$USERNAME'." print_info "You must manually add a public key to $AUTH_KEYS to enable SSH access." From c1a25545f7449191852cecd337102fbfb841442b Mon Sep 17 00:00:00 2001 From: Ali Date: Wed, 2 Jul 2025 20:22:10 +0100 Subject: [PATCH 5/8] update hash --- README.md | 2 +- du_setup.sh | 37 +++++++++++++++++++++++++------------ du_setup.sh.sha256 | 2 +- 3 files changed, 27 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index 7050bc2..4f8a61a 100644 --- a/README.md +++ b/README.md @@ -75,7 +75,7 @@ sha256sum du_setup.sh Compare the output hash to the one below. They must match exactly. -`891eb9bf1e1c2b51c9ba008d330612cade70a2c929e033dbd570259fa30ff33d` +`e41a6ffcabd4eb30673aebe096de41f8cbbc9bb5824a509e9c1c41e4845ef78f` ### 3\. Run the Script diff --git a/du_setup.sh b/du_setup.sh index 75bbe0c..fb37a9f 100644 --- a/du_setup.sh +++ b/du_setup.sh @@ -54,14 +54,27 @@ set -euo pipefail # Exit on error, undefined vars, pipe failures # --- GLOBAL VARIABLES & CONFIGURATION --- -# Colors for output -RED='\033[0;31m' -GREEN='\033[0;32m' -YELLOW='\033[1;33m' -BLUE='\033[0;34m' -PURPLE='\033[0;35m' -CYAN='\033[0;36m' -NC='\033[0m' # No Color +# --- Colors for output --- +if command -v tput >/dev/null 2>&1 && tput setaf 1 >/dev/null 2>&1; then + RED=$(tput setaf 1) + GREEN=$(tput setaf 2) + YELLOW="$(tput bold)$(tput setaf 3)" + BLUE=$(tput setaf 4) + PURPLE=$(tput setaf 5) + CYAN=$(tput setaf 6) + BOLD=$(tput bold) + NC=$(tput sgr0) +else + RED='\033[0;31m' + GREEN='\033[0;32m' + YELLOW='\033[1;33m' + BLUE='\033[0;34m' + PURPLE='\033[0;35m' + CYAN='\033[0;36m' + NC='\033[0m' + BOLD='' +fi + # Script variables SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" @@ -488,14 +501,14 @@ setup_user() { echo echo -e "${PURPLE}ℹ ACTION REQUIRED: Save the keys to your local machine:${NC}" echo -e "${CYAN}1. Save the PRIVATE key to ~/.ssh/${USERNAME}_key:${NC}" - echo "${RED} ==PRIVATE KEY BELOW THIS LINE== ${NC}" + echo -e "${RED} vvvv PRIVATE KEY BELOW THIS LINE vvvv ${NC}" cat "$TEMP_KEY_FILE" - echo "${RED} ^^^^ PRIVATE KEY ABOVE THIS LINE ^^^^^ ${NC}" + echo -e "${RED} ^^^^ PRIVATE KEY ABOVE THIS LINE ^^^^^ ${NC}" echo echo -e "${CYAN}2. Save the PUBLIC key to verify or use elsewhere:${NC}" - echo "-----SSH PUBLIC KEY-----" + echo "====SSH PUBLIC KEY BELOW THIS LINE====" cat "$SSH_DIR/id_ed25519.pub" - echo "-----SSH PUBLIC KEY-----" + echo "====SSH PUBLIC KEY END====" echo echo -e "${CYAN}3. On your local machine, set permissions for the private key:${NC}" echo -e "${CYAN} chmod 600 ~/.ssh/${USERNAME}_key${NC}" diff --git a/du_setup.sh.sha256 b/du_setup.sh.sha256 index 5448398..636dc15 100644 --- a/du_setup.sh.sha256 +++ b/du_setup.sh.sha256 @@ -1 +1 @@ -891eb9bf1e1c2b51c9ba008d330612cade70a2c929e033dbd570259fa30ff33d du_setup.sh +e41a6ffcabd4eb30673aebe096de41f8cbbc9bb5824a509e9c1c41e4845ef78f du_setup.sh From 353dd5c1796421ec5e3a805bd5cfed481e634c0c Mon Sep 17 00:00:00 2001 From: Ali Date: Wed, 2 Jul 2025 22:09:11 +0100 Subject: [PATCH 6/8] update setup_user() --- du_setup.sh | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/du_setup.sh b/du_setup.sh index fb37a9f..530ba24 100644 --- a/du_setup.sh +++ b/du_setup.sh @@ -479,19 +479,28 @@ setup_user() { mkdir -p "$SSH_DIR" chmod 700 "$SSH_DIR" chown "$USERNAME:$USERNAME" "$SSH_DIR" - if ! sudo -u "$USERNAME" ssh-keygen -t ed25519 -f "$SSH_DIR/id_ed25519" -N "" -q; then - print_error "Failed to generate SSH key for '$USERNAME'." + + # Generate user key pair for login + if ! sudo -u "$USERNAME" ssh-keygen -t ed25519 -f "$SSH_DIR/id_ed25519_user" -N "" -q; then + print_error "Failed to generate user SSH key for '$USERNAME'." exit 1 fi - cat "$SSH_DIR/id_ed25519.pub" >> "$AUTH_KEYS" + cat "$SSH_DIR/id_ed25519_user.pub" >> "$AUTH_KEYS" chmod 600 "$AUTH_KEYS" chown "$USERNAME:$USERNAME" "$AUTH_KEYS" print_success "SSH key generated and added to authorized_keys." - log "Generated and added SSH key for '$USERNAME'." + log "Generated and added user SSH key for '$USERNAME'." + + if ! sudo -u "$USERNAME" ssh-keygen -t ed25519 -f "$SSH_DIR/id_ed25519_server" -N "" -q; then + print_error "Failed to generate server SSH key for '$USERNAME'." + exit 1 + fi + print_success "Server SSH key generated (not shared)." + log "Generated server SSH key for '$USERNAME'." TEMP_KEY_FILE="/tmp/${USERNAME}_ssh_key_$(date +%s)" trap 'rm -f "$TEMP_KEY_FILE" 2>/dev/null' EXIT - cp "$SSH_DIR/id_ed25519" "$TEMP_KEY_FILE" + cp "$SSH_DIR/id_ed25519_user" "$TEMP_KEY_FILE" chmod 600 "$TEMP_KEY_FILE" chown root:root "$TEMP_KEY_FILE" @@ -501,13 +510,13 @@ setup_user() { echo echo -e "${PURPLE}ℹ ACTION REQUIRED: Save the keys to your local machine:${NC}" echo -e "${CYAN}1. Save the PRIVATE key to ~/.ssh/${USERNAME}_key:${NC}" - echo -e "${RED} vvvv PRIVATE KEY BELOW THIS LINE vvvv ${NC}" + echo -e "${RED} vvvv PRIVATE KEY BELOW THIS LINE vvvv ${NC}" cat "$TEMP_KEY_FILE" - echo -e "${RED} ^^^^ PRIVATE KEY ABOVE THIS LINE ^^^^^ ${NC}" + echo -e "${RED} ^^^^ PRIVATE KEY ABOVE THIS LINE ^^^^^ ${NC}" echo echo -e "${CYAN}2. Save the PUBLIC key to verify or use elsewhere:${NC}" echo "====SSH PUBLIC KEY BELOW THIS LINE====" - cat "$SSH_DIR/id_ed25519.pub" + cat "$SSH_DIR/id_ed25519_user.pub" echo "====SSH PUBLIC KEY END====" echo echo -e "${CYAN}3. On your local machine, set permissions for the private key:${NC}" From f78b5adea0fa5f2394d464136d53eba5380b1394 Mon Sep 17 00:00:00 2001 From: Ali Date: Wed, 2 Jul 2025 22:39:07 +0100 Subject: [PATCH 7/8] update hash --- du_setup.sh.sha256 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/du_setup.sh.sha256 b/du_setup.sh.sha256 index 636dc15..9da0961 100644 --- a/du_setup.sh.sha256 +++ b/du_setup.sh.sha256 @@ -1 +1 @@ -e41a6ffcabd4eb30673aebe096de41f8cbbc9bb5824a509e9c1c41e4845ef78f du_setup.sh +e798fae8512483bfa1e3b26950cc99516c87e43ff95ee0e600c8d71ba8ccde91 du_setup.sh From 3d0f053080a7ceefd7605d9e7ae7d6c81eb98627 Mon Sep 17 00:00:00 2001 From: Ali Date: Wed, 2 Jul 2025 22:39:50 +0100 Subject: [PATCH 8/8] updated with new hash --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 4f8a61a..8abc0f5 100644 --- a/README.md +++ b/README.md @@ -75,7 +75,7 @@ sha256sum du_setup.sh Compare the output hash to the one below. They must match exactly. -`e41a6ffcabd4eb30673aebe096de41f8cbbc9bb5824a509e9c1c41e4845ef78f` +`e798fae8512483bfa1e3b26950cc99516c87e43ff95ee0e600c8d71ba8ccde91` ### 3\. Run the Script