Gibt es in Linux eine Möglichkeit, die Benutzer- / Gruppeneigenschaften zu aktualisieren, ohne sich erneut anmelden zu müssen?

24

Nachdem ich / etc / group bearbeitet und einen Benutzer zu Gruppen hinzugefügt habe, zu denen er nicht gehört, kann der Benutzer seine neu erworbenen Berechtigungen nur verwenden, wenn eine neue Sitzung gestartet wird.

Gibt es einen Befehl zum Aktualisieren von Benutzer- / Gruppeneigenschaften in einer laufenden Sitzung?

wonea
quelle
1
Gibt es einen Grund, warum Sie die Datei manuell bearbeiten, anstatt sie zu verwenden useradd -G groupname username?
Bobby
4
@Bobby: das würde keinen Unterschied machen.
NiXar
Sie könnten diese Antwort aussehen .
Pablo A

Antworten:

16

Auf der Kernel-Ebene ist die Gruppenzugehörigkeit eine Eigenschaft jedes Prozesses. Ein Prozess kann keiner neuen Gruppe angehören, es sei denn, er verfügt über die entsprechende Funktion (CAP_SETGID, wenn ich mich nicht irre), dh Root-Berechtigungen in jeder Hinsicht.

Ein Benutzer existiert nicht als Objekt auf Kernelebene. Nur Prozesse (und Dateien) tun dies. Ein Prozess hat eine UID (effektiv und so weiter) und eine Liste von Gruppen-IDs.

Wenn Sie einen Benutzer zu einer Gruppe hinzufügen, hat der Kernel keine Ahnung, was dies bedeutet. Sie weiß nur indirekt, dass bei der nächsten Ausführung von / bin / login oder / usr / bin / newgrp ein Prozess mit dieser Benutzer-ID eine neue Gruppen-ID in der Liste hat.

Wenn Sie also von einer Gnome- oder KDE-Sitzung sprechen, müssen Sie sie tatsächlich neu starten, um Ihre Frage zu beantworten. Oder wenn Ihnen nur das Ergebnis eines Befehls für diese neue Gruppe wichtig ist, können Sie newgrp verwenden, das ich gerade erwähnt habe. Es wird eine neue Shell mit der neu hinzugefügten Gruppe gestartet.

niXar
quelle
5

Ich habe zuvor gelesen, dass der Befehl newgrp dies tut, aber nur für die aktuelle Shell. Es scheint keine bessere Alternative zu geben, als sich aus- und wieder einzuloggen.

Andy Shellam
quelle
3
Newgrp startet eine neue Shell. Also, wenn du davon abgehst, kehrst du zu deiner alten Muschel zurück. Normalerweise mache ich 'exec newgrp'
niXar