Site perso d'un administrateur systèmes & réseaux

Catégorie : TSSR Page 5 of 6

Pas besoin de calculette en fait

Utiliser la méthode VLSM pour optimiser le découpage d’un réseau en sous-réseaux (avec exemples)

La méthode VLSM (Variable Length Subnet Mask) permet de diviser un réseau IP en sous-réseaux de tailles différentes. Elle est particulièrement utile lorsque vous avez des besoins différents en termes de nombre d’hôtes pour différents segments de votre réseau. Avec VLSM, vous pouvez adapter la taille du sous-réseau en fonction du nombre exact d’hôtes requis pour chaque segment.

Étapes de la méthode VLSM:

  1. Évaluer les besoins: Commencez par énumérer tous vos segments de réseau en fonction de leur besoin en termes de nombre d’hôtes.
  2. Trier par ordre décroissant: Triez les segments par ordre décroissant en fonction de leur besoin.
  3. Attribuer les sous-réseaux: Commencez par le segment ayant le plus grand besoin et attribuez-lui le sous-réseau le plus approprié. Puis, passez au segment suivant et répétez l’opération.
  4. Calculer le masque de sous-réseau: Pour chaque segment, calculez le masque de sous-réseau approprié en fonction du nombre d’hôtes requis.

Exemple:

Supposons que vous ayez l’adresse réseau 192.168.1.0/24 et que vous ayez besoin de segmenter ce réseau pour répondre aux besoins suivants:

  1. Segment A: 100 hôtes
  2. Segment B: 50 hôtes
  3. Segment C: 25 hôtes
  4. Segment D: 5 hôtes

Étape 1: Évaluer les besoins.

Étape 2: Trier par ordre décroissant.

  • Segment A: 100 hôtes
  • Segment B: 50 hôtes
  • Segment C: 25 hôtes
  • Segment D: 5 hôtes

Étape 3: Attribuer les sous-réseaux.

Pour le Segment A (100 hôtes), le plus proche est 128 hôtes (car 2^7 = 128). Cela nécessite 7 bits pour les hôtes (et 32-7=25 bits pour le réseau). Cela nous donne un masque de 255.255.255.128 ou /25.

Segment A: 192.168.1.0/25 (c’est-à-dire 192.168.1.0 à 192.168.1.127)

Pour le Segment B (50 hôtes), le plus proche est 64 hôtes (car 2^6 = 64). Cela nécessite 6 bits pour les hôtes (et 32-6=26 bits pour le réseau). Cela nous donne un masque de 255.255.255.192 ou /26.

Segment B: 192.168.1.128/26 (c’est-à-dire 192.168.1.128 à 192.168.1.191)

Pour le Segment C (25 hôtes), le plus proche est 32 hôtes (car 2^5 = 32). Cela nécessite 5 bits pour les hôtes (et 32-5=27 bits pour le réseau). Cela nous donne un masque de 255.255.255.224 ou /27.

Segment C: 192.168.1.192/27 (c’est-à-dire 192.168.1.192 à 192.168.1.223)

Pour le Segment D (5 hôtes), le plus proche est 8 hôtes (car 2^3 = 8). Cela nécessite 3 bits pour les hôtes (et 32-3=29 bits pour le réseau). Cela nous donne un masque de 255.255.255.248 ou /29.

Segment D: 192.168.1.224/29 (c’est-à-dire 192.168.1.224 à 192.168.1.231)

Voilà! Vous avez maintenant divisé votre réseau initial en 4 sous-réseaux de tailles différentes en utilisant la méthode VLSM.

Un bucket mais pas d'Amazon S3 !

Script Shell de sauvegarde d’un répertoire vers Amazon S3

Pour avoir connu le tragique incendie d’OVH en 2021, je sais ce que ça fait de perdre tout son boulot quand on n’a pas mis en place de backup vers un serveur tiers.

Bon pour le coup, les dégâts étaient limités car je n’avais pas pris ces précautions pour mon travail personnel (recherches / wiki etc.) mais en revanche je les avais bien prises pour les sites de mes clients. Aucune répercussion sérieuse sur l’activité…

N’empêche que si j’avais mis en place un backup automatisé de mes scripts & lab de test, j’aurais pu ne pas perdre toute l’infra que j’avais monté sur Proxmox :-°

Du coup je vous propose un petit script shell de backup qui compressera votre dossier et l’enverra vers votre bucket Amazon S3

#!/bin/bash

# Utilisation de set -e pour quitter en cas d'erreur
set -e

# Utilisation de set -u pour quitter si des variables non définies sont utilisées
set -u

# Définition des constantes
readonly SCRIPT_NAME=$(basename "$0")
readonly BUCKET_NAME="mon-bucket-s3"

# Fonction pour afficher l'aide
usage() {
    echo "Usage: $SCRIPT_NAME [-h] [-d directory]"
    echo "  -h                Afficher l'aide"
    echo "  -d directory      Spécifier le répertoire à sauvegarder"
    exit 1
}

# Vérification des dépendances
command -v aws >/dev/null 2>&1 || { echo "aws-cli est requis mais n'est pas installé. Abandon."; exit 1; }

# Traitement des options
while getopts "hd:" opt; do
    case $opt in
        h)
            usage
            ;;
        d)
            directory=$OPTARG
            ;;
        *)
            echo "Option invalide: -$OPTARG" >&2
            usage
            ;;
    esac
done

# Vérification si le répertoire est spécifié
if [[ -z "${directory:-}" ]]; then
    echo "Erreur : Répertoire non spécifié."
    usage
fi

# Vérification si le répertoire existe
if [[ ! -d "$directory" ]]; then
    echo "Erreur : Le répertoire spécifié n'existe pas."
    exit 1
fi

# Création d'un nom de fichier de sauvegarde unique basé sur la date et l'heure
backup_filename=$(date +"%Y%m%d%H%M%S").tar.gz

# Fonction pour effectuer la sauvegarde
backup_directory() {
    # Archivage et compression du répertoire
    tar -czf "$backup_filename" "$directory"
    
    # Transfert du fichier de sauvegarde vers Amazon S3
    aws s3 cp "$backup_filename" "s3://$BUCKET_NAME/"
    
    # Suppression du fichier de sauvegarde local
    rm -f "$backup_filename"
}

# Appel de la fonction de sauvegarde
backup_directory

# Message de succès
echo "Sauvegarde de $directory effectuée avec succès dans s3://$BUCKET_NAME/"

Utilisation

Rendez le script exécutable avec la commande suivante :

chmod +x backup_script.sh

Exécutez le script avec l’option -d pour spécifier le répertoire à sauvegarder.

Exemple : sauvegarder le répertoire « test » présent dans /tmp :

./backup_script.sh -d /tmp/test

Dans cette commande, -d est l’option que le script utilise pour accepter le chemin du répertoire à sauvegarder, et /tmp/tutos est la valeur que vous donnez à cette option. Le script archive ensuite le répertoire spécifié et le télécharge dans votre bucket Amazon S3.

Notez que le script doit avoir les permissions nécessaires pour lire le contenu du répertoire /tmp/tutos et écrire dans le répertoire où il est exécuté, car il crée temporairement un fichier d’archive avant de le télécharger sur Amazon S3.

Pour automatiser l’envoi du fichier avec une tâche cron, vous devrez suivre les étapes ci-dessous :

  1. Ouvrez le fichier crontab : Ouvrez le fichier crontab pour éditer les tâches programmées en utilisant la commande suivante :
crontab -e
  1. Ajoutez une entrée pour votre script : À la fin du fichier, ajoutez une nouvelle ligne pour votre script. Par exemple, pour exécuter votre script tous les jours à 2 heures du matin, vous pouvez ajouter la ligne suivante :
0 2 * * * /chemin/vers/votre/backup_script.sh -d /tmp/tutos

Remplacez /chemin/vers/votre/backup_script.sh par le chemin complet vers votre script.

La syntaxe de cette ligne est la suivante :

  • 0 2 * * * : spécifie l’horaire. Dans ce cas, il est configuré pour exécuter la tâche à 2 heures du matin tous les jours.
  • /chemin/vers/votre/backup_script.sh -d /tmp/tutos : est la commande à exécuter.
  1. Sauvegardez et quittez l’éditeur : Sauvegardez le fichier et quittez l’éditeur (la façon de faire dépendra de l’éditeur que vous utilisez, par exemple en appuyant sur CTRL + X puis Y et enfin Enter si vous utilisez nano).
  2. Vérifiez votre crontab : Vous pouvez vérifier que votre nouvelle tâche est correctement enregistrée en listant toutes vos tâches cron avec la commande suivante :
crontab -l

Informations complémentaires

  • Les options -h (pour afficher l’aide) et -d (pour spécifier le répertoire à sauvegarder) sont traitées à l’aide de getopts.
  • Les vérifications sont effectuées pour s’assurer que le CLI AWS est installé et que le répertoire spécifié existe.
  • Une fonction backup_directory est définie pour archiver et compresser le répertoire, puis pour transférer le fichier de sauvegarde vers Amazon S3.
  • Le script utilise set -e et set -u pour gérer les erreurs de manière appropriée.
  • Les variables et les fonctions sont nommées de manière descriptive.
  • La constante BUCKET_NAME est définie en utilisant readonly pour stocker le nom du bucket S3.
Un coquillage

Bonnes pratiques à appliquer pour écrire des scripts Shell

Modularisation avec des Fonctions :

Pour des scripts plus lisibles et maintenables, utilisez des fonctions pour segmenter votre code.

Exemple :

greeting() { echo "Bonjour, $1" } greeting "Alice"

Documenter Votre Code :

  • Documentez vos fonctions en expliquant leur but et les arguments nécessaires.
  • Exemple :
# Cette fonction affiche un message de bienvenue # $1 - Le nom de la personne greeting() { echo "Bonjour, $1" }

Utilisation de Shift :

  • Utilisez shift pour gérer les arguments de manière plus flexible.
  • Exemple :
process_file() { 
local input_file="$1"; shift 
local output_file="$1"; shift 
}

Déclaration des Variables :

Déclarez les variables en précisant leur type si nécessaire.

Exemple : declare -i count=0 pour un entier.

Cotation des Variables :

Citez vos variables pour éviter des problèmes avec des espaces ou des caractères spéciaux.

Exemple :

echo "$variable"

Usage des Tableaux :

  • Utilisez des tableaux pour stocker des collections d’éléments.
  • Exemple : arr=(item1 item2 item3)

Utilisation de $@ :

  • Préférez $@ à $* pour obtenir les arguments comme une liste séparée.
  • Exemple :
for arg in "$@"; do echo "$arg" done

Nom des Variables :

  • Utilisez des majuscules uniquement pour les variables d’environnement, et des minuscules pour les autres.

Préférence pour les Opérations Intégrées :

  • Utilisez les fonctionnalités intégrées du shell au lieu d’invoquer des programmes externes.
  • Exemple : Utilisez ${string//substring/replacement} au lieu de sed.

Optimisation des Pipes :

  • Réduisez l’usage des pipes en évitant des commandes inutiles.
  • Exemple : Utilisez awk '/pattern/{print $1}' file au lieu de grep pattern file | awk '{print $1}'.

Globbing et Valeurs Nulles :

  • Utilisez le globbing pour générer des listes de fichiers, et utilisez -print0 avec find pour gérer des noms de fichiers complexes.
  • Exemple :
find . -type f -print0 | xargs -0 rm -f

Substitution de Commandes :

  • Préférez $(command) à `command` pour une meilleure lisibilité.
  • Exemple : echo "Nous sommes le $(date)"

Substitution de Processus et Fichiers Temporaires :

  • Utilisez la substitution de processus < (command) pour éviter les fichiers temporaires.
  • Exemple :
diff <(command1) <(command2)

Usage de [[ et (( pour les Conditions :

  • Utilisez [[ ... ]] pour les tests et (( ... )) pour les comparaisons arithmétiques.
  • Exemple :
if (( number > 10 )); then echo "Le nombre est supérieur à 10." fi

Vérification des Commandes :

  • Utilisez la commande directement dans la condition de l’instruction if.
  • Exemple :bash
if grep -q "pattern" file; then echo "Pattern trouvé." fi

Utilisation de set -e :

  • Placez set -e en haut de votre script pour quitter dès qu’une instruction échoue.
  • Exemple :
set -e command1 command2 # Le script s'arrête ici si command1 échoue

Vérification des Dépendances : Assurez-vous que toutes les commandes externes nécessaires sont disponibles avant de procéder.

command -v awk >/dev/null 2>&1 || { echo "awk est requis mais n'est pas installé. Abandon."; exit 1; }

Utilisation de trap pour le Nettoyage : Utilisez la commande trap pour nettoyer les ressources avant de quitter.

trap 'rm -f "$tempfile"' EXIT tempfile=$(mktemp)

Utilisation de getopts pour Gérer les Options : Utilisez getopts pour gérer les options et les arguments de votre script de manière standard.

while getopts "hvf:" opt; do case $opt in h) echo "Usage: $0 [-h] [-v] [-f file]"; exit ;; v) verbose=true ;; f) file=$OPTARG ;; *) echo "Option invalide: -$OPTARG" >&2; exit 1 ;; esac done

Utilisation de readonly et declare -r pour les Constantes : Déclarez les constantes avec readonly ou declare -r.

readonly PI=3.14159

Vérification des Codes de Retour : Vérifiez les codes de retour des commandes importantes.

command || { echo "command a échoué"; exit 1; }

Indentation et Style Consistant : Adoptez un style d’indentation consistant pour améliorer la lisibilité.

Utilisation de Fonctions pour les Blocs Logiques : Encapsulez des blocs logiques dans des fonctions pour améliorer la modularité et la lisibilité.

Évitez l’Usage de eval : La commande eval peut être dangereuse. Évitez son utilisation ou assurez-vous de bien comprendre ses implications.

Utilisation de set -u : Utilisez set -u pour quitter le script si des variables non définies sont utilisées.

set -u echo "$undefined_variable" # Ceci déclenchera une erreur

Utilisation de Commentaires Informatifs : Commentez votre code de manière informative sans être redondant.

Nommage des Variables et des Fonctions : Utilisez des noms descriptifs pour vos variables et fonctions pour améliorer la compréhension du code.

Utilisation de set -o pipefail : Utilisez set -o pipefail pour attraper les erreurs dans les pipelines.

set -o pipefail command1 | command2 | command3

Vérification des Performances : Si le script est destiné à traiter de grands ensembles de données, prenez en compte les performances. Utilisez des outils comme time pour mesurer le temps d’exécution.

Ces bonnes pratiques rendront vos scripts shell plus robustes, lisibles, et faciles à maintenir !

Web Shell et sécurité

Les menaces Web Shell sont en ascension, utilisées par des cybercriminels pour infiltrer des serveurs en exploitant des failles dans les applications web ou les configurations réseau.

Un Web Shell est un script malveillant déposé sur un serveur web permettant un contrôle à distance. Il peut être écrit dans divers langages comme PHP, ASP, Python, ou Unix.

Un accès réussi offre à l’attaquant la possibilité de télécharger, supprimer, charger ou exécuter des fichiers sur le serveur, d’où l’importance de la gestion sécurisée des fichiers et répertoires sous Bash.

Quelques mesures de sécurité à prendre en considération :

  1. Mises à Jour Constantes :
    • Assurer la mise à jour régulière ou automatique du système et des applications pour éliminer les vulnérabilités connues.
    • Exemple : Utiliser des systèmes de gestion de paquets comme apt pour Ubuntu ou yum pour CentOS pour automatiser les mises à jour.
  2. Principe de Moindre Privilège :
    • Appliquer des droits d’accès restrictifs sur le serveur web, surtout dans le répertoire racine, réduisant ainsi les chances d’une escalade de privilèges par un attaquant.
    • Exemple : N’autoriser que l’utilisateur root ou l’administrateur à créer ou modifier des fichiers dans des répertoires sensibles.
  3. Zone Démilitarisée (DMZ) :
    • Configurer une DMZ entre le serveur web et le réseau interne pour limiter les interactions et avoir un suivi du trafic pouvant révéler des activités suspectes.
    • Exemple : Utilisation de pare-feux et de routeurs pour isoler le serveur web du reste du réseau.
  4. Configuration Sécurisée du Serveur Web :
    • Désactiver les services inutiles, bloquer les ports non utilisés, empêcher l’accès au panneau de gestion depuis l’extérieur, et utiliser des identifiants robustes.
    • Exemple : Utilisation de scanners de vulnérabilité comme Nessus pour identifier et rectifier les configurations faibles.
  5. Validation Stricte des Entrées :
    • Valider toutes les entrées utilisateur pour éviter les injections de code malveillant.
    • Exemple : Utilisation de fonctions de validation ou d’outils comme OWASP ZAP pour tester les entrées.
  6. Analyses de Vulnérabilité :
    • Effectuer des scans réguliers pour détecter des failles potentielles.
    • Exemple : Utilisation de scanners comme OpenVAS pour identifier des vulnérabilités dans le système et les applications.
  7. Utilisation de Pare-feu d’Application Web ou Proxy Inverse :
    • Déployer des solutions de sécurité additionnelles pour améliorer la protection contre les attaques.
    • Exemple : Utilisation de mod_security comme pare-feu d’application web.

Exemples de Risques et Solutions :

  1. Injection de Code :
    • Risque : Un utilisateur mal intentionné peut injecter des commandes dangereuses si les entrées ne sont pas correctement validées.
    • Solution : Utiliser des fonctions d’échappement de caractères et de validation des entrées.
  2. Scripts Shell en CGI :
    • Risque : Les scripts Shell utilisés pour les CGI peuvent être exploités si l’entrée utilisateur n’est pas correctement gérée.
    • Solution : Préférer l’utilisation de langages plus sécurisés comme PHP ou Python, ou des moteurs de recherche tiers sécurisés comme le moteur de recherche personnalisé Google.
  3. Stockage de Mots de Passe dans les Scripts :
    • Risque : Un mot de passe codé en dur dans un script peut être découvert par un attaquant.
    • Solution : Utiliser des mécanismes sécurisés de stockage des mots de passe, comme les coffres-forts de mots de passe.

Conseil Final : La sécurité doit être une priorité dès le début du développement, en adoptant des pratiques codage sécurisé et en étant conscient des risques associés à certaines actions, comme le stockage de mots de passe en clair ou l’exécution de code basée sur des entrées utilisateur non validées.

Pense-bête – Installer et configurer WSUS

WSUS (Windows Server Update Services) est un service qui permet aux administrateurs de déployer des mises à jour Windows à partir d’un serveur local plutôt que de laisser chaque client se connecter à Windows Update sur Internet. Cela permet de gagner en bande passante, d’assurer la conformité et d’effectuer des tests avant le déploiement.

Voici un guide étape par étape pour installer et configurer WSUS sur un serveur Windows Server 2019 :

  1. Préparation du serveur :
    • Assurez-vous que votre serveur dispose d’un accès Internet pour télécharger les mises à jour.
    • Prévoyez suffisamment d’espace disque. Les mises à jour peuvent prendre beaucoup d’espace, selon les produits que vous souhaitez mettre à jour.
  2. Installation de WSUS :
    • Ouvrez le Gestionnaire de serveur.
    • Dans le volet de droite, cliquez sur Ajouter des rôles et des fonctionnalités.
    • Suivez l’assistant. Lorsque vous arrivez à la page Rôles de serveur, cochez Services de mise à jour Windows Server (WSUS).
    • Dans les fonctionnalités associées, laissez les options par défaut ou ajustez-les selon vos besoins.
    • Poursuivez l’installation.
  3. Configuration de WSUS :
    • Après l’installation, ouvrez la console WSUS depuis le Gestionnaire de serveur.
    • Suivez l’assistant de configuration.
      • Sélectionnez si vous souhaitez conserver les mises à jour par défaut ou les déplacer vers un autre emplacement.
      • Configurez votre proxy si nécessaire.
      • Choisissez de synchroniser à partir de Windows Update ou d’un autre serveur WSUS.
      • Choisissez les langues des mises à jour.
      • Sélectionnez les produits que vous souhaitez mettre à jour (par exemple, Windows 10, Windows Server 2019, etc.).
      • Choisissez les types de mises à jour que vous souhaitez (par exemple, Mises à jour de sécurité, Mises à jour critiques, etc.).
      • Configurez l’horaire de synchronisation.
  4. Approuver et déployer les mises à jour :
    • Une fois la synchronisation terminée, vous pouvez voir les mises à jour disponibles.
    • Vous pouvez approuver les mises à jour pour qu’elles soient téléchargées et déployées sur vos clients.
  5. Configurer les clients pour utiliser WSUS :
    • Cela se fait généralement à l’aide d’une stratégie de groupe (GPO).
      • Ouvrez la Gestion des stratégies de groupe.
      • Créez ou modifiez une GPO pour les ordinateurs que vous souhaitez cibler.
      • Naviguez jusqu’à Configuration ordinateur > Modèles d'administration > Composants Windows > Windows Update.
      • Configurez au moins les paramètres Configurer le service de mise à jour et Spécifier l'emplacement du service de mise à jour Windows.

Ainsi, vos clients se connecteront au serveur WSUS pour leurs mises à jour. N’oubliez pas de surveiller régulièrement WSUS pour approuver les nouvelles mises à jour et vérifier l’état des déploiements.

Création d’un script de sauvegarde avec Bash

Imaginez que nous voulions sauvegarder le contenu d’un répertoire documents dans un autre répertoire backup.

Voici le contenu de sauvegarde.sh

#!/bin/bash

# Ce script est conçu pour sauvegarder le contenu du répertoire 'documents' dans le répertoire 'backup'

SOURCE_DIRECTORY="/chemin/absolu/vers/documents"
BACKUP_DIRECTORY="/chemin/absolu/vers/backup"

# Vérifier que le répertoire source existe
if [ ! -d "$SOURCE_DIRECTORY" ]; then
    echo "Erreur : Le répertoire source $SOURCE_DIRECTORY n'existe pas."
    exit 1
fi

# Si le répertoire de sauvegarde n'existe pas, le créer
if [ ! -d "$BACKUP_DIRECTORY" ]; then
    mkdir "$BACKUP_DIRECTORY"
fi

# Copier les fichiers
cp -R "$SOURCE_DIRECTORY"/* "$BACKUP_DIRECTORY"

# Vérifier si la copie a réussi
if [ $? -eq 0 ]; then
    echo "Sauvegarde effectuée avec succès."
else
    echo "Erreur lors de la sauvegarde."
    exit 1
fi

Utilisation :

  1. Assurez-vous que les chemins pour SOURCE_DIRECTORY et BACKUP_DIRECTORY sont correctement définis.
  2. Rendez le script exécutable avec la commande chmod +x sauvegarde.sh.
  3. Exécutez le script avec ./sauvegarde.sh.

Automatisation avec Cron :

Si vous voulez exécuter ce script automatiquement tous les jours à 23h00 :

  1. Ouvrez votre crontab avec crontab -e.
  2. Ajoutez la ligne suivante :

00 23 * * * /chemin/absolu/vers/sauvegarde.sh

Avec cela, votre script de sauvegarde s’exécutera automatiquement chaque jour à 23h00. Assurez-vous de remplacer /chemin/absolu/vers/sauvegarde.sh par le chemin réel vers votre script.

Commandes usuelles du Shell Bash

Structure et Composants d’une Commande Bash

1. Le nom de la commande : L’essence de toute instruction à l’ordinateur réside dans le nom de la commande. Dans le monde de Bash, chaque nom de commande est associé à une action précise. Lorsque Bash reconnaît une commande, il s’efforce de l’exécuter. Si la commande est inconnue ou incorrecte, Bash répondra par un message d’erreur. Au-delà des commandes simples, Bash permet également de définir des fonctions. Ces fonctions peuvent regrouper plusieurs commandes, facilitant ainsi leur exécution en une seule invocation de la fonction.

2. Les arguments de la commande : Les arguments donnent du contexte à nos commandes. En ajoutant des arguments, on peut par exemple préciser un nom de fichier ou un emplacement. Prenons l’exemple d’une commande destinée à copier un fichier : elle nécessitera au moins deux arguments – le nom du fichier source et la destination du fichier. Les arguments fournissent les détails nécessaires pour permettre à la commande de fonctionner comme prévu. Lorsqu’il y a plusieurs arguments, ils sont généralement séparés par des espaces.

3. Les options de la commande : Ajoutées à une commande pour modifier ou préciser son comportement, les options sont généralement introduites par un tiret simple -, suivi du nom complet de l’option ou de son abréviation. Selon la commande, diverses options peuvent être disponibles, offrant une flexibilité accrue à l’utilisateur.

Liste des commandes usuelles

su : Pour se connecter en tant qu’utilisateur root.

Exemple :

su

Note : Sur certains systèmes, sudo -i est utilisé pour obtenir un shell root.

cd : Change de répertoire.

  • Exemple :
cd /usr/bin/

Option courante : cd - pour retourner au précédent répertoire.

ls : Affiche le contenu du répertoire.

  • Exemple :
ls /home/

Options courantes :

ls -l pour un affichage détaillé.

ls -a pour afficher tous les fichiers, y compris les cachés.

touch : Crée un fichier.

  • Exemple :
touch nouveau_fichier.txt

rm : Supprime des fichiers ou des répertoires.

  • Exemple :
rm fichier_a_supprimer.txt

Options courantes :

rm -r pour supprimer un répertoire et son contenu.

rm -f pour forcer la suppression sans demande de confirmation.

mkdir : Crée un répertoire.

  • Exemple :
mkdir nouveau_repertoire

Option courante :

mkdir -p pour créer des répertoires parents si nécessaires.

more : Affiche le contenu d’un fichier.

  • Exemple :
more fichier.txt

grep : Recherche une chaîne dans un fichier.

  • Exemple :
grep "erreur" journal.log

Options courantes :

grep -i pour une recherche insensible à la casse.

grep -r pour une recherche récursive dans les répertoires.

ps : Affiche les processus en cours.

  • Exemple :
ps aux

Options courantes :

ps -e pour afficher tous les processus du système.

ps -u utilisateur pour afficher les processus d’un utilisateur spécifique.

kill : Envoie un signal à un processus, généralement pour l’arrêter.

  • Exemple :
kill 12345 (où 12345 est l'ID du processus)

Options courantes :

  • kill -9 pour forcer l’arrêt d’un processus.
  • killall nom_du_processus pour tuer tous les processus portant ce nom

Quelques fonctions de base de Bash

Guide pour vérifier et utiliser Bash

Vérification de la présence de Bash : Pour déterminer si Bash est installé sur votre machine Ubuntu, ouvrez le terminal et entrez la commande :


ps

Si ‘Bash’ figure dans la liste, cela signifie qu’il est installé et prêt à être utilisé.

Exécution d’un script avec Bash : Si vous avez un script préparé, nommé « script.sh », voici comment l’exécuter :

  1. Naviguez jusqu’au répertoire contenant votre script avec la commande cd.
  2. Exécutez le script en entrant :

bash script.sh

ou :


./script.sh

Si le script ne s’exécute pas, il est probable qu’il ne soit pas défini comme exécutable. Pour le rendre exécutable, utilisez :


chmod +x script.sh

Fonctions courantes dans Bash :

  1. Comparaison de chaînes ou de noms de fichiers :
    • Utilisation : if [ "$string1" = "$string2" ]; then ...
    • Exemple : Pour vérifier si deux chaînes sont identiques :
string1="Hello" string2="World" 
if [ "$string1" != "$string2" ]; then echo "Les deux chaînes sont différentes."fi

Recherche d’une séquence spécifique dans un fichier :

  • grep
    • Utilisation : grep "motif" fichier
    • Exemple : Pour trouver toutes les occurrences du mot « erreur » dans le fichier « journal.log » :bash

grep "erreur" journal.log

Remplacement de chaînes :

  • sed
    • Utilisation : sed 's/motif/remplacement/' fichier
    • Exemple : Pour remplacer toutes les occurrences de « ancien » par « nouveau » dans le fichier « texte.txt » :bash

sed 's/ancien/nouveau/g' texte.txt

Affichage de données à l’écran :

  • echo
    • Utilisation : echo "Votre texte ici"
    • Exemple : Pour afficher le message « Bonjour le monde ! » à l’écran :bash

echo "Bonjour le monde !"

Création de variables :

  • Utilisation : variable=valeur
  • Exemple : Pour assigner la valeur 3 à une variable nommée « compteur » :bash

compteur=3 echo $compteur

Qu’est-ce que Bash concrètement ?

Découverte de Bash : Une immersion dans le monde de la ligne de commande

Si le monde digital était une symphonie, Bash serait un de ses instruments les plus mélodieux. Permettez-moi de vous l’expliquer :

Bash, c’est quoi exactement ?

Au cœur de Bash, vous trouverez deux entités inséparables. La première, c’est ce qu’on appelle un shell de ligne de commande. C’est comme un pont entre vous et votre ordinateur, où au lieu d’utiliser une souris pour cliquer sur des icônes, vous tapez des commandes. Mais Bash ne s’arrête pas là. C’est également un langage de script. Imaginez avoir une série de commandes que vous exécutez souvent. Plutôt que de les taper à chaque fois, avec Bash, vous pouvez les regrouper dans un « script » et le lancer quand bon vous semble.

Éclaircissement sur le concept de Shell

Un shell, c’est comme un interprète. Imaginez-vous dans un pays étranger sans connaître la langue. Vous avez besoin d’un traducteur pour comprendre et vous faire comprendre. De la même manière, un shell traduit vos commandes tapées au clavier pour les faire comprendre à votre ordinateur. Alors oui, vous pourriez utiliser une interface graphique (avec ses jolies icônes), mais le shell a ses propres atouts :

  • Rapidité: Il est souvent plus vif qu’une interface graphique.
  • Automatisation: Répétez les tâches sans effort.
  • Flexibilité: Interagissez avec diverses ressources, y compris le cloud.
  • Traçabilité: Conservez une trace écrite de toutes vos commandes, idéal pour un audit.

Pourquoi se tourner vers Bash ?

Bash n’est pas simplement un outil, c’est une boîte à outils. Que voulez-vous faire ?

  • Identifier et supprimer des doublons sur un disque ?
  • Renommer des fichiers en masse ?
  • Automatiser le déplacement de fichiers ?
  • Programmer l’allumage ou l’extinction de votre système ?
  • Créer une base de données à partir de simples fichiers texte ?

Tout cela (et bien plus) est possible avec Bash.

Les joyaux de Bash :

  • Diversité : Une panoplie de commandes pour presque toute action imaginable.
  • Universalité : Présent sur presque toutes les plateformes.
  • Polyvalence : Parfait pour une utilisation interactive ou pour automatiser des tâches.
  • Richesse : Accès à une pléthore de librairies.
  • Mobilité : Utilisez-le à distance avec SSH.
  • Multitâche : Exécutez deux tâches en simultané grâce au mécanisme de pipe « | ». C’est ce qu’on appelle élégamment un « co-processus ».

Petits apartés terminologiques :

  • Librairie : Pensez-y comme à une étagère remplie de livres prêts à être utilisés, sauf que ces « livres » sont en réalité des routines informatiques prêtes à l’emploi.
  • SSH (Secure Shell) : C’est comme un tunnel sécurisé. Si Bash était une voiture, SSH serait la voie rapide et protégée qui vous permet de la conduire en toute sécurité sur le réseau.

A quoi sert une unité d’organisation, comment créer un utilisateur et l’attacher à un groupe

Une Unité d’Organisation (OU, pour « Organizational Unit » en anglais) est un composant de l’annuaire Active Directory (AD) de Microsoft qui offre une structure de hiérarchie permettant d’organiser les objets. En gros, elle fonctionne comme un « dossier » dans lequel vous pouvez placer des objets tels que des utilisateurs, des groupes, des ordinateurs, et d’autres OUs. Cela permet une meilleure organisation et administration.

Avantages des OUs:

  1. Délégation administrative: Vous pouvez déléguer l’administration à des niveaux différents. Par exemple, donner à quelqu’un les droits administratifs seulement sur une OU spécifique sans lui donner des droits sur tout le domaine.
  2. Application des stratégies de groupe (GPO): Les OUs permettent d’appliquer des stratégies à des niveaux spécifiques. Si vous voulez qu’une politique s’applique uniquement à un département spécifique, vous pouvez créer une OU pour ce département et y lier la GPO.
  3. Organisation: Simplement pour une meilleure structure et visibilité. Cela permet de facilement identifier et localiser des objets dans AD.

Pour l’exemple, nous allons créer 2 OU :

  • Une OU « Groupe » qui permettra de gérer des stratégies de groupe
  • Une OU « Utilisateurs » pour créer nos différents comptes utilisateurs qui seront attachés à des groupes distincts.

Comment créer une Unité d’Organisation:

1. Ouvrez « Outils d’administration » (Administrative Tools), puis cliquez sur « Utilisateurs et ordinateurs Active Directory » (Active Directory Users and Computers).

2. Dans le volet de gauche, naviguez jusqu’au domaine ou à l’OU parente où vous souhaitez ajouter votre nouvelle OU.

3. Cliquez avec le bouton droit sur le domaine ou l’OU parente, puis sélectionnez Nouveau > Unité d'organisation.

4. Donnez un nom à votre OU (créez « Groupes » et « Utilisateurs ») et configurez les autres options comme vous le souhaitez (par exemple, pour protéger l’OU contre la suppression accidentelle).

Gérer les Unités d’Organisation

Une fois l’OU créée, vous pouvez y ajouter des groupes ; par exemple le groupe « Administratif »

Une fois le groupe créé, vous pouvez ajouter des utilisateurs qui pourront y être attachés :

Associer un utilisateur à un groupe

Une fois l’utilisateur et le groupe créés, nous allons les associer : dans « Utilisateurs », faites un clic droit sur l’utilisateur créé puis « Ajouter à un groupe »

Il suffit de commencer à taper le nom du groupe dans lequel on veut associer l’utilisateur puis cliquer sur « Vérifier les noms » pour le trouver rapidement :

On peut constater que l’utilisateur fait bien partie du groupe en vérifiant ses propriétés :

On peut également définir quelques règles le concernant, comme par exemple limiter sa durée de vie :

Page 5 of 6