Warum hat ein neuer Benutzer Dateien von einem gelöschten Benutzer geerbt?

24

Also musste ich als Hausaufgabe eine Übung in einem Buch machen. Zuerst musste ein Benutzer angelegt werden wie:

useradd -c "Steven Baxter" -s "/bin/sh" sbaxter

Dann mussten Sie einige Dateien zum /home/sbaxterVerzeichnis hinzufügen :

touch /home/sbaxter/ some.txt new.txt files.txt

Dann mussten Sie den sbaxterBenutzer entfernen und einen neuen Benutzer mit dem Namen erstellen mjane. Zu meiner Überraschung find /home/ -user mjanebesaß der neue Benutzer mjanejetzt alle alten Dateien von sbaxter. Was ist passiert?

John
quelle

Antworten:

41

Der Teufel steckt im Detail auf der useraddManpage (das können Sie sehen, wenn Sie Folgendes eingeben man 8 useradd):

   -u, --uid UID
       The numerical value of the user's ID. This value must be unique,
       unless the -o option is used. The value must be non-negative. The
       default is to use the smallest ID value greater than or equal to
       UID_MIN and greater than every other user.

Daher wird standardmäßig die kleinste unbenutzte UID verwendet, die größer als die anderer Benutzer ist, und zwar in der Kennwortdatei. Da sbaxter ihn beim Löschen aus der passwd-Datei entfernt hat, ist seine UID "frei" und wird mjane zugewiesen (da die UID-Auswahl useraddfür beide Benutzer zum Zeitpunkt der useraddVerwendung des Befehls gleich war).

Dateien auf der Festplatte speichern nur die UID und NICHT die Übersetzung des Benutzernamens (da diese Übersetzung in der Kennwortdatei definiert ist). Sie können dies bestätigen, indem ls -lnSie Folgendes ausgeben, um zu sehen, welche UID-Besitzerdateien vorhanden sind.

Eigentlich würde ich empfehlen, dass Sie Konten deaktivieren, anstatt sie zu löschen. Das usermod -L -e today <username>Sperren von Konten auf den meisten Linux-Distributionen kann mit erreicht werden , wodurch das Kennwort gesperrt wird und das Konto so eingestellt wird, dass es heute abläuft (Sie können das Ablaufdatum eines Kontos mit anzeigen chage -l).

Drav Sloan
quelle
2
... das scheint eine schreckliche Sicherheitslücke zu sein. Gibt es eine Möglichkeit, dies zu umgehen?
BlueRaja - Danny Pflughoeft
6
@ BlueRaja-DannyPflughoeft Dies ist keine Sicherheitslücke: Benutzer werden anhand ihrer Benutzer-ID und nicht anhand ihres Benutzernamens identifiziert. Wenn Sie ein Konto löschen, müssen Sie alle zugehörigen Dateien entfernen (dh alle Dateien, deren Eigentümer diese Benutzer-ID ist, nicht nur das Basisverzeichnis des Benutzers). Dies ist Teil des normalen Verfahrens zum Entfernen eines Kontos.
Gilles 'SO - hör auf böse zu sein'
2
@OlivierDulac Das nennt man ein Backup. Alternativ können Sie das Konto sperren, aber nicht entfernen, solange Sie die Daten behalten müssen. Wenn Sie die Daten aufbewahren müssen, ist das Konto immer noch erforderlich.
Gilles 'SO - hör auf böse zu sein'
1
Das usermod -L -e today <username>Sperren von Konten auf den meisten Linux-Distributionen kann mit erreicht werden , wobei das Kennwort gesperrt wird und das Konto so eingestellt wird, dass es heute abläuft (das Ablaufdatum eines Kontos wird mit angezeigt chage -l).
Drav Sloan
5
Dies ist nach heutigen Maßstäben eine Sicherheitslücke. Wie das Beispiel zeigt, können Sie also keine Personen mit Dateien verknüpfen. Sicher, Menschen sind möglicherweise stark mit Konten verbunden, aber die <-> Konto <-> Zuordnungsdatei bricht aufgrund des UID-Recyclings zusammen. Andererseits hatte Unix in dieser Hinsicht nie große Sicherheit ( rootkonnte fast alles vortäuschen). Dafür benötigen Sie Audit Trails.
MSalters
13

Die UID des gelöschten Benutzers wurde vom neuen Benutzer erneut verwendet, und Dateisysteme verwenden eine UID als Eigentümer und keinen Benutzernamen.

Ignacio Vazquez-Abrams
quelle