From 680c21db7695e40f8de28918fea2c57fc7dd7563 Mon Sep 17 00:00:00 2001 From: Siphonight Date: Tue, 21 Jan 2025 14:41:34 +0100 Subject: [PATCH] Ajout de la modification des fichiers d'authentification. --- Dockerfile | 2 +- admin_menu.sh | 19 +++++++++++++++++-- entrypoint.sh | 2 +- 3 files changed, 19 insertions(+), 4 deletions(-) diff --git a/Dockerfile b/Dockerfile index 96bb37e..b19880f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -4,7 +4,7 @@ FROM alpine:3.20.0 AS monosphere-builder #Setting default settings, please change them at run -ARG MONOSPHERE_VERSION="2.1.6 Alpha" +ARG MONOSPHERE_VERSION="2.2.6 Alpha" #Defining build settings diff --git a/admin_menu.sh b/admin_menu.sh index 0340259..c30fd08 100644 --- a/admin_menu.sh +++ b/admin_menu.sh @@ -65,7 +65,22 @@ function servers_access_control() { case "${choice}" in "1") - echo -e "Option non implémentée pour le moment.\nElle sera ajoutée lors d'une prochaine mise à jour." + Authorization_Files_List=$(find /opt/public/servers/. -type f ! -name 'authorized_servers.txt' | cut -d "/" -f 6) + echo -e "Le ficher d'authentification qui sera crée ou modifié sera placé dans le répertoire \"/opt/public/servers/\" du bastion.\nle nom de ce dernier ne doit pas comporter de \"/\", être vide ou être égal à \"authorized_servers.txt\"." + echo -e "Ci dessous la liste des fichiers d'authentification existants :\n${Authorization_Files_List}" + read -r -p 'Entrez le nom du fichier: ' File_Name + + if [[ $(echo "${File_Name}" | grep -o "/") == "/" ]] || [[ $(echo "${File_Name}" | grep -o "*") == "*" ]] || [[ -z ${File_Name} ]] || [[ ${File_Name} == "authorized_servers.txt" ]]; then + echo 'Le nom du fichier ne doit pas contenir les caractères "/" ou "*", être vide ou ce nommer "authorized_servers.txt". Veuillez modifier ce dernier.' + else + echo "Assurez vous que le fichier créé ou modifié comporte bien uniquement la clé privée ou le mot de passe nécessaire à la connexion." + sleep 5s + sudo nano /opt/public/servers/"${File_Name}" + if [[ $(cat "/opt/public/servers/${File_Name}") == "" ]]; then + echo "Le fichier modifié \"${File_Name}\" est vide. Ce dernier sera supprimé." + rm -rf /opt/public/servers/"${File_Name}" + fi + fi ;; "2") @@ -157,7 +172,7 @@ function main_menu() { # "adminscontrol_admins") admin_rights_control - ;; + ;; # # "cluster_admins") diff --git a/entrypoint.sh b/entrypoint.sh index 301336d..a9390a1 100644 --- a/entrypoint.sh +++ b/entrypoint.sh @@ -65,7 +65,7 @@ for userinfo in ${userfile}; do 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 - echo "${user} ALL=(ALL) NOPASSWD: /usr/bin/nano /opt/public/servers/authorized_servers.txt" | sudo EDITOR='tee -a' visudo + echo "${user} ALL=(ALL) NOPASSWD: /usr/bin/nano /opt/public/servers/*" | sudo EDITOR='tee -a' visudo echo "${user} ALL=(ALL) NOPASSWD: /usr/bin/nano /opt/public/rights/admin_rights.txt" | sudo EDITOR='tee -a' visudo fi mkdir /home/"${user}"