Wird es immer ein Paar derselben UID und GID geben?

11

Ich muss den Besitz der Datei / des Verzeichnisses mithilfe von chmodändern. Ich kenne nur den Benutzernamen des Besitzers, möchte aber gleichzeitig den Standardgruppennamen ändern. Zu diesem Zeitpunkt ist der Gruppenname noch nicht festgelegt, daher setze ich den gleichen Namen wie den Benutzernamen

chown -R username:username path_to_dir

Der Befehl kann für verschiedene Systeme / Benutzer ausgeführt werden. Mein Anliegen ist also, dass Linux immer ein Paar Benutzername (Benutzer) hat: Benutzername (Gruppe) ODER irgendwann kann dieser Standardgruppenname einen Fehler verursachen.

Obwohl ich angefangen habe, GID vom Benutzer zu finden, gehört

id username | tr '(=)' ':' | awk -F: '{print $3}

Aber für Wissen möchte ich wissen. Bis jetzt haben Analysen mit /etc/passwd /etc/groupsAusnahme weniger Benutzer wie "Herunterfahren, Anhalten, Synchronisieren, Öffnen" alle Benutzer ebenfalls in Gruppen aufgelistet.

EDIT 1: id -gn Benutzername ist auch eine gute Option

Akaks
quelle
3
Haben Sie im zweiten Beispiel gesucht id -g username?
user1686
1
Oder id -gn usernamedie den Namen anstelle der ID druckt.
Cristian Ciupitu
Unter Linux gibt es auch viele "Gerätegruppen" - z. Festplatte, Mem, kmem, Audio, Video usw. - die keinen entsprechenden Benutzer haben.
Baard Kopperud

Antworten:

20

Es gibt keine Garantie dafür, dass der Gruppenname = usernamevorhanden ist.

Das häufigste Szenario ist, dass Systemadministratoren unter Linux einen neuen Benutzer lokal auf dem System erstellen, ohne dass eine explizite Angabe für die Gruppe vorliegt. Dies bedeutet, dass die Gruppe standardmäßig genauso wie der Benutzername erstellt wird und dem Benutzer zugewiesen wird Die Standard-GID der neu erstellten Gruppe.

Dies bedeutet nicht, dass ein anderer Systemadministrator dieses Verfahren befolgt. Wenn Sie andere Namensdienste wie NIS oder LDAP in den Mix aufnehmen, entspricht die als Standard zugewiesene Gruppe wahrscheinlich nicht der neuen GID mit dem Gruppennamen und dem Benutzernamen.

Sie sollten sich also nicht darauf verlassen, dass Benutzername = Gruppenname

Karlson
quelle
Dies hängt möglicherweise nicht nur von den lokalen Administratorrichtlinien ab, sondern auch von den Tools, die in verschiedenen Distributionen enthalten sind. Viele Websites akzeptieren nur die Standardeinstellungen der bereitgestellten Tools. Während die meisten Distributionen, die ich im Laufe der Jahre verwendet habe, mit einem useraddSkript geliefert werden, das standardmäßig eine Gruppe mit demselben Namen erstellt, haben nicht alle. Als ich es das letzte Mal verwendet habe (vor vielen, vielen Jahren), hatte das Benutzererstellungsskript von slackware standardmäßig eine einzelne Gruppe users, zu der stattdessen alle Benutzer gehörten. docs.slackware.com/slackbook:users schlägt vor, dass dies möglicherweise immer noch der Fall ist.
Jules
11

Obwohl die Benutzergruppe für private Gruppen in modernen Linux-Systemen häufig verwendet wird, benötigt * nix nicht für jeden Benutzer eine eindeutige Primärgruppe, und es ist durchaus möglich, dass mehrere Benutzerkonten eine gemeinsame Primärgruppe wie usersoder gemeinsam nutzen staff.

Selbst in Fällen, in denen die UPG-Sprache erzwungen wird, gibt es keinen besonderen Grund dafür, dass die numerische GID einer bestimmten UPG der UID des Eigentümers entsprechen sollte, obwohl die meisten Tools zur Kontoerstellung versuchen, UIDs und GIDs in der richtigen Reihenfolge zuzuweisen verfügbar. Die IDs können leicht aus dem Takt geraten, wenn die Benutzer und / oder Gruppen über mehrere Systeme hinweg konsistent gemacht werden müssen (z. B. um bereits vorhandene NFS-Freigaben aufzunehmen).

Steeldriver
quelle
6

Wie Ramesh standardmäßig angegeben hat, sind UID und GID für normale Benutzer gleich. Dies ist jedoch nicht immer der Fall, sodass Sie keine solche Annahme treffen dürfen, da dies Ihr System zerstören kann. Das Zuweisen von Datei- / Ordnerberechtigungen zu einer falschen Gruppe ist etwas chaotisch, nicht wahr?

Die kurze Antwort lautet: Nein, UID ist nicht immer gleich GID. Dennoch /etc/passwdenthält sowohl die UID und GID der Standardgruppe auf der gleichen Linie , so dass es ziemlich einfach ist , sie zu extrahieren.

Erathiel
quelle
"Standardmäßig sind UID und GID für normale Benutzer gleich" - tatsächlich gilt diese Aussage nur, wenn Sie "auf einigen gängigen Linux-Distributionen" hinzufügen. Ja, Ubuntu et al. Machen Sie es so, aber ich würde eine gemeinsame "Benutzer" -Gruppe eher als Standard betrachten.
Jstarek
Ja, wenn wir 100% präzise sein wollen, dann haben Sie Recht. Wir müssten wahrscheinlich ein Dutzend weiterer "Wenn" hinzufügen, um keine einzige Ausnahme zu verpassen. Alle meine Debian-basierten Distributionen (LMDE, Crunchbang, reines Debian) verhalten sich so und ein CentOS 6.5 habe ich auch. Beachten Sie jedoch, dass ich keine großen Benutzermengen hinzufügen muss, die ich eher benutze adduserals useraddund die Standardeinstellungen /etc/adduser.confsind so eingestellt, USERGROUPS=yesdass für jeden neuen Benutzer eine Gruppe erstellt wird. Diese Gruppen haben normalerweise (jedoch nicht immer) dieselbe GID wie die UID des Benutzers, für den sie erstellt wurden.
Erathiel
2

Über diesen Link sehe ich die folgenden Informationen.

Eine Benutzer-ID (UID) ist eine eindeutige positive Ganzzahl, die jedem Benutzer von einem Unix-ähnlichen Betriebssystem zugewiesen wird. Jeder Benutzer wird dem System anhand seiner UID identifiziert, und Benutzernamen werden im Allgemeinen nur als Schnittstelle für Menschen verwendet.

UIDs werden zusammen mit ihren entsprechenden Benutzernamen und anderen benutzerspezifischen Informationen in der /etc/passwdDatei gespeichert, die mit dem Befehl cat wie folgt gelesen werden kann:

cat /etc/passwd

Das dritte Feld enthält die UID, und das vierte Feld enthält die Gruppen-ID (GID), die standardmäßig der UID für alle normalen Benutzer entspricht.

BEARBEITEN

Wie @Karlson jedoch betont, ist es nicht wahr, dass die UID standardmäßig der GID entspricht.

Die Aussage ist nur wahr, wenn keine gewöhnlichen Gruppen separat hinzugefügt werden und bei keiner Benutzererstellung explizit Gruppen angegeben werden . Standardmäßig gid für den nächsten hinzugefügten Benutzer = max(gid) + 1. Es gibt keine Korrelation zwischen UID und GID, die von einem * NIX-System benötigt wird, das in einigen Fällen zufällig zusammenfällt.

Weitere Referenzen

http://www.thegeekstuff.com/2009/06/useradd-adduser-newuser-how-to-create-linux-users

Ramesh
quelle
Die letzte Aussage ist völlig falsch. UID = GID nur für den Fall, dass der neue Benutzer auf dem lokalen System erstellt wird und die GID keiner vorhandenen Gruppe explizit zugewiesen wird.
Karlson
Nein, es ist nicht völlig falsch, da eindeutig "standardmäßig" steht. Eine Klarstellung wäre hier sehr willkommen.
Erathiel
1
@Erathiel Standardmäßig entspricht die GID der bei der Benutzererstellung zugewiesenen GID. Wenn der Benutzer lokal und ohne Angabe der GID im -gFlag useradddes Programms erstellt wird, wird eine Gruppe für Sie erstellt. Wenn keine GID-Verschiebung stattgefunden hat, ist dies = UID. Wenn die Erstellungsmethode jedoch nicht bekannt ist, können Sie sich nicht darauf verlassen, dass dies der Fall ist:uid=123456(ME) gid=777(ABC) groups=777(ABC)
Karlson
Auf einigen Systemen erstellt useradd auch eine gleichnamige Gruppe für das Konto. Kommt auf den Geschmack von Linux an.
Pete
@ Karlson, ich habe nie erwähnt, dass es immer gleich sein wird. Es ist klar festgelegt, dass es standardmäßig für alle normalen Benutzer der UID entspricht .
Ramesh