diff --git a/AD.sh b/AD.sh new file mode 100644 index 0000000..ebac96f --- /dev/null +++ b/AD.sh @@ -0,0 +1,62 @@ +#!/bin/bash + +while true; do + echo "Gestion des comptes utilisateurs dans Samba AD" + echo "1. Créer un nouveau compte" + echo "2. Désactiver un compte" + echo "3. Supprimer un compte" + echo "4. Réinitialiser le mot de passe" + echo "5. Vérifier un compte" + echo "0. Quitter" + + read -p "Choisissez une option (1-5 ou 0): " choice + + case $choice in + 1) + read -p "Nom d'utilisateur: " username + read -p "Prénom de l'utilisateur: " first_name + read -p "Nom de famille de l'utilisateur: " last_name + samba-tool user create $username --given-name="$first_name" --surname="$last_name" + echo "Compte $username ($first_name $last_name) créé avec succès." + ;; + 2) + read -p "Nom d'utilisateur à désactiver: " username + read -p "Voulez-vous vraiment désactiver le compte $username ? (y/n): " confirmation + if [ "$confirmation" == "y" ]; then + samba-tool user disable $username + echo "Compte $username désactivé." + else + echo "Opération annulée." + fi + ;; + 3) + read -p "Nom d'utilisateur à supprimer: " username + read -p "Voulez-vous vraiment supprimer le compte $username ? (y/n): " confirmation + if [ "$confirmation" == "y" ]; then + samba-tool user delete $username + echo "Compte $username supprimé avec succès." + else + echo "Opération annulée." + fi + ;; + 4) + read -p "Nom d'utilisateur pour réinitialiser le mot de passe: " username + read -p "Définir un mot de passe par défaut ? (y/n): " default_password + samba-tool user setpassword $username --newpassword="${default_password}" --must-change-at-next-login + echo "Mot de passe réinitialisé pour le compte $username. L'utilisateur devra le changer au prochain démarrage." + ;; + 5) + read -p "Nom d'utilisateur: " username + bash ./CheckAccountOf.sh $username + pause + ;; + 0) + echo "Au revoir! Merci d'etre passé" + exit 0 + ;; + *) + echo "Choix invalide. Veuillez choisir une option de 1 à 5." + ;; + esac + +done diff --git a/AddAtThisGroups.sh b/AddAtThisGroups.sh new file mode 100644 index 0000000..96b5f2f --- /dev/null +++ b/AddAtThisGroups.sh @@ -0,0 +1,7 @@ +#!/bin/bash +read -p "Entrer l'utilisateur concerné : " login +for var in "$@" +do + samba-tool group addmembers "$var" $login +done + diff --git a/CheckAccountOf.sh b/CheckAccountOf.sh new file mode 100644 index 0000000..aa5d829 --- /dev/null +++ b/CheckAccountOf.sh @@ -0,0 +1,82 @@ +#!/bin/bash + +# Fonction pour vérifier la présence d'un binaire et l'installer si nécessaire +install_if_missing() { + local binary_name=$1 + + if ! command -v $binary_name > /dev/null; then + echo "Le binaire '$binary_name' n'est pas présent. Tentative d'installation..." + sudo apt update + sudo apt install -y $binary_name + + # Vérifier à nouveau si l'installation a réussi + if ! command -v $binary_name > /dev/null; then + echo "Erreur : Impossible d'installer le binaire '$binary_name'." + exit 1 + fi + fi +} + +# Vérifier et installer les binaires nécessaires +install_if_missing "samba-tool" +install_if_missing "ldapsearch" + +# Vérifier le nombre d'arguments +if [ "$#" -ne 1 ]; then + echo "Usage: $0 " + exit 1 +fi + +# Nom d'utilisateur à vérifier +utilisateur="$1" + +# Récupérer le DN (Distinguished Name) de l'utilisateur +dn=$(samba-tool user show "$utilisateur" | grep "distinguishedName" | awk '{print $NF}') + +# Vérifier si l'utilisateur existe +if [ -z "$dn" ]; then + echo "L'utilisateur '$utilisateur' n'existe pas." +else + # Récupérer la valeur de userAccountControl + user_account_control=$(samba-tool user show "$utilisateur" | grep "userAccountControl" | awk '{print $NF}') + + # Récupérer la valeur de badPwdCount + bad_pwd_count=$(samba-tool user show "$utilisateur" | grep "badPwdCount" | awk '{print $NF}') + + # Récupérer la valeur de Account lockout threshold (attempts) dans la politique des mots de passe du domaine + domain_lockout_threshold=$(samba-tool domain passwordsettings show | grep "Account lockout threshold (attempts)" | awk '{print $NF}') + + # Vérifier si le compte est activé ou désactivé + if [ $((user_account_control & 2)) -eq 2 ]; then + echo "Le compte de l'utilisateur '$utilisateur' est désactivé." + + # Proposer d'activer le compte + read -p "Voulez-vous activer le compte (oui/non)? " activate_choice + if [ "$activate_choice" == "oui" ]; then + # Activer le compte + samba-tool user enable "$utilisateur" + echo "Le compte de l'utilisateur '$utilisateur' a été activé." + else + echo "Le compte de l'utilisateur '$utilisateur' reste désactivé." + fi + else + echo "Le compte de l'utilisateur '$utilisateur' est activé." + + # Vérifier si le compte est verrouillé + if [ "$bad_pwd_count" -eq "$domain_lockout_threshold" ]; then + echo "Le compte de l'utilisateur '$utilisateur' est verrouillé." + + # Proposer de déverrouiller le compte + read -p "Voulez-vous déverrouiller le compte (oui/non)? " unlock_choice + if [ "$unlock_choice" == "oui" ]; then + # Déverrouiller le compte + samba-tool user unlock "$utilisateur" + echo "Le compte de l'utilisateur '$utilisateur' a été déverrouillé." + else + echo "Le compte de l'utilisateur '$utilisateur' reste verrouillé." + fi + else + echo "Le compte de l'utilisateur '$utilisateur' n'est pas verrouillé." + fi + fi +fi diff --git a/CreateNewUser.sh b/CreateNewUser.sh new file mode 100644 index 0000000..10e70d9 --- /dev/null +++ b/CreateNewUser.sh @@ -0,0 +1,18 @@ +#!/bin/bash + +#Prequis : apt install -y pwgen +PASS_LENGTH=12 + +# Demande à l'utilisateur de saisir le info +read -p "Entrez le Nom : " NAME +read -p "Entrez le Prenom :" PRENOM + +LOGIN=`echo $PRENOM|cut -c1`".$NAME" +PASSWORD=$(pwgen -c -n -y -s -B $PASS_LENGTH 1) + +echo "Création du nouvel utilisateur $LOGIN en cours..." +samba-tool user create $LOGIN $PASSWORD --given-name=$PRENOM --surname=$NAME +echo "Mot de passe de $PRENOM : " $PASSWORD + +#Ajout ds le groupe Administratifs par defaut +samba-tool group addmembers Administratifs $LOGIN diff --git a/DisableUserTo.sh b/DisableUserTo.sh new file mode 100644 index 0000000..d88456c --- /dev/null +++ b/DisableUserTo.sh @@ -0,0 +1,2 @@ +#!/bin/bash +samba-tool user disable $1 diff --git a/ListAllUsers.sh b/ListAllUsers.sh new file mode 100644 index 0000000..88a2571 --- /dev/null +++ b/ListAllUsers.sh @@ -0,0 +1,2 @@ +#!/bin/bash +samba-tool user list | sort | grep "." diff --git a/ListGroupTo.sh b/ListGroupTo.sh new file mode 100644 index 0000000..393286f --- /dev/null +++ b/ListGroupTo.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +samba-tool user show $1 | grep "memberOf" | cut -d ',' -f1 | cut -d ':' -f2 | cut -d '=' -f2 diff --git a/ResetPwdTo.sh b/ResetPwdTo.sh new file mode 100644 index 0000000..3589e2b --- /dev/null +++ b/ResetPwdTo.sh @@ -0,0 +1,3 @@ +#!/bin/bash +password=H3campus@2023 +samba-tool user setpassword $1 --must-change-at-next-login --newpassword=$password diff --git a/RstPwd.sh b/RstPwd.sh new file mode 100644 index 0000000..a42eeba --- /dev/null +++ b/RstPwd.sh @@ -0,0 +1,3 @@ +#!/bin/bash +password=H3campus@2023 +samba-tool user setpassword $1 --newpassword=$password