Wie man Benutzerkonten in Linux mithilfe eines automatisierten Bash-Skripts aktivieren kann

Die effiziente Verwaltung von Benutzerkonten ist eine wichtige Aufgabe für IT-Experten und Managed Service Provider (MSPs). Ein wesentlicher Teil davon ist die Aktivierung und Deaktivierung von Benutzerkonten nach Bedarf. In diesem Blog-Beitrag wird ein Bash-Skript vorgestellt, das den Prozess der Aktivierung von Benutzerkonten in Linux-Systemen vereinfacht. Wenn IT-Experten dieses Skript verstehen und verwenden, können sie die Benutzerverwaltung optimieren, die Systemsicherheit verbessern und einen reibungslosen Betrieb sicherstellen.

Kontext

Die Verwaltung von Benutzerkonten in Linux ist eine grundlegende Aufgabe für Systemadministratoren. Die Gewährleistung, dass nur autorisierte Benutzer:innen Zugang zu den Systemressourcen haben, ist für die Aufrechterhaltung der Sicherheit und der betrieblichen Integrität unerlässlich. Dieses Bash-Skript wurde entwickelt, um Benutzerkonten zu aktivieren, indem die Anmeldeshell in ‘/bin/bash’ geändert und das Konto entsperrt wird. Eine solche Automatisierung kann Zeit sparen, menschliches Versagen reduzieren und einheitliche Sicherheitspraktiken über mehrere Systeme hinweg durchsetzen.

Das Skript zur Aktivierung von Benutzerkonten in Linux-Systemen

#!/usr/bin/env bash

# Description: Enables a user account by changing its shell to /bin/bash and unlocking the account.
#
# Release Notes: Initial Release
# By using this script, you indicate your acceptance of the following legal terms as well as our Terms of Use at https://www.ninjaone.com/terms-of-use.
# Ownership Rights: NinjaOne owns and will continue to own all right, title, and interest in and to the script (including the copyright). NinjaOne is giving you a limited license to use the script in accordance with these legal terms. 
# Use Limitation: You may only use the script for your legitimate personal or internal business purposes, and you may not share the script with another party. 
# Republication Prohibition: Under no circumstances are you permitted to re-publish the script in any script library or website belonging to or under the control of any other software provider. 
# Warranty Disclaimer: The script is provided “as is” and “as available”, without warranty of any kind. NinjaOne makes no promise or guarantee that the script will be free from defects or that it will meet your specific needs or expectations. 
# Assumption of Risk: Your use of the script is at your own risk. You acknowledge that there are certain inherent risks in using the script, and you understand and assume each of those risks. 
# Waiver and Release: You will not hold NinjaOne responsible for any adverse or unintended consequences resulting from your use of the script, and you waive any legal or equitable rights or remedies you may have against NinjaOne relating to your use of the script. 
# EULA: If you are a NinjaOne customer, your use of the script is subject to the End User License Agreement applicable to you (EULA).
#
# Below are all the valid parameters for this script.
#
# Preset Parameter: "ReplaceMeWithUsernameToEnable"
#   Username of the user you would like to enable.
#

# Help text function for when invalid input is encountered
print_help() {
  printf '\n### Below are all the valid parameters for this script. ###\n'
  printf '\nPreset Parameter: "ReplaceMeWithUsernameToEnable" \n'
  printf '\t%s\n' "Username of the user you would like to enable."
}

# Determines whether or not help text is nessessary and routes the output to stderr
die() {
  local _ret="${2:-1}"
  echo "$1" >&2
  test "${_PRINT_HELP:-no}" = yes && print_help >&2
  exit "${_ret}"
}

_arg_userToEnable=

# Grabbing the parameters and parsing through them.
parse_commandline() {
  while test $# -gt 0; do
    _key="$1"
    case "$_key" in
    --help | -h)
      _PRINT_HELP=yes die 0
      ;;
    --*)
      _PRINT_HELP=yes die "FATAL ERROR: Got an unexpected argument '$1'" 1
      ;;
    *)
      if [[ -z $_arg_userToEnable ]]; then
        _arg_userToEnable=$1
      else
        _PRINT_HELP=yes die "FATAL ERROR: Got an unexpected argument '$1' but user '$_arg_userToEnable' was already specified!" 1
      fi
      ;;
    esac
    shift
  done
}

# Parse the command-line arguments passed to the script.
parse_commandline "$@"

if [[ -n $usernameToEnable ]]; then
  _arg_userToEnable="$usernameToEnable"
fi

# Check if the username to disable is empty and display an error if it is.
if [[ -z $_arg_userToEnable ]]; then
  _PRINT_HELP=yes die "[Error] The username of the user you would like to disable is required!'" 1
fi

# Validate the username to ensure it only contains lowercase letters, digits, hyphens, and underscores.
if [[ ! $_arg_userToEnable =~ ^[a-z0-9_-]+$ ]]; then
  _PRINT_HELP=no die "[Error] Invalid characters detected in '$_arg_userToEnable' usernames can only have a-z, 0-9 or -, _ characters!" 1
fi

# Search for the user in the /etc/passwd file.
passwdEntry=$(grep -w "$_arg_userToEnable" /etc/passwd)
if [[ -z $passwdEntry ]]; then
  _PRINT_HELP=no die "[Error] User '$_arg_userToEnable' does not exist." 1
fi

# Check to see if account is expired
accountExpiration=$(chage -l "$_arg_userToEnable" | grep "Account expires" | grep -v 'never' | cut -d ":" -f2 | xargs)
if [[ -n $accountExpiration ]]; then
  accountExpirationSeconds=$(date -d "$accountExpiration" +"%s")
  
  currentTime=$(date +"%s")
  # Warn if account is expired
  if [[ $accountExpirationSeconds -le $currentTime ]]; then
    echo "WARNING: The account for '$_arg_userToEnable' is currently expired as of '$accountExpiration'. You may need to set a new expiration date."
  fi
fi

noLogin=$(grep -w "$_arg_userToEnable" /etc/passwd | grep "nologin")
unlockedaccount=$(passwd -S "$_arg_userToEnable" | cut -f2 -d " " | grep -v "L")
if [[ -z $noLogin && -n $unlockedaccount ]]; then
  _PRINT_HELP=no die "[Error] User '$_arg_userToEnable' is already enabled." 1
fi

if [[ -f /bin/bash ]]; then
  preferredShell="/bin/bash"
elif [[ -f /bin/sh ]]; then
  preferredShell="/bin/sh"
fi

# Attempt to change the shell of the user to /bin/bash to enable login capabilities.
if ! usermod "$_arg_userToEnable" -s "$preferredShell"; then
  _PRINT_HELP=no die "[Error] Failed to change the shell for '$_arg_userToEnable' to '$preferredShell'." 1
fi

# Attempt to unlock the user account using usermod.
if ! usermod -U "$_arg_userToEnable"; then
  _PRINT_HELP=no die "[Error] Failed to unlock '$_arg_userToEnable' using usermod." 1
fi

# Check if the user has been successfully enabled by confirming 'nologin' is no longer set.
enabledUser=$(grep -w "$_arg_userToEnable" /etc/passwd | grep -v "nologin")
if [[ -n $enabledUser ]]; then
  echo "Successfully enabled '$_arg_userToEnable'."
else
  _PRINT_HELP=no die "[Error] Failed to enable '$_arg_userToEnable'." 1
fi

 

Greifen Sie auf über 300 Skripte im NinjaOne Dojo zu.

Zugang erhalten

Detailansicht

Das mitgelieferte Bash-Skript erfüllt seine Aufgabe in mehreren genau definierten Schritten. Lassen Sie uns jeden Teil des Skripts aufschlüsseln, um seine Funktionalität zu verstehen:

1. Hilfetext und Fehlerbehandlungs-Funktionen:

  • Das Skript beginnt mit der Definition von Funktionen zur Anzeige von Hilfetext (print_help) und zur Fehlerbehandlung (die). Diese Funktionen sorgen dafür, dass die Benutzer:innen über die korrekte Verwendung des Skripts informiert sind und Probleme effektiv beheben können.

2. Parameter-Parsen:

  • Die Funktion ‘parse_commandline’ verarbeitet die Befehlszeilenargumente des Skripts. Er prüft auf das –helpflag, unerwartete Argumente und stellt sicher, dass nur ein Benutzername angegeben wird.

3. Validierung des Benutzernamens:

  • Das Skript überprüft den angegebenen Benutzernamen, um zu garantieren, dass er nur Kleinbuchstaben, Ziffern, Bindestriche und Unterstriche enthält. Dieser Schritt verhindert mögliche Sicherheitsprobleme, die durch ungültige Zeichen entstehen können.

4. Benutzer-Existenzprüfung:

  • Das Skript prüft, ob die Benutzer:innen in der Datei ‘/etc/passwd’ existieren. Wenn sie nicht vorhanden sind, wird der Vorgang mit einer Fehlermeldung beendet.

5. Prüfung auf den Kontenablauf:

  • Das Skript verwendet den Befehl ‘chage’, um festzustellen, ob das Konto abgelaufen ist. Falls es der Fall ist, werden die Benutzer:innen benachrichtigt, obwohl das Skript weiterhin versucht, das Konto zu aktivieren.

6. Prüfung der Login-Shell und des Kontostatus:

  • Es wird überprüft, ob die Login-Shell des Benutzers auf ‘nologin’ gesetzt ist und ob das Konto bereits entsperrt ist. Wenn der Benutzer bereits aktiviert ist, wird der Vorgang mit einem Fehler beendet.

7. Shell-Auswahl:

  • Das Skript prüft, ob ‘/bin/bash’ und ‘/bin/sh’ vorhanden sind, und bevorzugt ‘/bin/bash’, falls vorhanden.

8. Änderung der Shell und Entsperren des Kontos:

  • Das Skript versucht, die Anmelde-Shell des Benutzers in die bevorzugte Shell zu ändern und das Konto mit dem Befehl ‘usermod’ zu entsperren.

9. Endgültige Verifizierung:

  • Es wird überprüft, ob der Benutzer erfolgreich aktiviert wurde, indem das Skript dafür sorgt, dass ‘nologin’ nicht mehr gesetzt ist. Bei Erfolg wird eine Bestätigungsmeldung angezeigt.

Potenzielle Anwendungsfälle

Stellen Sie sich ein Szenario vor, in dem ein IT-Experte ein großes Team mit häufigem Personalwechsel leitet. Eine Mitarbeiterin, die aus einem längeren Urlaub zurückkehrt, muss ihr Konto wieder aktivieren. Mit diesem Skript kann der IT-Experte das Konto schnell aktivieren, ohne manuell durch mehrere Befehle navigieren zu müssen, sodass der Prozess schnell und fehlerfrei abläuft.

Vergleiche

Dieses Skript bietet einen rationalisierten, automatisierten Ansatz zur Aktivierung von Benutzerkonten im Vergleich zu manuellen Methoden. Die manuelle Aktivierung eines Benutzers umfasst mehrere Schritte: das Bearbeiten von ‘/etc/passwd’, die Änderung der Shell und das Entsperren des Kontos. Jeder Schritt ist anfällig für menschliches Versagen. Im Gegensatz dazu fasst dieses Skript all diese Schritte in einem einzigen, wiederholbaren Prozess zusammen, was die Zuverlässigkeit und Effizienz erhöht.

FAQs

1) Was passiert, wenn der Benutzername ungültig ist?

Das Skript wird mit einer Fehlermeldung beendet, die besagt, dass der Benutzername ungültige Zeichen enthält.

2) Kann dieses Skript verwendet werden, um mehrere Benutzer:innen gleichzeitig zu aktivieren?

Nein, das Skript ist so konzipiert, dass es jeweils nur einen Benutzer oder eine Benutzerin zulässt, um Genauigkeit und Sicherheit zu gewährleisten.

3) Was ist, wenn die bevorzugte Shell ‘/bin/bash’ nicht verfügbar ist?

Das Skript greift auf ‘/bin/sh’ zurück, wenn ‘/bin/bash’ nicht gefunden wird.

4) Behandelt das Skript alle kontobezogenen Fehler?

Das Skript behandelt häufige Fehler wie ungültige Benutzernamen, nicht existierende Benutzer:innen und bereits aktivierte Konten.

Folgen

Die sichere Aktivierung von Benutzerkonten ist entscheidend für die Wahrung der Systemintegrität. Automatisierte Skripte wie diese verringern das Risiko menschlichen Versagens und stellen sicher, dass Konten korrekt und zeitnah aktiviert werden. Dies trägt zur allgemeinen Systemsicherheit und Betriebseffizienz bei, die in jeder IT-Umgebung von größter Bedeutung sind.

Empfehlungen

Beachten Sie bei der Verwendung dieses Skripts die folgenden Best Practices:

  • Testen Sie es in einer Staging-Umgebung: Bevor Sie das Skript in einer Produktionsumgebung einsetzen, testen Sie es in einer Staging-Umgebung, um dafür zu sorgen, dass es sich wie erwartet verhält.
  • Regelmäßige Audits ausführen: Überprüfen Sie in regelmäßigen Abständen die Benutzerkonten und die Funktionalität des Skripts, um die Einhaltung der Sicherheitsrichtlinien zu gewährleisten.
  • Dokumentation: Führen Sie eine ausführliche Dokumentation aller Anpassungen, die Sie am Skript vorgenommen haben, um die zukünftige Wartung zu erleichtern.

Abschließende Überlegungen

Eine effektive Verwaltung von Benutzerkonten ist für die Aufrechterhaltung einer sicheren und effizienten IT-Umgebung unerlässlich. Dieses Bash-Skript bietet eine zuverlässige und automatisierte Lösung für die Aktivierung von Benutzerkonten unter Linux. Unternehmen, die ihre IT-Abläufe weiter rationalisieren möchten, können mit Tools wie NinjaOne umfassende Verwaltungslösungen anbieten, die die Effizienz und Sicherheit in allen Bereichen verbessern.

Nächste Schritte

Der Aufbau eines effizienten und effektiven IT-Teams erfordert eine zentralisierte Lösung, die als einheitliches Tool zur Bereitstellung von IT-Dienstleistungen fungiert. NinjaOne ermöglicht es IT-Teams, alle Geräte zu überwachen, zu verwalten, zu sichern und zu unterstützen, unabhängig vom Standort, ohne dass eine komplexe Infrastruktur vor Ort erforderlich ist.

Erfahren Sie mehr über NinjaOne Remote Script Deployment, sehen Sie sich eine Live-Tour an oder starten Sie Ihre kostenlose Testversion unserer NinjaOne Plattform.

Kategorien:

Das könnte Sie auch interessieren

×

Sehen Sie NinjaOne in Aktion!

Mit dem Absenden dieses Formulars akzeptiere ich die Datenschutzerklärung von NinjaOne.

NinjaOne Allgemeine Geschäftsbedingungen für Skripte

Indem Sie unten auf die Schaltfläche “Ich akzeptiere” klicken, erklären Sie Ihr Einverständnis mit den folgenden rechtlichen Bedingungen sowie mit unseren Nutzungsbedingungen:

  • Eigentumsrechte: NinjaOne besitzt und wird weiterhin alle Rechte, Titel und Interessen an dem Skript (einschließlich des Urheberrechts) behalten. NinjaOne gewährt Ihnen eine eingeschränkte Lizenz zur Nutzung des Skripts in Übereinstimmung mit diesen rechtlichen Bedingungen.
  • Einschränkung der Nutzung: Sie dürfen das Skript nur für Ihre legitimen persönlichen oder internen Geschäftszwecke verwenden und es nicht an Dritte weitergeben.
  • Verbot der Wiederveröffentlichung: Sie sind unter keinen Umständen berechtigt, das Skript in einer Skriptbibliothek, die einem anderen Softwareanbieter gehört oder von diesem kontrolliert wird, erneut zu veröffentlichen.
  • Gewährleistungsausschluss: Das Skript wird “wie gesehen” und “wie verfügbar” bereitgestellt, ohne jegliche Garantie. NinjaOne gibt keine Versprechen oder Garantien, dass das Skript frei von Fehlern ist oder dass es Ihre speziellen Bedürfnisse oder Erwartungen erfüllt.
  • Risikoübernahme: Die Verwendung des Skripts erfolgt auf eigene Gefahr. Sie erkennen an, dass die Nutzung des Skripts mit bestimmten Risiken verbunden ist, und Sie verstehen und übernehmen jedes dieser Risiken.
  • Verzicht und Freigabe: Sie machen NinjaOne nicht für nachteilige oder unbeabsichtigte Folgen verantwortlich, die sich aus Ihrer Nutzung des Skripts ergeben, und Sie verzichten auf alle gesetzlichen oder billigkeitsrechtlichen Rechte oder Rechtsmittel, die Sie gegen NinjaOne im Zusammenhang mit Ihrer Nutzung des Skripts haben könnten.
  • EULA: Wenn Sie ein NinjaOne-Kunde sind, unterliegt Ihre Nutzung des Skripts dem für Sie geltenden Endbenutzer-Lizenzvertrag (EULA).