GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Alles Wichtige, was Sie über UID in Linux wissen müssen

Was ist UID in Linux?

UID steht für Benutzerkennung. Eine UID ist eine Nummer, die jedem Linux-Benutzer zugewiesen wird. Es ist die Darstellung des Benutzers im Linux-Kernel. Die UID wird verwendet, um den Benutzer innerhalb des Systems zu identifizieren und um zu bestimmen, auf welche Systemressourcen der Benutzer zugreifen kann. Aus diesem Grund sollte die Benutzer-ID eindeutig sein.

Sie finden die UID in der Datei /etc/passwd gespeichert. Dies ist die gleiche Datei, die verwendet werden kann, um alle Benutzer in einem Linux-System aufzulisten.

Verwenden Sie einen Linux-Befehl, um eine Textdatei anzuzeigen, und Sie sehen verschiedene Informationen über die auf Ihrem System vorhandenen Benutzer.

root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
johndoe:x:1000:1000:John Doe,,,:/home/helder:/bin/bash
davmail:x:127:65534::/var/lib/davmail:/usr/sbin/nologin
statd:x:128:65534::/var/lib/nfs:/usr/sbin/nologin

Das dritte Feld stellt hier die Benutzer-ID oder UID dar.

Beachten Sie, dass in den meisten Linux-Distributionen UID 1-500 normalerweise für Systembenutzer reserviert sind. In Ubuntu und Fedora beginnt die UID für neue Benutzer bei 1000.

Wenn Sie beispielsweise den Befehl adduser oder useradd verwenden, um einen neuen Benutzer zu erstellen, erhält dieser die nächste verfügbare Nummer nach 1000 als UID.

In Linux sind UID 0 und GID 0 für den Root-Benutzer reserviert.

Wie finde ich die UID eines Benutzers in Linux?

Sie können sich immer auf die Datei /etc/passwd verlassen, um die UID eines Benutzers zu erhalten. Das ist nicht die einzige Möglichkeit, die UID-Informationen unter Linux zu erhalten.

Der id-Befehl in Linux zeigt die UID, GID und Gruppen an, denen Ihr aktueller Benutzer angehört:

id
uid=1000(abhishek) gid=1000(abhishek) groups=1000(abhishek),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),116(lpadmin),126(sambashare),127(kvm)

Sie können die Benutzernamen auch mit dem Befehl id angeben, um die UID eines beliebigen Linux-Benutzers zu erhalten:

id standard
uid=1001(standard) gid=1001(standard) groups=1001(standard)

Wie ändere ich die UID eines Benutzers in Linux?

Angenommen, Sie hatten mehrere Benutzer auf Ihrem Linux-System. Sie mussten einen Benutzer löschen, weil er/sie die Organisation verlassen hat. Jetzt möchten Sie, dass seine UID von einem anderen Benutzer übernommen wird, der sich bereits im System befindet.

Sie können die UID ändern, indem Sie den Benutzer mit dem usermod-Befehl wie diesem ändern:

usermod -u 1004 user_2

Sie benötigen Superuser-Rechte, um den obigen Befehl auszuführen.

Erinnern Sie sich an das Dateiberechtigungs- und Besitzkonzept in Linux? Das Eigentum an einer Datei wird durch die UID des Besitzerbenutzers bestimmt.

Was passiert mit den Dateien, die diesem Benutzer gehören, wenn Sie die UID eines Benutzers aktualisieren? Während bei allen Dateien im Home-Verzeichnis von Benutzer_2 die zugehörige UID geändert wird, müssen Sie die zugehörige UID anderer Dateien außerhalb manuell aktualisieren das Home-Verzeichnis.

Was Sie tun können, ist, den Besitz der Dateien, die mit der alten UID von Benutzer_2 verknüpft sind, manuell zu aktualisieren.

find / -user old_uid_of_user_2 -exec chown -h user_2 {} \;

Wie wird UID mit verschiedenen Systemressourcen verknüpft? [für fortgeschrittene Benutzer]

UIDs sind untereinander eindeutig und können daher auch verwendet werden, um den Besitz verschiedener Systemressourcen wie Dateien und Prozesse zu identifizieren.

UID und Dateien

Ich hoffe, Sie sind mit dem Dateiberechtigungskonzept in Linux vertraut. Wenn Sie eine Datei erstellen, sind Sie der Eigentümer dieser Datei. Jetzt können Sie entscheiden, wer was mit dieser Datei machen darf. Dies ist Teil des DAC-Mechanismus von Linux, bei dem jede Datei dem Ermessen ihres Besitzers überlassen wird.

Sie können den Besitz einer Datei lesen, indem Sie entweder den Befehl ls oder stat verwenden. Lassen Sie es uns mit dem beliebten ls-Befehl tun und den Besitz einer der beiden Binärdateien sleep prüfen oder passwd .

Wie Sie sehen können, gehört die Datei /usr/bin/sleep zu root:

ls -l $(which sleep)
-rwxr-xr-x 1 root root 39048 Mar  6  2020 /usr/bin/sleep

Lassen Sie uns zwingen, den Besitz mit der UID anstelle des Benutzernamens zuzuordnen:

ls -lhn $(which sleep)
-rwxr-xr-x 1 0 0 39K Mar  6  2020 /usr/bin/sleep

Hier sind lustige Informationen. Ihr Betriebssystem versteht "Benutzernamen" nicht. Wann immer ein Programm mit Benutzernamen arbeiten oder solche ausgeben muss, verweist es auf /etc/passwd Datei, um die Informationen zu extrahieren.

Du musst meinen Worten nicht glauben. Überzeugen Sie sich selbst mit dem Programm strace, das alle Systemaufrufe eines Programms ausgibt.

strace ls -lhn $(which sleep) 2>&1 | grep passwd

Sie versuchen zu sehen, ob ls Befehl versucht, /etc/passwd zu lesen Datei oder nicht.

strace ls -lh $(which sleep) 2>&1 | grep passwd
openat(AT_FDCWD, "/etc/passwd", O_RDONLY|O_CLOEXEC) = 6

So weit, so gut.

UID und Prozesse

Prozesse haben auch Eigentümer, genau wie Dateien. Nur der Eigentümer (oder der Root-Benutzer) eines Prozesses kann ihm Prozesssignale senden. Hier kommt die UID ins Spiel.

Wenn ein normaler Benutzer versucht, einen Prozess zu beenden, der einem anderen Benutzer gehört, führt dies zu einem Fehler:

kill 3708
bash: kill: (3708) - Operation not permitted

Nur der Eigentümer des Prozesses oder der Root kann dies tun.

Ein Prozess muss geregelt werden. Reguliert, da Sie eine Möglichkeit haben müssen, zu begrenzen oder zu wissen, wie viel ein Prozess tun darf. Dies wird durch seine UID(s) bestimmt.

Es gibt drei Arten von UIDs, die einem Prozess zugeordnet sind.

  1. Echte UID :Real UID ist die UID, die ein Prozess von seinem Elternprozess übernimmt. Einfacher ausgedrückt:Wer auch immer einen Prozess startet, die UID dieses Benutzers ist die tatsächliche UID des Prozesses. Dies ist hilfreich, um festzustellen, wem ein Prozess wirklich gehört. Dies ist besonders wichtig, wenn die effektive UID nicht mit der tatsächlichen UID übereinstimmt, auf die ich als Nächstes eingehen werde.
  2. Gültige UID :Das ist meistens bestimmt, welche Berechtigungen ein bestimmter Prozess wirklich hat. Während ein Benutzer den Prozess starten kann, kann er mit den verfügbaren Berechtigungen eines anderen Benutzers ausgeführt werden. Der Befehl passwd ist ein Beispiel dafür. Dieses Programm bearbeitet die Datei /etc/shadow , das ist root besessen. Daher sollte ein normaler Benutzer diesen Befehl nicht ausführen oder sein Passwort ändern können. Glücklicherweise läuft die Binärdatei mit einer effektiven UID von 0 (d. h. root), wodurch sie über ausreichende Berechtigungen zum Bearbeiten von /etc/shadow verfügt Datei. Reale und effektive UIDs sind meistens gleich, außer im Fall von SUID-Bit-aktivierten Binärdateien.
  3. Gespeicherte UID :UID, die einem Prozess zur Verfügung steht. Dieser wird normalerweise nicht verwendet, ist aber immer noch vorhanden, falls der Prozess weiß, dass er keine privilegierte Arbeit ausführen wird, sodass er seine effektive UID in etwas ändern kann, das nicht privilegiert ist. Dies reduziert die Oberfläche eines unbeabsichtigten Fehlverhaltens.

Das ist es. Ich hoffe, Sie haben jetzt eine bessere Vorstellung von UID in Linux. Zögern Sie nicht, Ihre Fragen zu stellen, falls vorhanden.

Wenn Sie als Profi-Linux-Benutzer denken, dass ich ein wichtiges Konzept zur UID verpasst habe, lassen Sie es mich bitte im Kommentarbereich wissen.


Linux
  1. Alles, was Sie über Ubuntu 13.04 wissen müssen

  2. Was ist SteamOS? Alles Wichtige, was Sie über diese „Gaming-Distribution“ wissen müssen

  3. Linux-tmp-Verzeichnis:Alles, was Sie wissen müssen

  4. Linux-Dateikomprimierung:Alles, was Sie wissen müssen

  5. Linux-Dateiberechtigungen:Alles, was Sie wissen müssen

Alles, was Sie über Peppermint Linux OS wissen müssen

Alles, was Sie über Black Lab Linux wissen müssen

Alles, was Sie über die Linux Mint-Distribution wissen müssen

Alles, was Sie über Inodes in Linux wissen müssen

Alles Wichtige, was Sie über Hard Link in Linux wissen müssen

Alles, was Sie über das Linux /tmp-Verzeichnis wissen müssen