Ich meine, wenn zwei Benutzer denselben Namen haben, woher weiß das System, dass sie tatsächlich unterschiedliche Benutzer sind, wenn es Dateiberechtigungen erzwingt?
Dieser Zweifel kam mir in den Sinn, als ich überlegte, mein Zuhause /home/old-arch
vor der Neuinstallation des Systems umzubenennen (ich habe /home
eine eigene Partition und formatiere sie nicht), damit ich dann eine neue, makellose habe /home/arch
. Ich fragte mich, ob das neue System mir die alten Berechtigungen für meine Dateien geben würde oder ob es mich als ein anderes erkennen würde arch
.
permissions
users
authentication
multiuser
Arch Stanton
quelle
quelle
ls -n
./home/old-arch
vor der Neuinstallation des Systems umzubenennen (ich habe/home
eine eigene Partition und formatiere sie nicht), damit ich dann eine neue, makellose habe/home/arch
. Ich fragte mich, ob ich die gleichen Berechtigungen für meine Dateien behalten würde oder ob das System mich als einen anderen erkennen würdearch
.Antworten:
Unter Unix werden Benutzer anhand ihrer ID (UID) identifiziert, die eindeutig sein muss (im Bereich des lokalen Systems). Selbst wenn es möglich wäre, zwei verschiedene Benutzer mit demselben Namen zu erstellen (Adduser auf meinem System weigert sich, dies zu tun, finden Sie weitere Informationen in dieser Frage. Können separate Unix-Konten einen Benutzernamen gemeinsam nutzen, aber separate Kennwörter haben? ), Müssen sie diese erhalten verschiedene Uids. Während Sie möglicherweise Dateien mit den Benutzerinformationen so bearbeiten können, dass sie Ihren Kriterien entsprechen, basiert jedes Programm auf der Annahme, dass Benutzeroberflächen auf dem System eindeutig sind, sodass diese Benutzer identisch sind.
BEARBEITEN: Die andere Antwort zeigte einen Fall, in dem Sie zwei verschiedene Benutzernamen für dieselbe UID haben. Für das System ist dies jedoch so, als hätten Sie zwei verschiedene Namen für denselben Benutzer. Daher sollten solche Konstrukte nach Möglichkeit vermieden werden , es sei denn, Sie möchten speziell einen Alias für einen Benutzer auf dem System erstellen ( weitere Informationen zu den technischen Details finden Sie in der Frage zum Unix-Benutzeralias bei Serverfault).
Das System verwendet diese UIDs, um Dateiberechtigungen zu erzwingen. Die UID und GID (Gruppen-ID) des Benutzers, zu dem die Datei gehört, werden in die Metadaten der Datei geschrieben. Wenn Sie die Festplatte auf einen anderen Computer mit einem anderen Benutzer übertragen, der zufällig dieselbe UID verwendet, gehört die Datei plötzlich diesem Benutzer auf diesem System. In dem Wissen, dass UIDs auf einem Unix-System normalerweise nicht mehr als 16-Bit-Ganzzahlen sind, zeigt dies, dass die UIDs nicht global eindeutig sein sollen, sondern nur im Umfang des lokalen Systems eindeutig sind.
quelle
Wenn Sie erzwingen, dass dort mehrere Benutzer mit demselben Benutzernamen vorhanden sind, werden mehrere Einträge
/etc/{shadow,passwd}
mit demselben Namen eingegeben:Wenn Sie versuchen, sich als dieser Benutzer anzumelden, melden Sie sich als erste Übereinstimmung an.
Es gibt keine Möglichkeit, sich als zweiter Benutzer mit demselben Namen anzumelden.
Beachten Sie, dass Linux Benutzer anhand ihrer UID und nicht anhand ihres Benutzernamens verfolgt.
Es wäre jedoch möglich, dass zwei verschiedene Benutzernamen dieselbe Benutzer-ID haben. Betrachten Sie eine andere Version von
/etc/passwd
:Beachten Sie, dass für beide Benutzernamen
a
undb
die dritte Spalte 1001 lautet - das ist die UID / Benutzer-ID. Wenn sich Benutzera
oder Benutzerb
anmelden (auch mit unterschiedlichen Kennwörtern), sind beide "Benutzer 1001" und werdena
aus Sicht des Betriebssystems als Benutzer angezeigt. Auch hier ist der erste übereinstimmende Eintrag der zurückgegebene (in den meisten Fällen):Beide
a
undb
sind uid1001
und haben Zugriff auf die für uid verfügbaren Ressourcen1001
.quelle
useradd
einen Fit auslösen, wenn Sie versuchen, einen vorhandenen Benutzer hinzuzufügen. Mit "erzwingen" bedeutet Andy hier also so ziemlich "manuell bearbeiten"/etc/passwd
und/etc/shadow
das ist sehr viel "Versuchen Sie dies nicht zu Hause".setuid
mit der zweiten UID anrufen ? Oder sogarsudo -u '#<uid>' bash
?Wenn Sie ein Einzelbenutzersystem haben und eine Neuinstallation mit derselben oder einer ähnlichen Distribution durchführen, ist es sehr wahrscheinlich, dass Ihr Benutzerkonto dieselbe Benutzer-ID hat und daher aus Sicht des Kernels derselbe Benutzer ist. Zum Beispiel war der Benutzer, der während der Installation erstellt wurde, UID 1000 auf Debian-Systemen, soweit ich mich erinnern kann. Andere Systeme verwenden möglicherweise eine andere Nummer, aber es ist sehr wahrscheinlich, dass es sich um eine kleine Ganzzahl handelt, die bei jeder Installation gleich ist.
Gleiches gilt auch für andere Benutzer (falls vorhanden), da die UIDs normalerweise nacheinander zugewiesen werden. Der dritte erstellte Benutzer hat wahrscheinlich dieselbe UID wie der dritte Benutzer, der auf einem anderen System erstellt wurde. Sie müssen im Voraus Schritte unternehmen, um sicherzustellen, dass die UIDs nicht auf beiden Systemen wiederverwendet werden.
Aus ähnlichen Gründen muss für alles, was NFS verwendet, eine gemeinsam genutzte Benutzerdatenbank vorhanden sein.
Da es sich jedoch um Ihr persönliches System handelt, können Sie sich einfach als root anmelden und ausführen,
chown newuser. -R /home/olduser
selbst wenn die UID unterschiedlich wäre.(Windows-Systeme sind unterschiedlich. Sie generieren diese längere ID-Zeichenfolge, die zufälliger ist. Wenn Sie eine Festplatte auf einen anderen Computer verschieben, werden die Dateien einem unbekannten Benutzer angezeigt, und Sie haben keinen Zugriff, ohne Administratorrechte zu verwenden.
Außerdem habe ich oben "wahrscheinlich" viel gesagt. Es ist nicht abzusehen, ob sich eine Verteilung anders verhält. Modernes Linux unterstützt auch 32-Bit-UIDs. Das ist zwar nicht annähernd so lang wie Windows-SIDs, aber es gibt immer noch Speicherplatz, wenn man z. B. zufällige UIDs haben möchte. Normalerweise nützt das aber nicht viel. Der Systemadministrator soll wissen, welche Festplatten an das System angeschlossen sind, und die Dateibesitzer entsprechend anpassen oder den Mountpoint für andere Benutzer unzugänglich machen.)
quelle
Unix ist ein sehr altes System, eine Ära, in der die Speicherkapazitäten sehr klein waren und alles - sowohl Dateien als auch Benutzer - durch Zahlen identifiziert wurden . Namen kamen später , nachdem die Lagerung etwas gewachsen war.
Ein Grund dieses Systems ist , dass Namen nur Etiketten an den realen Griffe gehakt: die numerischen IDs. Sie können also mehrere Namen für einen Benutzer haben (indem Sie / etc / passwd direkt bearbeiten) sowie mehrere Namen für eine Datei (nützlich, um die Datei nur einmal zu speichern, aber an mehreren Stellen anzuzeigen).
Limits sind das System für den Benutzer und die Partition für die Datei.
Ich sage das nur, um zu klären, warum die Dinge so sind, wie sie sind .
Ich muss gestehen, ich habe nie den umgekehrten Weg versucht - ein gleicher Name mit unterschiedlichen IDs - ich hatte immer gedacht, dass dies nicht möglich ist. Ist es? Nicht als Bug?
quelle