diff --git a/servers/linux/config_adminSys.sh b/servers/linux/config_adminSys.sh index f6883b5..de8dba7 100755 --- a/servers/linux/config_adminSys.sh +++ b/servers/linux/config_adminSys.sh @@ -137,6 +137,7 @@ user $SMTP_USER password $SMTP_PASS EOF + # 2. Comparaison avec le fichier existant MSMTP_CONF="/etc/msmtprc" SHOULD_UPDATE=false @@ -145,7 +146,7 @@ if [ ! -f "$MSMTP_CONF" ]; then echo "📜 Le fichier $MSMTP_CONF n'existe pas. Création..." SHOULD_UPDATE=true else - # Comparaison du contenu (diff ignore les différences de droits, uniquement le texte) + # Comparaison du contenu if ! diff -q "$TMP_MSMTP" "$MSMTP_CONF" > /dev/null; then echo "🔄 La configuration a changé. Mise à jour de $MSMTP_CONF..." SHOULD_UPDATE=true @@ -154,17 +155,31 @@ else fi fi -# 3. Application si nécessaire + +# 3. Application et sécurisation if [ "$SHOULD_UPDATE" = true ]; then cp "$TMP_MSMTP" "$MSMTP_CONF" - chmod 600 "$MSMTP_CONF" - chown root:root "$MSMTP_CONF" + + # --- CORRECTIONS DES DROITS --- + # On donne le fichier au groupe msmtp pour permettre l'accès au binaire + chown root:msmtp "$MSMTP_CONF" + # 640 : Root lit/écrit, le groupe msmtp lit, les autres rien (sécurité du mot de passe) + chmod 640 "$MSMTP_CONF" + + # On s'assure que le binaire msmtp peut lire ce fichier quel que soit l'utilisateur + # Le bit 's' (setgid) permet à msmtp de prendre l'identité du groupe 'msmtp' + chmod g+s /usr/bin/msmtp + + # On règle le problème du log une fois pour toutes (lecture/écriture pour tous) + touch /var/log/msmtp.log + chown root:msmtp /var/log/msmtp.log + chmod 666 /var/log/msmtp.log fi # Nettoyage du fichier temporaire rm -f "$TMP_MSMTP" - +h flo # --- 6. INTERCEPTION GLOBALE (LE WRAPPER) --- echo "--- 6. Création du wrapper sendmail pour préfixer les objets ---" # On crée un script qui va modifier le sujet à la volée diff --git a/servers/linux/config_services.php b/servers/linux/config_services.php new file mode 100644 index 0000000..f7ba56f --- /dev/null +++ b/servers/linux/config_services.php @@ -0,0 +1,42 @@ +Retour"; + exit; +} + +// Récupération de tous les services installés +$allServices = []; +exec("systemctl list-unit-files --type=service --no-legend", $output); +foreach ($output as $line) { + $parts = preg_split('/\s+/', $line); + if (isset($parts[0])) $allServices[] = str_replace('.service', '', $parts[0]); +} + +// Lecture de la config actuelle +$currentConfig = file_exists($configFile) ? explode("\n", trim(file_get_contents($configFile))) : ["ssh", "fail2ban"]; +?> + + + +