Изменить гид определенной группы

34

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

mibzer
источник

Ответы:

42

GID является основным идентификатором группы. Что касается системы, другой GID - это другая группа. Таким образом, чтобы изменить GID, вам нужно изменить все места, где используется этот GID.

Вам следует избегать считать GID значимым и использовать вместо этого имена групп; Вы можете изменить имя группы с помощью одной команды (в Linux:) groupmod -n NEW_GROUP_NAME OLD_GROUP_NAME.

Однако, если вы действительно хотите изменить GID, вот как:

  • Во-первых, вам может потребоваться выйти из группы и убить процессы, которые имеют эту группу в качестве эффективной, реальной или сохраненной группы.
  • Измените запись в базе данных группы. В Linux запустите groupmod -g NEWGID GROUPNAME. В других системах используйте инструмент администрирования этой системы, или, vigrесли он доступен, или отредактируйте, /etc/groupесли применимо.
  • Измените группу всех файлов в вашей системе, которые принадлежат старой группе.

    find / -gid OLDGID ! -type l -exec chgrp NEWGID {} \;
    
  • chgrp очищает флаги suid и sgid, восстанавливает их.

  • Если у вас есть какой-либо архив, использующий старый GID, перестройте его.
  • Если у вас есть файл конфигурации или сценарий, который ссылается на старый GID, обновите его.
  • Перезапустите все процессы, которые должны использовать новый GID.
Жиль "ТАК - прекрати быть злым"
источник
2
Предложите использовать chgrp -h ...вместо chgrp .... Без -h, цель любой соответствующей символической ссылки будет менять свою группу.
Марк Плотник
3
groupmodпринять имя в качестве основного аргумента для меня ...groupmod -g NEWGID GROUPNAME
Мэтт
29

Самый простой способ - это использовать groupmod -g <NEW_GID> <groupname>

Другой способ - редактировать /etc/groupнапрямую. Третье поле в каждом столбце - это gid.

Если измененная группа является основной группой пользователя, /etc/passwdдолжны быть адаптированы также: usermod -g <NEW_GID> <username>.

jofel
источник
Будет ли это также влиять на gid файлов? Я имею в виду, gid файла и gid группы будут меняться одновременно?
mibzer
1
Нет. Это изменит только идентификатор группы. Файлы / каталоги сохраняют свой (теперь безымянный) заголовок и должны быть изменены отдельно.
Джофель
Спасибо. Поэтому, если я хочу изменить их (файлы) gid на новый gid, я должен выполнить другую команду. Это правильно ? Было бы лучше, если есть способ изменить и gid файла froup, и gid связанных файлов одновременно.
Мибзер
Я добавил другую команду в свой ответ. Это не проблема, если используется временный гид, которого нет в / etc / group. Каждый пользователь в группе должен повторно войти в систему, чтобы получить новый гид.
Джофель
0

find / path -group foo -print0 | xargs -0 chgrp bar

jirib
источник
как я уже сказал, это изменит гид файлов. Но я не об этом. Я хочу изменить гид группы, а не файла.
Мибзер
хорошо, я был сбит с толку, тогда 'vi / etc / group' :)
jirib