Zmień identyfikator konkretnej grupy


34

Chciałbym zmienić identyfikator grupy określonej grupy. Istnieją takie rozwiązania dla zmiany gid pliku lub katalogów. Ale nie tego chcę. Czy jest na to sposób?

Odpowiedzi:


42

GID jest głównym identyfikatorem grupy. Jeśli chodzi o system, inny GID to inna grupa. Aby zmienić GID, musisz zmodyfikować wszystkie miejsca, w których ten GID jest używany.

Powinieneś unikać traktowania GID jako znaczącego i zamiast tego używaj nazw grup; możesz zmienić nazwę grupy za pomocą jednego polecenia (w systemie Linux:) groupmod -n NEW_GROUP_NAME OLD_GROUP_NAME.

Jeśli jednak naprawdę chcesz zmienić GID, oto jak to zrobić:

  • Po pierwsze, może być konieczne wylogowanie użytkowników w grupie i zabicie procesów, którzy mają tę grupę jako grupę efektywną, rzeczywistą lub zapisaną.
  • Zmień wpis w bazie danych grupy. W systemie Linux uruchom groupmod -g NEWGID GROUPNAME. W innych systemach użyj narzędzia administracyjnego tego systemu lub, vigrjeśli jest dostępny, lub edytuj /etc/groupodpowiednio.
  • Zmień grupę wszystkich plików w systemie, które należą do starej grupy.

    find / -gid OLDGID ! -type l -exec chgrp NEWGID {} \;
    
  • chgrp usuwa flagi suid i sgid, przywraca je.

  • Jeśli masz jakieś archiwum korzystające ze starego GID, odbuduj je.
  • Jeśli masz plik konfiguracyjny lub skrypt odwołujący się do starego GID, zaktualizuj go.
  • Uruchom ponownie wszystkie procesy, które muszą korzystać z nowego GID.

2
Zaproponuj użycie chgrp -h ...zamiast chgrp .... Bez -htego cel dowolnego istotnego dowiązania symbolicznego zostanie zmieniony.
Mark Plotnick

3
groupmodweź mnie za główny argument dla mnie ...groupmod -g NEWGID GROUPNAME
Mat.

29

Najprostszym sposobem jest użycie groupmod -g <NEW_GID> <groupname>

Innym sposobem jest /etc/groupbezpośrednia edycja . Trzecie pole w każdej kolumnie to gid.

Jeśli zmieniona grupa jest głównym grupa użytkownika, /etc/passwdmuszą być dostosowane także: usermod -g <NEW_GID> <username>.


Czy to również wpłynie na gid plików? Mam na myśli, że gid pliku i gid grupy zmieni się w tym samym czasie?
mibzer

1
Nie. Spowoduje to zmianę tylko identyfikatora grupy. Pliki / katalogi zachowują swój (teraz nienazwany) identyfikator i należy je osobno zmienić.
jofel

Ok dziękuję. Więc jeśli chciałbym zmienić ich (pliki) gid na nowy gid, muszę wykonać inne polecenie. Czy to prawda? Byłoby lepiej, gdyby istniał sposób na zmianę zarówno gid pliku froup, jak i gid powiązanych plików.
mibzer

Dodałem inne polecenie do mojej odpowiedzi. Nie ma problemu, jeśli używany jest tymczasowy gid, którego nie ma w / etc / group. Każdy użytkownik w grupie musi się ponownie zalogować, aby otrzymać nowy identyfikator.
jofel

0

znajdź / path -group foo -print0 | xargs -0 pasek chgrp


jak powiedziałem, zmieni to gid plików. Ale nie o to mi chodzi. Chcę zmienić identyfikator grupy, a nie pliku.
mibzer

ok, byłem zdezorientowany, potem „vi / etc / group” :)
jirib
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.