Entwicklung eines Zufallspasswort-Generators

LinuxLinuxBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Projekt lernst du, wie du ein Skript zum Generieren von zufälligen Passwörtern erstellst, das bestimmte Sicherheitsanforderungen erfüllt. Das Skript wird ein 12-Zeichen-Passwort generieren, das mindestens eine Ziffer, einen Großbuchstaben, einen Kleinbuchstaben und ein Sonderzeichen aus der Menge ><+-{}:.&; enthält. Dieses Projekt bietet dir praktische Erfahrungen in der Skriptprogrammierung und der Arbeit mit zufälligen Daten.

👀 Vorschau

$ cd /home/labex/project
$ sh genpass.sh
## Beispiel
2Dsxw9+xS:27

🎯 Aufgaben

In diesem Projekt wirst du:

  • Die Projektumgebung einrichten und die erforderliche Skriptdatei erstellen.
  • Die Logik implementieren, um ein zufälliges Passwort zu generieren, das die angegebenen Komplexitätsanforderungen erfüllt.
  • Das Passwort-Generatorskript testen, um sicherzustellen, dass es korrekt funktioniert.

🏆 Errungenschaften

Nach Abschluss dieses Projekts kannst du:

  • Den Prozess des Erstellens eines Skripts zum Generieren von zufälligen Passwörtern verstehen.
  • Ein Passwort-Generierungsalgorithmus implementieren, der bestimmte Zeichentyp-Anforderungen erfüllt.
  • Die generierten Passwörter testen und validieren, um zu bestätigen, dass sie die gewünschten Kriterien erfüllen.

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/FileandDirectoryManagementGroup(["File and Directory Management"]) linux(("Linux")) -.-> linux/TextProcessingGroup(["Text Processing"]) linux(("Linux")) -.-> linux/VersionControlandTextEditorsGroup(["Version Control and Text Editors"]) linux(("Linux")) -.-> linux/BasicSystemCommandsGroup(["Basic System Commands"]) linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux/BasicSystemCommandsGroup -.-> linux/echo("Text Display") linux/BasicSystemCommandsGroup -.-> linux/test("Condition Testing") linux/BasicFileOperationsGroup -.-> linux/touch("File Creating/Updating") linux/FileandDirectoryManagementGroup -.-> linux/cd("Directory Changing") linux/TextProcessingGroup -.-> linux/tr("Character Translating") linux/VersionControlandTextEditorsGroup -.-> linux/vim("Text Editing") subgraph Lab Skills linux/echo -.-> lab-301485{{"Entwicklung eines Zufallspasswort-Generators"}} linux/test -.-> lab-301485{{"Entwicklung eines Zufallspasswort-Generators"}} linux/touch -.-> lab-301485{{"Entwicklung eines Zufallspasswort-Generators"}} linux/cd -.-> lab-301485{{"Entwicklung eines Zufallspasswort-Generators"}} linux/tr -.-> lab-301485{{"Entwicklung eines Zufallspasswort-Generators"}} linux/vim -.-> lab-301485{{"Entwicklung eines Zufallspasswort-Generators"}} end

Einrichten der Projektumgebung

In diesem Schritt bereitest du deine Arbeitsumgebung vor und erstellst die erforderliche Datei für das Passwort-Generatorskript.

  1. Öffne dein Terminal und navigiere mit dem Befehl cd in das Verzeichnis /home/labex/project:

    cd /home/labex/project
  2. Erstelle mit dem Befehl touch eine neue Datei namens genpass.sh. Dies wird die Datei sein, in der du dein Passwort-Generatorskript schreibst:

    touch genpass.sh
  3. Öffne die Datei genpass.sh in einem Texteditor. Du kannst nano, vim oder einen anderen bevorzugten Texteditor verwenden. Füge am Anfang der Datei die folgende Shebang-Zeile hinzu:

    #!/bin/zsh
    
    ## Zufälliges Passwort-Generator
    ## Dieses Skript generiert ein zufälliges Passwort, das die angegebenen Anforderungen erfüllt.

    Diese Zeile teilt dem System mit, dass das Skript mit der zsh-Shell ausgeführt werden soll. Die Kommentare nach der Shebang-Zeile geben eine kurze Beschreibung des Skripts.

Implementierung der Passwort-Generierungslogik

In diesem Schritt fügst du der genpass.sh-Datei die Kernlogik hinzu, um zufällige Passwörter zu generieren, die den Komplexitätsanforderungen entsprechen.

  1. Füge in der genpass.sh-Datei die folgende Funktion hinzu, um das Passwort zu generieren:

    ## Funktion zur Generierung eines zufälligen Passworts
    generate_password() {
      local length=12
      local password=''
    
      ## Sonderzeichen
      local special_chars='><+-{}:.&;'
      local special_char="${special_chars:$RANDOM%${#special_chars}:1}"
      password+="$special_char"
    
      ## Ziffern
      local digits='0123456789'
      local digit="${digits:$RANDOM%${#digits}:1}"
      password+="$digit"
    
      ## Großbuchstaben
      local upper_case='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
      local upper="${upper_case:$RANDOM%${#upper_case}:1}"
      password+="$upper"
    
      ## Kleinbuchstaben
      local lower_case='abcdefghijklmnopqrstuvwxyz'
      local lower="${lower_case:$RANDOM%${#lower_case}:1}"
      password+="$lower"
    
      ## Restliche Zeichen
      local remaining_length=$((length - 4))
      local characters='><+-{}:.&;0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'
      local num_characters=${#characters}
    
      for ((i = 0; i < remaining_length; i++)); do
        local random_char="${characters:$RANDOM%$num_characters:1}"
        password+="$random_char"
      done
    
      ## Mische die Reihenfolge der Passwortzeichen
      password=$(echo "$password" | fold -w1 | shuf | tr -d '\n')
    
      echo "$password"
    }

    Diese Funktion funktioniert wie folgt:

    • Initialisiert das Passwort mit einem Sonderzeichen, einer Ziffer, einem Großbuchstaben und einem Kleinbuchstaben, um die grundlegenden Kriterien zu erfüllen.
    • Berechnet die Anzahl der verbleibenden Zeichen, um die gewünschte Länge von 12 zu erreichen.
    • Wählt die verbleibenden Zeichen zufällig aus einem Pool von Ziffern, Buchstaben (Groß- und Kleinbuchstaben) und Sonderzeichen aus.
    • Mische das Passwort, um sicherzustellen, dass die speziellen Zeichen nicht immer am Anfang stehen.
  2. Füge am Ende der genpass.sh-Datei den folgenden Code hinzu. Dieser Teil des Skripts ruft die generate_password-Funktion auf und gibt das generierte Passwort in der Konsole aus:

    ## Generiere Passwort und gib es aus
    generate_password

Testen des Passwort-Generators

In diesem Schritt testest du das genpass.sh-Skript, um sicherzustellen, dass es Passwörter generiert, die alle Anforderungen erfüllen.

  1. Speichere die genpass.sh-Datei in deinem Texteditor.

  2. Gib im Terminal mit dem Befehl chmod dem Skript die Ausführungsberechtigung:

    chmod +x genpass.sh

    Dieser Befehl fügt der Datei die Ausführungsrechte hinzu, sodass sie als Programm ausgeführt werden kann.

  3. Führe das Skript mit dem folgenden Befehl aus:

    sh genpass.sh

    Das Skript sollte in der Konsole ein zufälliges 12-Zeichen-Passwort ausgeben. Die Ausgabe sollte mindestens ein Sonderzeichen, eine Ziffer, einen Großbuchstaben und einen Kleinbuchstaben enthalten.

    ## Beispiel
    2Dsxw9+xS:27
  4. Führe das Skript noch einige Male aus. Bei jedem Durchlauf sollte ein anderes Passwort generiert werden. Dies bestätigt, dass die Zufälligkeit des Passwort-Generators korrekt funktioniert.

Herzlichen Glückwunsch! Du hast erfolgreich einen zufälligen Passwort-Generator implementiert und getestet, der die angegebenen Komplexitätsanforderungen erfüllt.

✨ Lösung prüfen und üben

Zusammenfassung

Herzlichen Glückwunsch! Du hast dieses Projekt abgeschlossen und ein Skript zum Generieren von zufälligen Passwörtern erstellt. Du hast nun eine solide Grundlage für zukünftige Skriptprojekte.
Du kannst weiterhin auf LabEx an weiteren Labs üben, um deine Fähigkeiten weiter zu verbessern.