summaryrefslogtreecommitdiffstats
path: root/satellit_installer/static_files/system
diff options
context:
space:
mode:
Diffstat (limited to 'satellit_installer/static_files/system')
-rw-r--r--satellit_installer/static_files/system/etc/sudoers.d/openslx-overrides1
-rw-r--r--satellit_installer/static_files/system/etc/systemd/system/firstboot.service7
-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.local7
-rw-r--r--satellit_installer/static_files/system/opt/openslx/bashrc.inc13
-rwxr-xr-xsatellit_installer/static_files/system/opt/openslx/firstboot.sh (renamed from satellit_installer/static_files/system/root/installer/rclocal_script.sh)53
-rwxr-xr-xsatellit_installer/static_files/system/opt/openslx/firstrun.sh52
-rwxr-xr-xsatellit_installer/static_files/system/root/installer/firstrun_script.sh59
-rwxr-xr-xsatellit_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+' )