Was tut 'sudo usermod -a -G group $USER' auf Linux?
In our posts, especially posts like Solving Docker permission denied while trying to connect to the Docker daemon socket you can often see commands like
sudo usermod -a -G docker $USERAber was tut dieser Befehl tatsächlich auf deinem System?
Lass es uns aufschlüsseln:
sudobedeutet: Führe diesen Befehl als root aus. Dies ist für usermod erforderlich, da normalerweise nur root ändern kann, zu welchen Gruppen ein Benutzer gehörtusermodis a command that modifies the system configuration for a specific user ($USERin our example - see below). See the manpage documentation for more details on what you can do with it!-aist eine Abkürzung für--append: Es bedeutet, die Gruppe zur Liste der Gruppen, zu denen der Benutzer gehört, anzufügen!-Gis a shortcut for--groups: It tells usermod that the next argument is a group. Note that you need to use a capital-Ghere because we don’t want to modify the user’s primary group but the list of supplemental groups the user belongs to. See the Primary and supplemental groups section below for more details.dockerist die Gruppe, zu der wir$USERhinzufügen möchten. Dies könnte jede Linux-groupsein, vorausgesetzt, sie existiert. Verwendeless /etc/group, um alle existierenden Gruppen anzusehen!$USERist der Benutzer, den wir ändern möchten.$USERist ein Shell-Shortcut für den Benutzer, der den Befehl ausführt. Dies funktioniert auch bei Verwendung vonsudo(d.h. wenn dein Benutzeruliheißt und dusudo usermod -a -G docker $USERausführst, wird der Benutzer uli zur docker-Gruppe hinzugefügt, nicht der Benutzer root, obwohl der Befehl als root ausgeführt wird). Du kannst auch einen bestimmten Benutzernamen anstelle von $USER verwenden, z.B.sudo usermod -a -G docker john, um den Benutzerjohnzur docker-Gruppe hinzuzufügen
Primäre und zusätzliche Gruppen
Wenn du durch die usermod-Manpage blätterst, wirst du sehen, dass es -G gibt, das eine Gruppe zur Liste der zusätzlichen Gruppen eines Benutzers hinzufügt, und es gibt -g, das die primäre Gruppe eines Benutzers ändert.
Die pragmatische Antwort ist: Wenn du fragen musst, wirst du immer -G verwenden müssen.
Das Ändern der primären Gruppe eines Benutzers ist meiner Erfahrung nach extrem selten. Der Zweck der Existenz primärer Gruppen ist hauptsächlich, dass Linux wissen muss, zu welcher Gruppe eine Datei standardmäßig gehört, wenn du eine Datei erstellst (d.h. wenn du keine Gruppe explizit angibst).
See this AskUbuntu post for more details on the purpose of primary and supplemental groups.