Ajout de vérification de la présence des configurations dans les fichiers de sshd et de sudoers afin de ne pas répéter l'inscription des paramètres à chaque redémarrage du conteneur. Ce problème n'apparaissait pas lors des redéploiements du conteneur, uniquement lors des redémarrages. Correction également d'un bug faisant crasher SSHD lors d'un redémarrage du conteneur et empêchant l'execution du service.
91 lines
2.9 KiB
Bash
91 lines
2.9 KiB
Bash
#!/bin/bash
|
|
|
|
if ! grep -qo "^Port ${PORT}$" /etc/ssh/sshd_config; then
|
|
echo "Génération de la configuration de SSH pour le bastion Monosphere..."
|
|
echo "Port ${PORT}" >> /etc/ssh/sshd_config
|
|
echo "#Last authentication configurations" >> /etc/ssh/sshd_config
|
|
if [ "${PASSWORD_AUTH}" -eq "1" ]; then
|
|
echo "PasswordAuthentication yes" >> /etc/ssh/sshd_config
|
|
else
|
|
echo "PasswordAuthentication no" >> /etc/ssh/sshd_config
|
|
fi
|
|
if [ "${KEY_AUTH}" -eq "1" ]; then
|
|
echo "PubkeyAuthentication yes" >> /etc/ssh/sshd_config
|
|
else
|
|
echo "PubkeyAuthentication no" >> /etc/ssh/sshd_config
|
|
fi
|
|
fi
|
|
sshd -t
|
|
echo "Configuration du service SSHD de Monosphere vérifiée."
|
|
|
|
echo "Monosphere active et execute les scripts personalisés"
|
|
chown -R root:root /opt/custom
|
|
chmod 700 /opt/custom/scripts/*.sh
|
|
bash /opt/custom/scripts/*.sh
|
|
echo "Execution des scripts personalisés terminée."
|
|
|
|
echo "Monosphere configure le répertoire public."
|
|
chown -R root:root /opt/public
|
|
chmod -R 755 /opt/public
|
|
echo "Répertoire public configuré."
|
|
|
|
#User accounts creation step
|
|
|
|
echo "Création des groupes d'utilisateurs."
|
|
if ! grep -q "bastionuser" /etc/group; then
|
|
addgroup bastionuser
|
|
fi
|
|
|
|
if ! grep -q "bastionadmin" /etc/group; then
|
|
addgroup bastionadmin
|
|
fi
|
|
echo "Fin de la création des groupes d'utilisateurs."
|
|
|
|
echo "Création des utilisateurs en cours..."
|
|
userfile=$(cat /root/scripts/users/bastion_users.txt)
|
|
for userinfo in $userfile; do
|
|
user=$(echo "$userinfo" | cut -d ';' -f 1)
|
|
is_bastion=$(echo "$userinfo" | cut -d ';' -f 2)
|
|
password=$(echo "$userinfo" | cut -d ';' -f 3)
|
|
setkeys=$(echo "$userinfo" | cut -d ';' -f 4)
|
|
|
|
adduser --disabled-password --gecos "" "$user" --shell /bin/bash
|
|
|
|
if [ "$is_bastion" -eq "1" ]; then
|
|
usermod -aG bastionuser "$user"
|
|
elif [ "$is_bastion" -eq "0" ]; then
|
|
usermod -aG bastionadmin "$user"
|
|
if ! grep -qo "^$user ALL=(ALL) NOPASSWD:" /etc/sudoers; then
|
|
echo "$user ALL=(ALL) NOPASSWD: /usr/local/bin/ttyplay*" | sudo EDITOR='tee -a' visudo
|
|
echo "$user ALL=(ALL) NOPASSWD: /bin/ls*" | sudo EDITOR='tee -a' visudo
|
|
fi
|
|
mkdir /home/"$user"
|
|
ln -s /opt/public/scripts/server_menu.sh /home/"$user"/server_menu.sh
|
|
fi
|
|
|
|
if [ "$password" != "0" ]; then
|
|
echo "$user:$password" | chpasswd
|
|
else
|
|
echo "$user:$user" | chpasswd
|
|
fi
|
|
|
|
if [ "$setkeys" -eq "1" ]; then
|
|
mkdir -p /home/"$user"/.ssh
|
|
chmod 700 /home/"$user"/.ssh
|
|
cp -r /root/scripts/users/"$user"/* /home/"$user"/.ssh/
|
|
chown -R "$user":"$user" /home/"$user"/.ssh
|
|
chmod 600 /home/"$user"/.ssh/*
|
|
fi
|
|
done
|
|
echo "Création des utilisateurs terminée."
|
|
echo "Monosphere a bien été configuré et démarré avec succès."
|
|
|
|
echo "Démarrage du service SSHD de Monosphere."
|
|
rc-status
|
|
rc-service sshd restart
|
|
|
|
echo "Le bastion Monosphere est désormais en marche."
|
|
|
|
# Keep the container running
|
|
tail -f /dev/null
|