Jak usunąć użytkownika z grupy?


342

Jakiego polecenia powinienem użyć do usunięcia użytkownika z grupy w Debianie?

Dodając użytkownika do grupy, można to zrobić za pomocą:

usermod -a -G group user

Nie udało mi się jednak znaleźć podobnego polecenia (akceptującego grupę i użytkownika jako argumenty) w celu usunięcia użytkownika z grupy. Najbliższe, jakie mogłem uzyskać, to:

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

Czy istnieje takie polecenie, jak w usermod OPTION group userprzypadku OPCJI, aby usermod(lub podobny program) usunąć użytkownika z grupy?


1
Dla użytkowników Fedory, którzy tu trafią, man usermod ujawnia w opcji -G komentarze, że lista wszystkich bieżących grup chce zostać zachowana JEST sposobem na usunięcie grupy. Brak opcji -R w Fedorze; musisz zastosować podejście Lekensteyna, którego on próbuje uniknąć.
— Stephen

Odpowiedzi:


403

Możesz użyć gpasswd:

# gpasswd -d user group

wtedy nowa konfiguracja grupy zostanie przypisana przy następnym logowaniu, przynajmniej na Debianie. Jeśli użytkownik jest zalogowany, efekty polecenia nie są widoczne natychmiast.


9
Perfekcyjnie, dzięki! gpasswd -a user groupdodanie użytkownika do grupy wydaje się również przyjemniejsze, zwłaszcza jeśli literówka się popełniła i -aopcja została odrzucona.
— Lekensteyn,

1
Nie działa dla mnie Otrzymuję dwie wiadomości: a) Usunięcie użytkownika z grupy. b) gpasswd: użytkownik nie jest członkiem grupy. Następnie uruchomienie „grupy członków” nie pokazuje żadnych zmian.
— geoidesic

1
@geoidesic musisz się wylogować i zalogować ponownie, aby zobaczyć efekt
— Wasif Hossain

1
Czy istnieje sposób, aby zmiana zaczęła obowiązywać bez konieczności ponownego logowania?
— Andy Fusniak,

2
@geoidesic Mam te błędy na Centos 7. Odkryłem, że masz to, jeśli próbujesz usunąć użytkownika z domyślnej grupy. Spróbuj zmienić domyślną grupę, a usermod -g user usernastępnie spróbuj je usunąć.
— PanPipes

175

W Debianie adduserpakiet zawiera deluserprogram, który usuwa użytkownika z grupy, jeśli podasz oba argumenty:

deluser user group

Jeśli Twoja dystrybucja nie ma adduser, możesz edytować /etc/groupi /etc/gshadowręcznie.

vigr
vigr -s

10
Nie znałem programów takich jak vigri vipw. Bardzo przydatne w przypadku, gdy strony są zbyt daleko :)
— Lekensteyn,

3
Alternatywnie, po zmodyfikowaniu /etc/groupuruchom, grpconvaby zaktualizować /etc/gshadowzamiast go edytować.
— Cyrille,

sudo deluser jenkins admin/ usr / sbin / deluser: Nie możesz usunąć użytkownika z jego grupy podstawowej.
— Jonathan

@JonathanLeaders Każdy użytkownik musi należeć do co najmniej jednej grupy. Użyj usermodlub, vipwaby zmienić grupę podstawową użytkownika. To pytanie dotyczyło grup uzupełniających.
— Gilles

Miły. Istnieje również prostsze adduser $user $grouppolecenie zamiast usermod -x -y -z -....
— ygoe

65
usermod -G "" username

usuwa wszystkie drugorzędne / dodatkowe grupy z nazwy użytkownika , pozostawiając ich jako członków tylko ich podstawowej grupy. działało to w Solarisie 5.9


5
Testowane w CentOS 6.4; Pracuje.
— aggregate1166877

1
Działa również w systemie Ubuntu 12.04.
— aggregate1166877

I to wydaje się być najlepszym sposobem, aby wymusić grupy drugorzędne na dowolnej liście grup, z wyłączeniem wszystkich grup niepublicznych.
— mędrzec

Testowane i działające w CentOS 7. Dzięki!
— Tricky

14

To jest podejście „starej szkoły” ...

Większość systemów * nix przechowuje informacje o grupie w zwykłym pliku tekstowym /etc/group, gdzie

  • każda linia zawiera pola

    • Nazwa grupy
    • hasło
    • GID i
    • Lista użytkowników

    ograniczone przez :znak.

  • pole lista_użytkowników jest listą nazw użytkowników oddzielonych przecinkami.

Załóżmy teraz, że chcesz usunąć użytkownika o nazwie thisuser z grupy o nazwie thatgroup. Zacznij od utworzenia kopii zapasowej /etc/group, a następnie użyj edytora preferencji z uprawnieniami su do edycji pliku /etc/group i usunięcia thisuserodwołania z pozycji thatgroupwiersza, np.

oryginalna linia wygląda mniej więcej tak:

thatgroup:x:1274:someuser,thisuser,anotheruser

po edycji należy pozostawić tak:

thatgroup:x:1274:someuser,anotheruser

Podobnie jak w przypadku wszystkich innych odpowiedzi, nie wpłynie to na bieżącą sesję użytkownika, jeśli taka istnieje (tj. Jeśli użytkownik jest aktualnie zalogowany). Zmiana zacznie obowiązywać przy następnym logowaniu użytkownika.


1
vigrzostał już wspomniany do /etc/groupręcznej edycji . Moje strony podręcznika mówią, że nazwy użytkowników są oddzielone przecinkami, a nie dwukropkami. Ponowne uruchomienie nie jest konieczne, wystarczy ponownie się zalogować (lub użyć newgrp).
— Lekensteyn,

Aby pomóc użytkownikom niebędącym Debianem odwiedzającym te brzegi, szukającym wskazówek ... może to wystarczyć dla Debiana zgodnie z zakresem pytania OP, ale jeśli używałeś tego w systemie operacyjnym * BSD, musisz zmodyfikować plik tekstowy tutaj, jak wspomniano, a następnie wydaj pwd_mkdb -p /etc/master.passwd, aby faktycznie użyć tej listy.
— danno

3

Możesz użyć poniższego polecenia w dystrybucjach SUSE (i najwyraźniej żadnych innych ).

usermod -R grupa  nazwa_użytkownika

gdzie groupjest grupa, z której chcesz usunąć użytkownika i user_nameużytkownik, którego chcesz usunąć z grupy. Na przykład,

usermod -R root imnottheroot

1
Jaki pakiet zawiera plik binarny usermod? Proszę o sprawdzenie wersji, ponieważ moja z shadow-utils-4.1.4.3 nie zapewnia opcji -R.
— myroslav

3
Mój pakiet shadow 4.1.5.1-5 (Arch Linux) ma -Ropcję, ale to oznacza coś innego. To chyba nie Linux.
— Lekensteyn,

3
Nie jestem pewien, czy to zadziała. Strona podręcznika mówi -R: „-R, --roro CHROOT_DIR Zastosuj zmiany w katalogu CHROOT_DIR i użyj plików konfiguracyjnych z katalogu CHROOT_DIR.”
— MikeKusold

2
Jedyną rzeczą, jaką mogłem znaleźć, była ta strona wyroczni, ale wciąż nie chodzi o to samo, więc ta odpowiedź powinna zostać usunięta.
— Kyrias

sudo usermod -R admin jenkinsusermod: niepoprawna ścieżka chroot 'admin'
— Jonathan

1

Rozważać:

  • Nazwa Użytkownika: abc2
  • Nazwa grupy: newgroup11

  • Zadanie: usunięcie użytkownika abc2z grupynewgroup11

[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

** Prosimy o poprawienie mnie, jeśli się mylę. **


1
To „działa”, ale tylko dlatego, że masz jedną grupę drugorzędną. usermod -G newgroup11 abc2umieści cię w grupie drugorzędnej newgroup11. Ponieważ podstawową grupą jest abc2, skończysz w obu grupach. usermod -g abc2 abc2powoduje newgroup11usunięcie z grup drugorzędnych, ponieważ nie jest już wspomniany. Tak więc dla trzech lub więcej różnych grup ta metoda nie będzie działać. Zobacz inne odpowiedzi dotyczące gpasswdlepszego polecenia.
— Lekensteyn,

1

Możesz usunąć użytkownika z grupy, wykonując komendę usermod bez opcji -a. Przykład, wykonując „usermod -G group1 nazwa użytkownika” doda użytkownika do grupy 1 i usunie go z innych grup, w których się znajduje. Pamiętaj, że możesz trzymać użytkownika w różnych grupach, wymieniając nazwy grup oddzielone przecinkami.


1
Informacje te zostały już przedstawione wiele razy.
— Scott

0

Aby kontynuować używanie usermod w dystrybucji (takiej jak Fedora), która nie ma opcji usuwania, gdzie user = bob i group = deletethisgroup, komenda wyglądałaby następująco:

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

Potoki (1) pobierają wszystkie wpisy grup, do których należy użytkownik, (2) wyjmują ten, który należy usunąć, (3) zwraca pierwszą kolumnę (nazwę grupy), zastępuje nowy wiersz przecinkiem i usuwa przecinek końcowy.

Oczywiście można to wszystko umieścić w skrypcie bash, który przyjmuje parametry użytkownika i grupy do usunięcia. awk może być użyty do skrócenia końca, ale chciałem trzymać się grep, cut, tr i sed.


Według tej strony podręcznika , również gpasswd -d bob deletethisgroupjest dostępna. Jest jakiś powód, dla którego go nie używasz?
— Lekensteyn

Nie wszyscy chcą konfigurować hasła grupowe. Właśnie oferowałem rozwiązanie za pomocą polecenia, do którego odnosiło się pytanie dotyczące konkretnej dystrybucji. w Fedorze / RHEL / Centos z gpasswd -d usunięty użytkownik może nadal dołączyć do grupy, jeśli ma dostęp do hasła. W rzeczywistości zwiększa dostęp do grupy, a nie uniemożliwia.
— Stephen

Zrozumiałem, że nazwa narzędzia to nazwa, gpasswdponieważ jest blisko spokrewniona /etc/passwd, ale zamiast tego zarządza grupami. W przeciwieństwie do zwykłego passwdpolecenia, które kontroluje tylko hasła, gpasswdmoże być również użyte do zarządzania członkostwem w grupie. Hasło grupy nie jest wymagane, jeśli jesteś rootem lub administratorem grupy.
— Lekensteyn

Czy przeczytałeś instrukcję gpasswd? W przypadku Fedory / RHEL / CentOS, jeśli czytasz instrukcję, jest powiedziane, że polecenie „służy do administrowania / etc / group i / etc / gshadow”. W rzeczywistości nie ma to wpływu na / etc / passwd. Podręcznik stwierdza również: „Hasła grupowe są nieodłącznym problemem bezpieczeństwa, ponieważ hasło może znać więcej niż jedna osoba”. W rzeczywistości nie zarządza członkostwem w grupie, otwiera grupę dla KAŻDEGO użytkownika z hasłem. Hasło grupy nie jest wymagane, jeśli jesteś już członkiem grupy.
— Stephen

Blisko spokrewnione było w znaczeniu podobnych nazw i celów, nie sugerowałem, że plik / etc / passwd jest faktycznie zarządzany przez gpasswd. Zauważ, że „strona podręcznika” w moim pierwszym komentarzu wskazuje na stronę podręcznika gpasswd dla Fedory 13. Za pomocą gpasswd $groupmożesz ustawić hasło grupy, które powoduje wspomniany problem bezpieczeństwa. Jednak można również nie ma hasła i użyć gpasswd -d $user $groupaby usunąć użytkownika, jak opisano w pierwszym komentarzu i zaakceptowanych odpowiedź. Zauważ, że to polecenie nie monituje o hasło grupy, nie modyfikuje go ani nie wymaga.
— Lekensteyn

0

Załóżmy, że nazwa użytkownika = uczeń i nazwa grupy = badanie , dlatego aby usunąć studentużytkownika z researchgrupy, wykonaj następujące czynności:

gpasswd -d student research

Po co powtarzać coś, co było tutaj 6 lat wcześniej? Jest oznaczony jako zaakceptowana odpowiedź!
— Betlista

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

Rozwiązanie, jeśli używasz CSH, z jakiegokolwiek powodu.


-1

Aby usunąć użytkownika z grupy, gpasswd jest najlepszym narzędziem dla tego IMO.

Przykład polecenia:

sudo gpasswd -d group user

* Informacje o pomocy *

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
Argumenty grupy i użytkownika są zamieniane. Jest to dokładnie to, co zaproponowała zaakceptowana odpowiedź, ten post nie jest naprawdę pomocny?
— Lekensteyn,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.