Wie entferne ich einen Benutzer aus einer Gruppe?


343

Welchen Befehl soll ich verwenden, um einen Benutzer aus einer Gruppe in Debian zu entfernen?

Wenn Sie einen Benutzer zu einer Gruppe hinzufügen, können Sie folgende Schritte ausführen:

usermod -a -G group user

Ich konnte jedoch keinen ähnlichen Befehl finden (der eine Gruppe und einen Benutzer als Argumente akzeptiert), um den Benutzer aus der Gruppe zu entfernen. Der nächste, den ich bekommen könnte, ist:

usermod -G all,existing,groups,except,for,group user

Gibt es einen Befehl wie usermod OPTION group usermit OPTION eine Option, um usermodden Benutzer (oder ein ähnliches Programm) aus der Gruppe zu entfernen?


1
Für Fedora-Benutzer, die hier landen, verrät man usermod in den Kommentaren der Option -G, dass eine Auflistung aller aktuellen Gruppen beibehalten werden soll, IST die Möglichkeit, eine Gruppe zu löschen. Keine -R Option mit Fedora; Sie müssen Lekensteyns Ansatz verwenden, den er zu vermeiden versucht.
Stephen

Antworten:


404

Sie können verwenden gpasswd:

# gpasswd -d user group

Dann wird die neue Gruppenkonfiguration beim nächsten Login zugewiesen, zumindest unter Debian. Wenn der Benutzer angemeldet ist, werden die Auswirkungen des Befehls nicht sofort angezeigt.


9
Perfekt danke! gpasswd -a user groupDas Hinzufügen des Benutzers zur Gruppe erscheint auch angenehmer, insbesondere wenn ein Tippfehler gemacht wurde und die -aOption verworfen wird.
Lekensteyn

1
Funktioniert bei mir nicht. Ich erhalte zwei Meldungen: a) Benutzer aus Gruppe entfernen. b) gpasswd: Benutzer ist kein Mitglied der Gruppe. Danach zeigt die laufende "Mitgliedergruppe" keine Änderung.
Geoidesic

1
@geoidesic Sie müssen sich abmelden und erneut anmelden, um den Effekt zu sehen
Wasif Hossain

1
Gibt es eine Möglichkeit, die Änderung wirksam werden zu lassen, ohne sich erneut anmelden zu müssen?
Andy Fusniak

2
@geoidesic Ich habe diese Fehler auf Centos 7 erhalten. Ich habe festgestellt, dass Sie diese haben, wenn Sie versuchen, den Benutzer aus seiner Standardgruppe zu entfernen. Versuchen Sie, die Standardgruppe mit zu wechseln, usermod -g user userund versuchen Sie dann, sie zu entfernen.
PanPipes

175

Unter Debian adduserenthält das Paket ein deluserProgramm, das einen Benutzer aus einer Gruppe entfernt, wenn Sie beide als Argumente übergeben:

deluser user group

Wenn Ihre Distribution nicht hat adduser, können Sie bearbeiten /etc/groupund /etc/gshadowmanuell.

vigr
vigr -s

10
Ich kannte keine Programme wie vigrund vipw. Sehr nützlich für den Fall, dass die Hilfeseiten zu weit weg sind :)
Lekensteyn

3
Alternativ können Sie nach dem Ändern /etc/groupdie grpconvAktualisierung ausführen , /etc/gshadowanstatt sie zu bearbeiten.
Cyrille

sudo deluser jenkins admin/ usr / sbin / deluser: Sie dürfen den Benutzer nicht aus seiner primären Gruppe entfernen.
Jonathan

@ JonathanLeaders Jeder Benutzer muss mindestens einer Gruppe angehören. Verwenden Sie usermododer vipw, um die primäre Gruppe des Benutzers zu ändern. Diese Frage betraf Ergänzungsgruppen.
Gilles

Nett. Es gibt auch den einfacheren adduser $user $groupBefehl anstelle des usermod -x -y -z -....
ygoe

65
usermod -G "" username

Entfernt alle sekundären / ergänzenden Gruppen aus dem Benutzernamen und belässt sie nur als Mitglied ihrer primären Gruppe. Dies funktionierte in Solaris 5.9


5
Getestet in CentOS 6.4; funktioniert.
aggregate1166877

1
Funktioniert auch in Ubuntu 12.04.
aggregate1166877

Und dies scheint der beste Weg zu sein, um die sekundären Gruppen zu einer Liste von Gruppen zu zwingen , mit Ausnahme aller nicht aufgelisteten Gruppen.
Salbei

Getestet und funktioniert in CentOS 7. Danke!
Tricky

14

Dies ist der Ansatz der "alten Schule" ...

Die meisten * nix - Systemen pflegen Gruppeninformationen in eine Textdatei /etc/group, in der

  • Jede Zeile enthält die Felder

    • Gruppenname
    • Passwort
    • GID und
    • Benutzerliste

    durch das :Zeichen begrenzt.

  • Das Feld user_list ist eine Liste von Benutzernamen, die durch Kommas getrennt sind.

Angenommen, Sie möchten einen Benutzer mit dem Namen thisuser aus einer Gruppe mit dem Namen entfernen thatgroup. Beginnen Sie mit dem Sichern /etc/groupund verwenden Sie dann den Editor Ihrer Wahl mit den Rechten su , um die Datei zu bearbeiten /etc/group und den thisuserVerweis aus dem Zeileneintrag zu entfernen thatgroup, z.

Die ursprüngliche Zeile sieht ungefähr so ​​aus:

thatgroup:x:1274:someuser,thisuser,anotheruser

nach der Bearbeitung sollte so belassen werden:

thatgroup:x:1274:someuser,anotheruser

Wie bei allen anderen Antworten hat dies keine Auswirkungen auf die aktuelle (n) Sitzung (en) des Benutzers (dh, wenn der Benutzer derzeit angemeldet ist). Die Änderung wird beim nächsten Anmelden des Benutzers wirksam.


1
vigrwurde bereits zur /etc/groupmanuellen Bearbeitung erwähnt . In meinen Manualpages steht, dass Benutzernamen durch Kommas und nicht durch Doppelpunkte getrennt sind. Ein Neustart ist nicht erforderlich, Sie müssen sich nur erneut anmelden (oder verwenden newgrp).
Lekensteyn

Um Nicht-Debian-Benutzern zu helfen, die diese Ufer nach Hinweisen absuchen, mag dies für Debian gemäß dem Umfang der OP-Frage ausreichen, aber wenn Sie dies für ein * BSD-Betriebssystem verwenden würden, müssten Sie die Klartextdatei modifizieren Geben Sie hier wie erwähnt eine pwd_mkdb -p /etc/master.passwd ein, um diese Liste tatsächlich zu verwenden.
Danno

3

Sie können den folgenden Befehl für SUSE-Distributionen (und anscheinend für keine anderen ) verwenden.

usermod -R group  benutzername

Wo groupist die Gruppe, aus der Sie den Benutzer entfernen möchten, und user_nameder Benutzer, den Sie aus der Gruppe entfernen möchten? Zum Beispiel,

usermod -R root imnottheroot

1
Welches Paket stellt Ihr usermod-Binary zur Verfügung? Ich bitte, die Version herauszufinden, da meine von shadow-utils-4.1.4.3 nicht die Option -R bietet.
Myroslav

3
Mein Paket shadow 4.1.5.1-5 (Arch Linux) hat eine -ROption, aber das bedeutet etwas anderes. Es ist wohl kein Linux.
Lekensteyn

3
Ich bin mir nicht sicher, ob das funktionieren wird. In der Manpage heißt -Res: "-R, --root CHROOT_DIR Übernimmt die Änderungen im Verzeichnis CHROOT_DIR und verwendet die Konfigurationsdateien aus dem Verzeichnis CHROOT_DIR."
MikeKusold

2
Das einzige, was ich finden konnte, war diese Orakel-Manpage, aber das ist immer noch nicht dasselbe, daher sollte diese Antwort vielleicht entfernt werden.
kyrias

sudo usermod -R admin jenkinsusermod: ungültiger chroot-pfad 'admin'
Jonathan

1

Erwägen:

  • Nutzername: abc2
  • Gruppenname: newgroup11

  • Aufgabe: Benutzer abc2aus Gruppe entfernennewgroup11

[root@home1 ~]# groups abc2
abc2 : abc2
[root@home1 ~]# usermod -G newgroup11 abc2
[root@home1 ~]# groups abc2
abc2 : abc2 newgroup11
[root@home1 ~]# usermod -G newgroup11 abc2
[root@home1 ~]# usermod -G abc2 abc2
[root@home1 ~]# groups abc2
abc2 : abc2

** Bitte korrigiere mich, wenn ich falsch liege. **


1
Dies "funktioniert", aber nur, weil Sie eine einzige sekundäre Gruppe haben. usermod -G newgroup11 abc2wird Sie in die sekundäre Gruppe setzen newgroup11. Da die primäre Gruppe ist abc2, werden Sie in beiden Gruppen enden. usermod -g abc2 abc2führt dazu, newgroup11dass es aus den sekundären Gruppen entfernt wird, weil es nicht mehr erwähnt wird. Für drei oder mehr verschiedene Gruppen funktioniert diese Methode nicht. Lesen Sie die anderen Antworten, gpasswdum einen besseren Befehl zu erhalten.
Lekensteyn

1

Sie können Benutzer aus der Gruppe entfernen, indem Sie den Befehl usermod ohne die Option -a ausführen. Wenn Sie beispielsweise "usermod -G group1 username" ausführen, wird der Benutzer zu group1 hinzugefügt und aus allen anderen Gruppen entfernt, in denen er sich befindet. Denken Sie daran, dass Sie Benutzer in verschiedenen Gruppen halten können, indem Sie die Gruppennamen durch Kommas trennen.


1
Diese Informationen wurden bereits mehrfach präsentiert.
Scott

0

Um usermod weiterhin in einer Distribution (wie Fedora) zu verwenden, die keine Option zum Entfernen hat, bei der user = bob und group = deletethisgroup, lautet der Befehl:

usermod -G `cat /etc/group |  grep bob | grep -v deletethisgroup | cut -d ':' -f 1 | tr '\n' ',' | sed 's/,$//'` bob

Die Pipes (1) erhalten alle Gruppeneinträge, zu denen der Benutzer gehört, (2) entfernen den zu entfernenden, (3) geben die erste Spalte (Gruppenname) zurück, ersetzen die Zeilenvorschubzeile durch Komma und entfernen das nachfolgende Komma.

Natürlich können Sie all das in ein Bash-Skript schreiben, bei dem Benutzer und Gruppe als Parameter gelöscht werden. awk könnte verwendet werden, um das Ende zu verkürzen, aber ich wollte mich an grep, cut, tr und sed halten.


Nach diesem Mann Seite , gpasswd -d bob deletethisgroupist auch vorhanden. Gibt es einen Grund, warum Sie es nicht benutzen?
Lekensteyn

Nicht jeder möchte Gruppenpasswörter einrichten. Ich habe nur eine Lösung mit dem Befehl angeboten, auf den in der Frage zu einer bestimmten Distribution verwiesen wurde. In Fedora / RHEL / Centos mit gpasswd -d kann der entfernte Benutzer der Gruppe weiterhin beitreten, wenn er Zugriff auf das Kennwort hat. Es erhöht tatsächlich den Gruppenzugriff, anstatt ihn zu verbieten.
Stephen

Ich habe verstanden, dass das Dienstprogramm benannt ist, gpasswdweil es in enger Beziehung zu steht /etc/passwd, aber stattdessen Gruppen verwaltet. Im Gegensatz zu dem einfachen passwdBefehl, der nur Passwörter steuert, gpasswdkann er auch zum Verwalten der Mitgliedschaft in einer Gruppe verwendet werden. Ein Gruppenkennwort ist nicht erforderlich, wenn Sie Root oder Gruppenadministrator sind.
Lekensteyn

Hast du das gpasswd-Handbuch gelesen? Wenn Sie unter Fedora / RHEL / CentOS das Handbuch lesen, wird angegeben, dass der Befehl "zur Verwaltung von / etc / group und / etc / gshadow verwendet wird". Es hat tatsächlich keine Auswirkung auf / etc / passwd. Das Handbuch gibt außerdem an, dass "Gruppenkennwörter ein inhärentes Sicherheitsproblem darstellen, da mehr als eine Person das Kennwort kennen darf." Die Mitgliedschaft in einer Gruppe wird nicht verwaltet, sondern die Gruppe wird für JEDEN Benutzer mit dem Kennwort geöffnet. Ein Gruppenkennwort ist nicht erforderlich, wenn Sie bereits Mitglied der Gruppe sind.
Stephen

Eng verwandt war im Sinne einer ähnlichen Benennung und Zweckbestimmung nicht, dass die Datei / etc / passwd tatsächlich von gpasswd verwaltet wird. Beachten Sie, dass "man page" in meinem ersten Kommentar auf die Handbuchseite von gpasswd für Fedora 13 verweist. Mit können gpasswd $groupSie das Gruppenkennwort festlegen, das das von Ihnen erwähnte Sicherheitsproblem verursacht. Sie können jedoch auch kein Passwort haben und verwenden gpasswd -d $user $group, um einen Benutzer zu löschen, wie im ersten Kommentar und der akzeptierten Antwort beschrieben. Beachten Sie, dass dieser Befehl weder zur Eingabe eines Gruppenkennworts auffordert noch dieses ändert oder erfordert.
Lekensteyn

0

Angenommen, Benutzername = Schüler und Gruppenname = Recherche . Um studentBenutzer aus der researchGruppe zu entfernen , müssen folgende Schritte ausgeführt werden :

gpasswd -d student research

Warum etwas wiederholen, das 6 Jahre zuvor hier war? Es ist als akzeptierte Antwort markiert!
Betlista

-1
pw groupmod "groupname|gid" -d "username|uid"

Eine Lösung, wenn Sie CSH verwenden, aus welchem ​​Grund auch immer.


-1

Um einen Benutzer aus einer Gruppe zu entfernen, ist gpasswd das beste Dienstprogramm für diese IMO.

Befehlsbeispiel:

sudo gpasswd -d group user

* Hilfe Info *

Usage: gpasswd [option] GROUP

Options:
  -a, --add USER                add USER to GROUP
  -d, --delete USER             remove USER from GROUP
  -h, --help                    display this help message and exit
  -Q, --root CHROOT_DIR         directory to chroot into
  -r, --delete-password         remove the GROUP's password
  -R, --restrict                restrict access to GROUP to its members
  -M, --members USER,...        set the list of members of GROUP
  -A, --administrators ADMIN,...
                                set the list of administrators for GROUP
Except for the -A and -M options, the options cannot be combined.

1
Die Gruppen- und Benutzerargumente werden ausgetauscht. Auch ist dies genau das, was die akzeptierte Antwort vorschlug, dieser Beitrag ist nicht wirklich hilfreich?
Lekensteyn
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.