Як видалити користувача з групи?


342

Яку команду потрібно використовувати для видалення користувача з групи в Debian?

Додаючи користувача до групи, це можна зробити за допомогою:

usermod -a -G group user

Однак я не зміг знайти аналогічну команду (прийняття групи та користувача як аргументи) для видалення користувача з групи. Найближчий я міг отримати:

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

Чи є така команда, як usermod OPTION group userOPTION, можливість змусити usermod(або подібну програму) видалити користувача з групи?


1
Для користувачів Fedora, які опиняються тут, man usermod розкриває в коментарях -G варіант, що перелік усіх поточних груп бажає зберегти, це спосіб видалення групи. Немає опції -R з Fedora; ви повинні використовувати підхід Лекенштейна, якого він намагається уникати.
Стівен

Відповіді:


403

Ви можете використовувати gpasswd:

# gpasswd -d user group

тоді нова конфігурація групи буде призначена при наступному вході, принаймні, на Debian. Якщо користувач увійшов у систему, ефекти команди відображаються не відразу.


9
Ідеальне спасибі! gpasswd -a user groupдодавання користувача до групи здається також приємнішим, особливо якщо помилка була зроблена і -aпараметр випадає.
Лекенштейн

1
Не працює для мене. Я отримую два повідомлення: а) Видалення користувача з групи. b) gpasswd: користувач не є членом групи. Після цього запуск "групи членів" не показує змін.
геодезичний

1
@geoidesic вам потрібно вийти з системи і знову увійти в систему, щоб побачити ефект
Wasif Хоссейн

1
Чи є спосіб, щоб зміни вступили в силу без необхідності повторного входу?
Енді Фушняк

2
@geoidesic У мене виникли ці помилки на Centos 7. Я виявив, що ви це отримали, якщо ви намагалися видалити користувача з групи за замовчуванням. Спробуйте переключити групу за замовчуванням, а usermod -g user userпотім спробуйте їх видалити.
PanPipes

175

У Debian adduserпакет містить deluserпрограму, яка видаляє користувача з групи, якщо ви передаєте обидва як аргументи:

deluser user group

Якщо вашого розповсюдження немає adduser, ви можете редагувати /etc/groupта /etc/gshadowвручну.

vigr
vigr -s

10
Я не знав таких програм, як vigrі vipw. Дуже корисно в тому випадку, якщо посібники занадто далеко :)
Лекенштейн

3
Крім того, після зміни /etc/groupзапустіть grpconvоновлення, /etc/gshadowа не редагування.
Кирила

sudo deluser jenkins admin/ usr / sbin / deluser: Ви не можете видалити користувача з їх основної групи.
Джонатан

@JonathanLeaders Кожен користувач повинен бути принаймні однією групою. Використовуйте usermodабо vipwщоб змінити основну групу користувача. Це питання стосувалося додаткових груп.
Жиль

Приємно. Існує також більш проста adduser $user $groupкоманда замість usermod -x -y -z -....
ygoe

65
usermod -G "" username

видаляє всі вторинні / додаткові групи з імені користувача , залишаючи їх членом лише їх первинної групи. це працювало в Solaris 5.9


5
Випробувано в CentOS 6.4; працює.
aggregate1166877

1
Працює і в Ubuntu 12.04.
aggregate1166877

І це, мабуть, є найкращим способом примусити вторинні групи до будь-якого списку груп, виключаючи всі незареєстровані групи.
шавлія

Тестували та працювали в CentOS 7. Дякую!
Хитрий

14

Це підхід "старої школи" ...

Більшість систем * nix підтримують групову інформацію у простому текстовому файлі /etc/group, де

  • кожен рядок містить поля

    • назва групи
    • пароль
    • GID та
    • user_list

    розмежований :персонажем.

  • поле user_list - це список імен користувачів, розділених комами.

Тепер припустимо, що ви хочете видалити користувача thisuser з іменем thatgroup. Для початку резервного копіювання /etc/group, а потім використовувати редактор за вашим вибором з привілеями су відредагувати файл /etc/group і видалити thisuserпосилання з thatgroupрядка введення, наприклад,

оригінальний рядок є приблизно таким:

thatgroup:x:1274:someuser,thisuser,anotheruser

після редагування слід залишити так:

thatgroup:x:1274:someuser,anotheruser

Як і у всіх інших відповідях, це не вплине на поточний сеанс користувача, якщо такий є (тобто, якщо користувач зараз увійшов у систему). Зміна набере чинності наступного разу, коли користувач увійде в систему.


1
vigrвже згадувалося для редагування /etc/groupвручну. На моїх сторінках керівництва вказано, що імена користувачів розділені комами, а не двокрапками. Перезавантаження не потрібно, потрібно просто повторно увійти (або використовувати newgrp).
Лекенштейн

Щоб допомогти будь-яким користувачам, які не потрапляють у Debian, потрапляючи на ці береги, шукаючи підказки ... цього може бути достатньо для Debian відповідно до сфери питання ОП, але якщо ви використовували це для ОС * BSD, вам потрібно буде змінити файл простого тексту тут, як згадувалося, тоді видайте pwd_mkdb -p /etc/master.passwd, щоб фактично поставити цей список у користування.
данно

3

Ви можете використовувати команду нижче для дистрибутивів SUSE (і, мабуть, жодних інших ).

usermod -R група  user_name

де groupгрупа, з якої потрібно видалити користувача, та user_nameкористувач, який потрібно видалити з групи. Наприклад,

usermod -R root imnottheroot

1
Який пакет надає ваш користувальницький двійковий файл? Я прошу з'ясувати версію, оскільки мій з shadow-utils-4.1.4.3 не надає опцію -R.
мирослав

3
У мого тіньового пакета 4.1.5.1-5 (Arch Linux) є -Rможливість, але це означає щось інше. Думаю, це не Linux.
Лекенштейн

3
Я не впевнений, що це спрацює. На сторінці написано, що -R: "-R, - root CHROOT_DIR Застосовуйте зміни в каталозі CHROOT_DIR і використовуйте файли конфігурації з каталогу CHROOT_DIR."
MikeKusold

2
Єдине, що я могла знайти, це ця сторінка оракула, але це все ще не те саме, тому цю відповідь, можливо, слід усунути.
kyrias

sudo usermod -R admin jenkinsusermod: недійсний шлях chroot 'admin'
Джонатан

1

Поміркуйте:

  • ім'я користувача: abc2
  • назва групи: newgroup11

  • Завдання: Видалення користувача abc2з групиnewgroup11

[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

** Будь ласка, виправте мене, якщо я помиляюся. **


1
Це "працює", але лише тому, що у вас єдина вторинна група. usermod -G newgroup11 abc2поставить вас у другорядну групу newgroup11. Оскільки основна група є abc2, ви опинитесь в обох групах. usermod -g abc2 abc2приводить до newgroup11вилучення із вторинних груп, оскільки це вже не згадується. Отже, для трьох і більше різних груп цей метод не працює. Дивіться інші відповіді, що стосуються gpasswdкращої команди.
Лекенштейн

1

Ви можете видалити користувача з групи, виконавши команду usermod без параметра -a. Наприклад, виконавши "usermod -G group1 ім'я користувача" додасть користувача до group1 та видалить його з будь-яких інших груп, де він є. Пам'ятайте, ви можете тримати користувача в різних групах, перелічуючи імена групи, розділені комою.


1
Ця інформація вже була представлена ​​кілька разів.
Скотт

0

Щоб продовжувати використовувати usermod у дистрибутиві (наприклад, Fedora), який не має опції видалення, де user = bob та group = deletethisgroup, командою буде:

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

Труби (1) отримують всі записи групи, до яких належить користувач, (2) виймають той, який потрібно видалити, (3) повертають перший стовпець (назва групи), замінюють нову рядок комою та видаляють проміжну кому.

Звичайно, ви можете помістити все це у скрипт bash, який використовує для видалення користувача та групи як параметри. awk може бути використаний для скорочення кінця, але я хотів дотримуватися grep, cut, tr і sed.


За даними цієї сторінки , gpasswd -d bob deletethisgroupдоступна також. Будь-яка причина, чому ви його не використовуєте?
Лекенштейн

Не всі хочуть встановлювати групові паролі. Я просто пропонував рішення за допомогою команди, на яку посилалося питання про певний дистрибутив. у Fedora / RHEL / Centos з gpasswd -d видалений користувач все ще може приєднатися до групи, якщо він має доступ до пароля. Це фактично збільшує груповий доступ на відміну від заборони.
Стівен

Я зрозумів, що утиліта названа gpasswdтому, що вона тісно пов'язана /etc/passwd, але натомість керує групами. На відміну від простої passwdкоманди, яка просто керує паролями, gpasswdтакож може використовуватися для управління членством у групі. Груповий пароль не потрібно, якщо ви користуєтесь коренем або адміністратором групи.
Лекенштейн

Ви читали посібник з gpasswd? Для Fedora / RHEL / CentOS, якщо ви читаєте посібник, зазначено, що команда "використовується для адміністрування / etc / group та / etc / gshadow". Це фактично не впливає на / etc / passwd. У посібнику також зазначено, що "Групові паролі - це властива проблема безпеки, оскільки більш ніж одній особі дозволено знати пароль". Він насправді не керує членством у групі, він відкриває групу до будь-якого користувача з паролем. Груповий пароль не потрібно, якщо ви вже є ЧЛЕНОЮ групи.
Стівен

Тісно пов’язаний був у сенсі подібних імен та цілей, я не мав на увазі, що файлом / etc / passwd насправді керує gpasswd. Зауважте, що "man page" у моєму першому коментарі вказує на сторінку керівництва gpasswd для Fedora 13. Використовуючи gpasswd $groupви можете встановити груповий пароль, який викликає згадану вами проблему безпеки. Однак ви також не можете мати пароль та використовувати gpasswd -d $user $groupдля видалення користувача, як описано в першому коментарі та прийнятій відповіді. Зауважте, що ця команда не вимагає ввести груповий пароль, а також не змінює і не вимагає цього.
Лекенштейн

0

Припустимо, що ім'я користувача = студент і ім'я групи = дослідження , тому для видалення studentкористувача з researchгрупи потрібно зробити наступне:

gpasswd -d student research

Навіщо повторювати щось, що було тут на 6 років раніше? Це позначено як прийняту відповідь!
Betlista

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

Рішення, якщо ви використовуєте CSH з будь-якої причини.


-1

Видалення користувача з групи gpasswd - найкраща утиліта для цього ІМО.

Приклад команди:

sudo gpasswd -d group user

* Довідкова інформація *

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
Аргументи групи та користувача міняються місцями. Також це саме те, що запропонована відповідь запропонована, ця публікація не дуже корисна?
Лекенштейн
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.