Dieser Artikel behandelt meine Reise des Lernens über die Linux-Dateisystemarchitektur und die Nutzung meines Wissens zum Schreiben eines Shell-Skripts zum Erstellen von Linux-Benutzern. In meinem zweiten Studienjahr lernte ich das Linux-Dateisystem kennen, als mir das Konzept der Benutzer in den Sinn kam. Ich habe versucht, Benutzer in Linux-basierten Betriebssystemen zu erstellen.
Das Skript ist für die Red-Hat-basierten Betriebssysteme konzipiert und kann mit geringfügigen Modifikationen auch für andere Linux-Distributionen verwendet werden. Beachten Sie, dass es ksh
verwendet .
[Das könnte Ihnen auch gefallen: Linux-Grundlagen für Systemadministratoren:Benutzerkontenverwaltung]
Der Fokus liegt auf Dateien, die sich in /etc
befinden Verzeichnis, in dem die Systemkonfigurationsinformationen gespeichert sind. Ich zeige Ihnen, wie Sie mit Systemdateien arbeiten und einen neuen Nutzer erstellen. Root-Zugriff ist erforderlich.
Hier sind die Dateien, die beim Erstellen eines neuen Benutzers in Linux geändert werden:
- /etc/passwd
- /etc/shadow
- /etc/group
- /etc/gshadow
- /home/USER
- /var/spool/mail/USER
Das System erhöht die Sicherheit des Basisverzeichnisses und Postfachs des Nutzers (USER), indem es die Eigentümerschaft auf den Nutzer und die Gruppe des Nutzers festlegt.
/etc/passwd
Diese Datei speichert Informationen über den Benutzer, wie z. B. Benutzername, Benutzer-ID, Gruppen-ID, vollständiger Name (Kommentar) und Shell. Die Daten werden im folgenden Format gespeichert: UserName:Link:UserID:GroupID:Comment:HomeDirectory:Shell
Jede Zeile der Datei enthält die folgenden Informationen über die Benutzer:
- Benutzername:Bezeichnet den Benutzernamen, der dem Benutzer für den einfachen Zugriff bereitgestellt wird.
- Link:Stellt dar, dass das Passwort des Benutzers in
/etc/shadow
gespeichert ist Datei. Wenn x entfernt wird, wird das Passwort nicht überprüft und der Benutzer kann sich nicht anmelden. - Benutzer-ID:Allgemein als UID bekannt und zur eindeutigen Darstellung eines Benutzers verwendet. Er reicht von 0 bis 65.535.
- UID =0 -> Root-Benutzerkonto
- UID =1.000 bis 60.000 -> Nicht-Root-/allgemeine Konten
- UID =1 bis 999 und 60.001 bis 65.535 -> Systembenutzer
- Gruppen-ID:Gleich wie Benutzer-ID, aber verwendet, um eine Gruppe eindeutig darzustellen.
- Kommentar:Zusätzliche Informationen zum Benutzer. Normalerweise der vollständige Name des Benutzers.
- HomeDirectory:Speicherort des Home-Verzeichnisses des Benutzers.
- Shell:Standard-Shell des Benutzers.
/etc/shadow
Diese Datei speichert die Informationen über das Passwort des Benutzers und enthält das Passwort in verschlüsselter Form.
Die Daten werden in folgendem Format gespeichert:
Benutzername:EncryptedPassword:LastPasswordChange:MinPwdAge:MaxPwdAge:WarningPeriod:InactivityPeriod:ExpirationDate:Unused
- Benutzername:Bezeichnet den dem Benutzer bereitgestellten Benutzernamen.
- Verschlüsseltes Passwort:Das Passwort wird mit Hash-Algorithmen wie sha256, sha512, md5 usw. verschlüsselt und in der Datei gespeichert.
- Letzte Passwortänderung:Speichert das Epochendatum seit der letzten Passwortänderung.
- Min. Passwortalter:Speichert die Anzahl der Tage bis zur nächsten Passwortänderung.
- Standardmäßig 0 -> Kein Mindestalter
- Max. Passwortalter:Speichert die maximale Anzahl von Tagen, nach denen der Benutzer das Passwort ändern muss.
- Standardmäßig 99.999 -> kein Höchstalter
- Warnzeitraum:Anzahl der Tage, nach denen die Warnung angezeigt wird, das Passwort zu ändern.
- Standardmäßig NULL
- Inaktivitätszeitraum:Gibt die Anzahl der Tage nach Ablauf des Benutzerkennworts an, bevor das Konto deaktiviert wird.
- Ablaufdatum:Epochendatum bis zur Deaktivierung des Kontos.
- Nicht verwendet:Reserviert für zukünftige Verwendung.
Andere Dateien
/etc/group
und/etc/gshadow
Dateien sind für Gruppen in Linux und speichern die Daten im Format GroupName:Link:GroupID:MemberList und Gruppenname:Passwort:Reserviert:Mitgliederliste bzw..- Das Home-Verzeichnis des Benutzers ist im Verzeichnis
/home
anzulegen Verzeichnis mit den Daten aus/etc/skel
Ordner. - Mailbox erstellt in
/var/spool/mail
Verzeichnis.
Das Skript
Das Folgende ist das Shell-Skript, das ich geschrieben habe, um neue Benutzer zu erstellen, das in Teile aufgeschlüsselt ist:
uname=$1
id -u $uname&>/dev/null
Zuerst wird geprüft, ob der Nutzer bereits existiert:
if [ $? -ne 0 ]
then
for i in {1000..60000}
do
id -u $i&>/dev/null & id -g $i&>/dev/null
if [ $? -ne 0 ]
then
break
fi
done
uid=$i
echo "$uname:x:$uid:$uid::/home/$uname:/bin/bash">>/etc/passwd
lastpwdchange=$(datediff 1970-01-01 `date +"%Y-%m-%d"`)
echo "$uname::$lastpwdchange:0:99999:7:::">>/etc/shadow
echo "$uname:x:$uid:">>/etc/group
echo "$uname:!::">>/etc/gshadow
mkdir /home/$uname
cp -a /etc/skel/. /home/$uname/
chown $uname:$uname /home/$uname/ -R
chmod 0700 /home/$uname/ -R
touch /var/spool/mail/$uname
chown $uname:$uname /var/spool/mail/$uname
echo "User successfully created"
else
echo "User already exists : try using a unique username">&2
fi
Wenn der Nutzer bereits vorhanden ist, beenden Sie das Programm oder erstellen Sie den Nutzer.
Der vollständige Code ist öffentlich auf GitHub verfügbar.
Führen Sie das Shell-Skript aus
[Anmerkung des Herausgebers:Auch wenn dieses Skript ziemlich einfach erscheinen mag, stellen Sie immer sicher, dass Sie alle Skripts, die Sie finden, verstehen und ihnen vertrauen, bevor Sie sie installieren oder ihre Berechtigungen auf Ihrem System eskalieren. ]
1) Legen Sie das Shell-Skript im Verzeichnis /usr/bin/
ab um es als Befehl zugänglich zu machen.
2) Ausführungsberechtigung für Root-Benutzer hinzufügen:
# chmod u+x /usr/bin/ksh_useradd
3) Führen Sie den Befehl mit dem Benutzernamen als Argument aus:
ksh_useradd USERNAME
4) Das Skript erstellt das Benutzerkonto. Sie müssen vor der ersten Anmeldung ein Passwort für den neuen Benutzer festlegen.
[ Kostenloser Online-Kurs:Technischer Überblick zu Red Hat Enterprise Linux. ]
Abschluss
Dieses Skript kann das Erstellen von Benutzern ein wenig einfacher machen, als sich Schalter für useradd
zu merken Befehl. Sicher, Sie können das useradd
verwenden Befehl, um Benutzer zu erstellen, Berechtigungen festzulegen und das Postfach des Benutzers zu erstellen, aber dieses Skript führt die gleichen Aktionen aus wie useradd
und hilft Ihnen zu erfahren, was mit Ihrem Dateisystem hinter den Kulissen vor sich geht. Ich hoffe, dass die obigen Erklärungen Ihnen helfen, die Konfigurationsdateien im Zusammenhang mit der Benutzererstellung und ihre Felder etwas klarer zu verstehen.