удалить всех пользователей из группы

В ubuntu, как вы удаляете всех пользователей из группы с помощью командной строки bash?

Группа называется grp1, и она находится в / etc / group. Неважно, остается ли фактическая группа или нет. Я просто хочу, чтобы участники ушли. (Любой пользователь, который является членом этой группы, должен быть удален из / etc / passwd)

0
задан 2 January 2018 в 19:22

6 ответов

Предположим, что gid группы - это 2000

. Для удаления любого пользователя, у которого первичная группа установлена ​​в 2000

awk -F: "(\$4==2000) { print \$1 }" /etc/passwd | sudo xargs userdel

, некоторые из вас могут перестать видеть xargs и userdel вместе:)

-1
ответ дан 18 July 2018 в 00:01

Действительно ли так много пользователей, что это необходимо автоматизировать? Это одна из тех вещей, где баланс между сохранением пары минут и полным разрушением вашей системы неверен. Я бы не стал автоматизировать это, если бы мы не говорили о десятках пользователей.

Если это так, я бы предложил начать с создания списка пользователей, которых вы хотите удалить:

grep -Po '^grp1:.*:.*:\K\w+' /etc/group > bad_users

Если это еще слишком много для обработки, вы можете вывести их из /etc/passwd, создавая новый.

grep -vFf bad_users /etc/passwd > new_passwd

Просмотрите это (например, diff new_passwd /etc/passwd), и если вам это нравится, переместите содержимое. У вас все еще есть очистка, чтобы избавиться от этого (домашние каталоги, катушки и т. Д.) В зависимости от того, насколько существенны пользователи, но с учетом дисперсии, я оставлю это вам.

1
ответ дан 18 July 2018 в 00:01

Сначала вы найдете все файлы, принадлежащие указанной группе, и назначьте их новой группе, если вы этого захотите (возможно, лучше всего, но не уверены)

https://unix.stackexchange.com/questions/ 159244 / find-files-owned-to-group,

Затем вы удаляете группу с помощью sed sudo sed -i -e 's/group_to_remove/d' /etc/group

2
ответ дан 18 July 2018 в 00:01

Предположим, что gid группы - это 2000

. Для удаления любого пользователя, у которого первичная группа установлена ​​в 2000

awk -F: "(\$4==2000) { print \$1 }" /etc/passwd | sudo xargs userdel

, некоторые из вас могут перестать видеть xargs и userdel вместе:)

-1
ответ дан 24 July 2018 в 17:08
  • 1
    И что это делает с файлами, принадлежащими этой группе? :-) – Rinzwind 2 January 2018 в 20:06
  • 2
    заголовок вопроса - «удалить всех пользователей из группы», так что это из-за границы – american-ninja-warrior 2 January 2018 в 20:10
  • 3
    но ломать вещи, как правило, не очень хорошая идея;) – Rinzwind 2 January 2018 в 21:43

Действительно ли так много пользователей, что это необходимо автоматизировать? Это одна из тех вещей, где баланс между сохранением пары минут и полным разрушением вашей системы неверен. Я бы не стал автоматизировать это, если бы мы не говорили о десятках пользователей.

Если это так, я бы предложил начать с создания списка пользователей, которых вы хотите удалить:

grep -Po '^grp1:.*:.*:\K\w+' /etc/group > bad_users

Если это еще слишком много для обработки, вы можете вывести их из /etc/passwd, создавая новый.

grep -vFf bad_users /etc/passwd > new_passwd

Просмотрите это (например, diff new_passwd /etc/passwd), и если вам это нравится, переместите содержимое. У вас все еще есть очистка, чтобы избавиться от этого (домашние каталоги, катушки и т. Д.) В зависимости от того, насколько существенны пользователи, но с учетом дисперсии, я оставлю это вам.

1
ответ дан 24 July 2018 в 17:08

Сначала вы найдете все файлы, принадлежащие указанной группе, и назначьте их новой группе, если вы этого захотите (возможно, лучше всего, но не уверены)

https://unix.stackexchange.com/questions/ 159244 / find-files-owned-to-group,

Затем вы удаляете группу с помощью sed sudo sed -i -e 's/group_to_remove/d' /etc/group

2
ответ дан 24 July 2018 в 17:08

Другие вопросы по тегам:

Похожие вопросы: