From 03c31f8ad613383fa39e00a460cb870e70e6bbca Mon Sep 17 00:00:00 2001 From: Cody Lee Date: Fri, 23 Dec 2022 12:12:29 -0600 Subject: [PATCH] ensure user is setup in preinstall hook --- .goreleaser.yaml | 72 +++++++++++++++++++++++++++++++++++++++-- scripts/post-install.sh | 15 --------- scripts/pre-install.sh | 18 +++++++++++ 3 files changed, 87 insertions(+), 18 deletions(-) create mode 100755 scripts/pre-install.sh diff --git a/.goreleaser.yaml b/.goreleaser.yaml index 47e70c99..00c6feda 100644 --- a/.goreleaser.yaml +++ b/.goreleaser.yaml @@ -316,79 +316,145 @@ nfpms: - src: examples/up.conf.example dst: /etc/unpoller/up.conf.example type: config + file_info: + mode: 0640 + owner: unpoller + group: unpoller - src: examples/up.json.example dst: /etc/unpoller/up.json.example type: config + file_info: + mode: 0640 + owner: unpoller + group: unpoller - src: examples/up.yaml.example dst: /etc/unpoller/up.yaml.example type: config + file_info: + mode: 0640 + owner: unpoller + group: unpoller # copy example by default to real locations, people can override, cnfg uses this. - src: examples/up.conf.example dst: /etc/unpoller/up.conf type: config|noreplace + file_info: + mode: 0640 + owner: unpoller + group: unpoller # common useful info - src: "README.html" dst: /etc/unpoller/readme.html type: config + file_info: + mode: 0644 + owner: unpoller + group: unpoller - src: "unpoller_manual.html" dst: /etc/unpoller/manual.html type: config + file_info: + mode: 0644 + owner: unpoller + group: unpoller # man pages - src: unpoller.1.gz dst: /usr/share/man/man1/unpoller.1.gz - type: man + file_info: + mode: 0644 + owner: unpoller + group: unpoller - src: LICENSE dst: /usr/share/doc/unpoller/LICENSE - type: man + file_info: + mode: 0644 + owner: unpoller + group: unpoller - src: unpoller_manual.html dst: /usr/share/doc/unpoller/unpoller_manual.html - type: man + file_info: + mode: 0644 + owner: unpoller + group: unpoller # systemd service - src: init/systemd/unpoller.service dst: /etc/systemd/system/unpoller.service type: config + file_info: + mode: 0644 + owner: unpoller + group: unpoller # freebsd rc service - src: init/bsd/freebsd.rc.d dst: /usr/local/etc/rc.d/unpoller type: config + file_info: + mode: 0644 + owner: unpoller + group: unpoller # web server statics - dst: /usr/local/lib/unpoller/web/static/ type: dir file_info: mode: 0755 + owner: unpoller + group: unpoller - dst: /usr/local/lib/unpoller/web/static/css type: dir file_info: mode: 0755 + owner: unpoller + group: unpoller - dst: /usr/local/lib/unpoller/web/static/images type: dir file_info: mode: 0755 + owner: unpoller + group: unpoller - dst: /usr/local/lib/unpoller/web/static/js type: dir file_info: mode: 0755 + owner: unpoller + group: unpoller - src: init/webserver/index.html dst: /usr/local/lib/unpoller/web/static/index.html type: config + file_info: + mode: 0644 + owner: unpoller + group: unpoller - src: init/webserver/static/css/* dst: /usr/local/lib/unpoller/web/static/css type: config + file_info: + mode: 0644 + owner: unpoller + group: unpoller - src: init/webserver/static/images/* dst: /usr/local/lib/unpoller/web/static/images type: config + file_info: + mode: 0644 + owner: unpoller + group: unpoller - src: init/webserver/static/js/* dst: /usr/local/lib/unpoller/web/static/js type: config + file_info: + mode: 0644 + owner: unpoller + group: unpoller # signing scripts: + preinstall: "scripts/pre-install.sh" postinstall: "scripts/post-install.sh" preremove: "scripts/pre-remove.sh" postremove: "scripts/post-remove.sh" diff --git a/scripts/post-install.sh b/scripts/post-install.sh index f400169a..f1240bee 100755 --- a/scripts/post-install.sh +++ b/scripts/post-install.sh @@ -24,21 +24,6 @@ OS="$(uname -s)" cleanInstall() { printf "\033[32m Post Install of an clean install\033[0m\n" # Step 3 (clean install), enable the service in the proper way for this platform - - - if [ "${OS}" = "Linux" ]; then - # Make a user and group for this app, but only if it does not already exist. - id unpoller >/dev/null 2>&1 || \ - useradd --system --user-group --no-create-home --home-dir /tmp --shell /bin/false unpoller - elif [ "${OS}" = "OpenBSD" ]; then - id unpoller >/dev/null 2>&1 || \ - useradd -g =uid -d /tmp -s /bin/false unpoller - elif [ "${OS}" = "FreeBSD" ]; then - id unpoller >/dev/null 2>&1 || \ - pw useradd unpoller -d /tmp -w no -s /bin/false - else - echo "Unknown OS: ${OS}, please add system user unpoller manually." - fi if [ "${use_systemctl}" = "False" ]; then if command -V chkconfig >/dev/null 2>&1; then diff --git a/scripts/pre-install.sh b/scripts/pre-install.sh new file mode 100755 index 00000000..1df8672e --- /dev/null +++ b/scripts/pre-install.sh @@ -0,0 +1,18 @@ +#!/bin/sh + + +OS="$(uname -s)" + +if [ "${OS}" = "Linux" ]; then + # Make a user and group for this app, but only if it does not already exist. + id unpoller >/dev/null 2>&1 || \ + useradd --system --user-group --no-create-home --home-dir /tmp --shell /bin/false unpoller +elif [ "${OS}" = "OpenBSD" ]; then + id unpoller >/dev/null 2>&1 || \ + useradd -g =uid -d /tmp -s /bin/false unpoller +elif [ "${OS}" = "FreeBSD" ]; then + id unpoller >/dev/null 2>&1 || \ + pw useradd unpoller -d /tmp -w no -s /bin/false +else + echo "Unknown OS: ${OS}, please add system user unpoller manually." +fi