diff options
Diffstat (limited to 'satellit_installer/static_files/system')
-rw-r--r-- | satellit_installer/static_files/system/etc/sudoers.d/openslx-overrides | 1 | ||||
-rw-r--r-- | satellit_installer/static_files/system/etc/systemd/system/firstboot.service | 7 | ||||
-rw-r--r-- | satellit_installer/static_files/system/etc/tmate.conf (renamed from satellit_installer/static_files/system/root/.tmate.conf) | 0 | ||||
-rw-r--r-- | satellit_installer/static_files/system/etc/vim/vimrc.local | 7 | ||||
-rw-r--r-- | satellit_installer/static_files/system/opt/openslx/bashrc.inc | 13 | ||||
-rwxr-xr-x | satellit_installer/static_files/system/opt/openslx/firstboot.sh (renamed from satellit_installer/static_files/system/root/installer/rclocal_script.sh) | 53 | ||||
-rwxr-xr-x | satellit_installer/static_files/system/opt/openslx/firstrun.sh | 52 | ||||
-rwxr-xr-x | satellit_installer/static_files/system/root/installer/firstrun_script.sh | 59 | ||||
-rwxr-xr-x | satellit_installer/static_files/system/usr/local/bin/netsetup (renamed from satellit_installer/static_files/system/usr/local/sbin/netsetup) | 5 |
9 files changed, 114 insertions, 83 deletions
diff --git a/satellit_installer/static_files/system/etc/sudoers.d/openslx-overrides b/satellit_installer/static_files/system/etc/sudoers.d/openslx-overrides new file mode 100644 index 0000000..6123bfd --- /dev/null +++ b/satellit_installer/static_files/system/etc/sudoers.d/openslx-overrides @@ -0,0 +1 @@ +openslx ALL=(root) NOPASSWD: /usr/local/bin/netsetup diff --git a/satellit_installer/static_files/system/etc/systemd/system/firstboot.service b/satellit_installer/static_files/system/etc/systemd/system/firstboot.service index a21ad61..f19b51a 100644 --- a/satellit_installer/static_files/system/etc/systemd/system/firstboot.service +++ b/satellit_installer/static_files/system/etc/systemd/system/firstboot.service @@ -1,11 +1,12 @@ [Unit] Description=Initialization of bwLehrpool on first boot -ConditionFileIsExecutable=/root/installer/rclocal_script.sh -After=network.target mysql.service +ConditionFileIsExecutable=/opt/openslx/firstboot.sh +After=network.target mysql.service mariadb.service +Before=ssh.service lighttpd.service dmsd.service taskmanager.service [Service] Type=oneshot -ExecStart=/root/installer/rclocal_script.sh +ExecStart=/opt/openslx/firstboot.sh RemainAfterExit=yes RefuseManualStart=yes diff --git a/satellit_installer/static_files/system/root/.tmate.conf b/satellit_installer/static_files/system/etc/tmate.conf index 537f52c..537f52c 100644 --- a/satellit_installer/static_files/system/root/.tmate.conf +++ b/satellit_installer/static_files/system/etc/tmate.conf diff --git a/satellit_installer/static_files/system/etc/vim/vimrc.local b/satellit_installer/static_files/system/etc/vim/vimrc.local new file mode 100644 index 0000000..8e09d96 --- /dev/null +++ b/satellit_installer/static_files/system/etc/vim/vimrc.local @@ -0,0 +1,7 @@ +syntax on +set showmatch +set smartcase +set incsearch +set mouse= +set autoindent +set smartindent diff --git a/satellit_installer/static_files/system/opt/openslx/bashrc.inc b/satellit_installer/static_files/system/opt/openslx/bashrc.inc new file mode 100644 index 0000000..98711d4 --- /dev/null +++ b/satellit_installer/static_files/system/opt/openslx/bashrc.inc @@ -0,0 +1,13 @@ +ifname="$( ifconfig | grep -oEm1 '^e\w+' )" +slxip="$( ip -4 a show "$ifname" 2>/dev/null | grep -m1 '^\s*inet ' | awk '{print $2}' )" +[ -z "$slxip" ] && slxip="$( ip -4 a | grep '^\s*inet '| grep -vFm1 ' 127.' | awk '{print $2}' )" +slxip=${slxip%/*} +[ -z "$slxip" ] && read -r _ _ slxip _ <<<"$SSH_CONNECTION" +[ -z "$slxip" ] && slxip="noip???" +slxcol=32 +(( UID == 0 )) && slxcol=31 +PS1="\[\033[01;${slxcol}m\]\u\[\033[00m\]@\[\033[01;32m\]\h \[\033[00m\]($slxip) +\[\033[01;34m\]\w\[\033[00m\] # " +unset ifname slxip slxcol +# We always want to run this as root; sudo is a noop in case we already are. +alias tmate='sudo tmate' diff --git a/satellit_installer/static_files/system/root/installer/rclocal_script.sh b/satellit_installer/static_files/system/opt/openslx/firstboot.sh index 577a743..7ef2bfc 100755 --- a/satellit_installer/static_files/system/root/installer/rclocal_script.sh +++ b/satellit_installer/static_files/system/opt/openslx/firstboot.sh @@ -5,13 +5,13 @@ perror() { echo "[ERROR] $*" [ "$MY_PID" != "$$" ] && kill "$MY_PID" - if ! grep -q "rclocal_script.sh has thrown an error" /etc/motd; then + if ! grep -q "firstboot.sh has thrown an error" /etc/motd; then cat <<-EOF >> /etc/motd WARNING! - rclocal_script.sh has thrown an error! - Please read /root/init.log and take appropriate measures! + firstboot.sh has thrown an error! + Please read /opt/openslx/firstrun.log and take appropriate measures! This server may not work correctly! EOF @@ -20,13 +20,14 @@ perror() { } # Logfile -exec &> /root/init.log +exec &> /opt/openslx/firstrun.log echo "+++ $(basename "$0") gestartet: $(date "+%Y-%m-%d %H:%m:%S")" -[ -r "/root/installer/config" ] || perror "Installationsfehler: Keine firstrun-config gefunden!" - -source "/root/installer/config" || perror "Fehler beim Sourcen der firstrun-config." +conf="/opt/openslx/config.install" +[ -s "$conf" ] || perror "Config file $conf missing" +bash -n "$conf" || perror "Config file $conf has errors" +. "$conf" generate_password() { tr -dc _A-Za-z0-9 < /dev/urandom | head -c 16 @@ -47,7 +48,7 @@ patchfiles() { echo "+++ Lösche alte ssh-Schlüssel ..." rm -f -- /etc/ssh/ssh_host_*key* 2>/dev/null -echo "+++ Generating new ssh keys..." +echo "+++ Generating new sshd keys..." ssh-keygen -f /etc/ssh/ssh_host_rsa_key -N "" -t rsa -q ssh-keygen -f /etc/ssh/ssh_host_dsa_key -N "" -t dsa -q ssh-keygen -f /etc/ssh/ssh_host_ecdsa_key -N "" -t ecdsa -q @@ -82,27 +83,37 @@ echo "+++ Dienste werden aktiviert..." # Enable bwLehrpool related services for i in dmsd.service taskmanager.service; do - systemctl enable "$i" || echo "Warnung - konnte systemd-Service $i nicht aktivieren!" + systemctl enable "$i" || perror "Konnte systemd-Service $i nicht aktivieren!" systemctl --no-block start "$i" done -# Write MOTD -cat > /etc/motd <<THEREDOC - *** bwLehrpool Satelliten-Server, Version $VERSION *** - Eingerichtet am $(date) - -Wenn Sie sich als root eingeloggt haben, haben Sie nun folgende Optionen: -netsetup - Konfiguriert das Netzwerk-Interface neu (DHCP oder statisch) -reboot - System neustarten -poweroff - System herunterfahren +# root ssh key +echo "" +echo "Erzeuge SSH Schlüsselpaar für root" +echo "" -Andere Modifikationen am System sind in der Regel nicht notwendig. +KEY=~/.ssh/id_rsa +rm -f -- "$KEY" "${KEY}.pub" +ssh-keygen -q -N "" -f "$KEY" \ + || echo "Achtung: Erzeugung Schlüsselpaar $KEY fehlgeschlagen." +# Write MOTD +cat > /etc/motd <<THEREDOC +> *** bwLehrpool Satelliten-Server, Version $VERSION *** +> Eingerichtet am $(date) +> +> Wenn Sie sich als 'openslx' eingeloggt haben, haben Sie nun folgende Optionen: +> netsetup - Konfiguriert das Netzwerk-Interface neu (DHCP oder statisch) +> sudo reboot - System neustarten +> sudo poweroff - System herunterfahren +> +> Andere Modifikationen am System sind in der Regel nicht notwendig. +> THEREDOC echo "+++ Daten des Firstrun-Scripts werden aufgeräumt..." -unlink "/root/installer/config" -unlink "/root/installer/rclocal_script.sh" +unlink "/opt/openslx/firstboot.sh" +unlink "$conf" unlink "/etc/systemd/system/firstboot.service" unlink "/etc/systemd/system/multi-user.target.wants/firstboot.service" diff --git a/satellit_installer/static_files/system/opt/openslx/firstrun.sh b/satellit_installer/static_files/system/opt/openslx/firstrun.sh new file mode 100755 index 0000000..fc22959 --- /dev/null +++ b/satellit_installer/static_files/system/opt/openslx/firstrun.sh @@ -0,0 +1,52 @@ +#!/bin/bash + +cat <<-HEREDOC +> +> Willkommen zur Grundkonfiguration des bwLehrpool-Satellitenservers. +> +> Diese einmalige Konfiguration dient dazu, das Passwort des System-Users +> "openslx" zu ändern (für Terminal, SSH), sowie ggf. die +> Netzwerkkonfiguration des Servers anzupassen. +> +HEREDOC + +while ! passwd; do + echo "> Das hat nicht geklappt. Bitte noch einmal versuchen:" +done + +cat <<-SUPPE +> +> Erzeuge SSH Schlüsselpaar +> +SUPPE + +KEY=~/.ssh/id_rsa + +rm -f -- "$KEY" "${KEY}.pub" +ssh-keygen -q -N "" -f "$KEY" \ + || echo "> Achtung: Erzeugung Schlüsselpaar $KEY fehlgeschlagen." + +cat <<-HERRR +> +> Abschließend können Sie festlegen, ob der Server seine IP-Konfiguration +> per DHCP erhält, oder eine statische Konfiguration verwendet wird. +> +HERRR + +netsetup + +cat <<YONDERDOC +> +> Damit ist die Einrichtung abgeschlossen. Die weitere Konfiguration des +> bwLehrpool-Systems erfolgt über die Webschnittstelle, die über die +> IP-Addresse oder den Hostnamen des Servers erreichbar ist. +> +> Bitte geben Sie zum Abschluss noch einmal das oben neu festgelegte +> Passwort ein. Der Server wird sich daraufhin neustarten und ist +> dann betriebsbereit. +> +YONDERDOC + +unlink /opt/openslx/firstrun.sh + +sudo reboot diff --git a/satellit_installer/static_files/system/root/installer/firstrun_script.sh b/satellit_installer/static_files/system/root/installer/firstrun_script.sh deleted file mode 100755 index 343be4d..0000000 --- a/satellit_installer/static_files/system/root/installer/firstrun_script.sh +++ /dev/null @@ -1,59 +0,0 @@ -#!/bin/bash - -cat <<-HEREDOC -Willkommen zur Grundkonfiguration des bwLehrpool-Satellitenservers. - -Diese einmalige Konfiguration dient dazu, das root-Passwort des Servers -zu ändern, sowie ggf. die Netzwerkkonfiguration des Servers anzupassen. - -Aus Sicherheitsgründen ist es dringend zu empfehlen, das root-Passwort -im Produktivbetrieb zu ändern! - -HEREDOC - -ERR=1 -while [ "$ERR" -ne 0 ]; do - passwd - ERR=$? -done - -echo "Abschließend können Sie festlegen, ob der Server seine IP-Konfiguration" -echo "per DHCP erhält, oder eine statische Konfiguration verwendet wird." -/usr/local/sbin/netsetup - -cat <<SOMEWHEREDOC - -Nun fehlt nur noch das Setzen eines root-ssh-Schlüssels für tmate, -wenn noch nicht vorhanden. - -SOMEWHEREDOC - -KEY=$(awk '/^\s*IdentityFile\s+.+$/ {print $2}' /etc/ssh/ssh_config) -[ -z "$KEY" ] && KEY="/root/.ssh/id_rsa" - -if [ -f "$KEY" ]; then - echo "Schlüssel $KEY existiert bereits, keine weitere Aktion." -else - ssh-keygen -q -N "" -f "$KEY" - [ "$?" -ne 0 ] && echo "Achtung: Erzeugung Schlüsselpaar $KEY fehlgeschlagen." -fi - -cat <<YONDERDOC - -Damit ist die Einrichtung abgeschlossen. Die weitere Konfiguration des -bwLehrpool-Systems erfolgt über die Webschnittstelle, die über die -IP-Addresse oder den Hostnamen des Servers erreichbar ist. - -Bitte überprüfen Sie die Logdatei /root/init.log auf eventuelle Fehler! - -Der Server wird sich jetzt neustarten. - -YONDERDOC - -sleep 4 - -sed -i "/firstrun_script.sh/d" /root/.profile -unlink /root/installer/firstrun_script.sh -rmdir /root/installer 2>/dev/null || \ - echo "Achtung: Konnte Verzeichnis /root/installer nicht löschen - Verzeichnis nicht leer." -reboot diff --git a/satellit_installer/static_files/system/usr/local/sbin/netsetup b/satellit_installer/static_files/system/usr/local/bin/netsetup index 6616c50..a824739 100755 --- a/satellit_installer/static_files/system/usr/local/sbin/netsetup +++ b/satellit_installer/static_files/system/usr/local/bin/netsetup @@ -1,5 +1,10 @@ #!/bin/bash +if [ "$UID" != 0 ]; then + exec sudo "$0" "$@" + exit 1 +fi + DATUM=$(date +%Y%m%d_%H%M%S) INTERFACES="/etc/network/interfaces" ETHALIAS=$( ifconfig -a | grep -oEm1 '^e\w+' ) |