Ubah gid dari grup tertentu

34

Saya ingin mengubah id grup dari grup tertentu. Ada begitu banyak solusi untuk mengubah gid file atau direktori. Tapi bukan itu yang saya inginkan. Apakah ada cara untuk melakukan itu?

mibzer
sumber

Jawaban:

42

GID adalah pengidentifikasi utama grup. Sejauh menyangkut sistem, GID yang berbeda adalah kelompok yang berbeda. Jadi untuk mengubah GID, Anda harus memodifikasi semua tempat di mana GID digunakan.

Anda harus menghindari memperlakukan GID sebagai signifikan dan menggunakan nama grup sebagai gantinya; Anda dapat mengubah nama grup dengan satu perintah (di Linux:) groupmod -n NEW_GROUP_NAME OLD_GROUP_NAME.

Namun, jika Anda benar-benar ingin mengubah GID, ini caranya:

  • Pertama, Anda mungkin perlu keluar pengguna di grup dan membunuh proses yang menjadikan grup itu sebagai grup mereka yang efektif, nyata, atau disimpan.
  • Ubah entri dalam database grup. Di Linux, jalankan groupmod -g NEWGID GROUPNAME. Pada sistem lain, gunakan alat administrasi sistem itu, atau vigrjika tersedia, atau edit /etc/groupsebagaimana berlaku.
  • Ubah grup semua file di sistem Anda yang termasuk grup lama.

    find / -gid OLDGID ! -type l -exec chgrp NEWGID {} \;
    
  • chgrp membersihkan flag suid dan sgid, mengembalikannya.

  • Jika Anda memiliki arsip yang menggunakan GID lama, bangun kembali.
  • Jika Anda memiliki file konfigurasi atau skrip yang merujuk GID lama, perbarui.
  • Mulai ulang semua proses yang harus menggunakan GID baru.
Gilles 'SANGAT berhenti menjadi jahat'
sumber
2
Sarankan menggunakan chgrp -h ...alih-alih chgrp .... Tanpa -h, target symlink yang relevan akan memiliki grup yang diubah.
Mark Plotnick
3
groupmodambil nama sebagai argumen utama bagi saya ...groupmod -g NEWGID GROUPNAME
Matt
29

Cara termudah adalah menggunakan groupmod -g <NEW_GID> <groupname>

Cara lain adalah mengedit /etc/groupsecara langsung. Bidang ketiga di setiap kolom adalah gid.

Jika kelompok berubah adalah kelompok utama pengguna, /etc/passwdperlu disesuaikan, juga: usermod -g <NEW_GID> <username>.

Jofel
sumber
Apakah ini juga akan mempengaruhi gid file juga? Maksud saya, gid file dan gid grup akan berubah pada saat yang sama?
mibzer
1
Tidak. Ini hanya akan mengubah id grup. File / Direktori menyimpan gid (yang sekarang tidak disebutkan namanya) dan perlu diubah secara terpisah.
jofel
Oke terima kasih. Jadi jika saya ingin mengubah (file) gid ke gid baru, saya harus menjalankan perintah lain. Apakah itu benar ? Itu akan lebih baik jika ada cara untuk mengubah kedua file froup dan gid file terkait pada saat yang sama.
mibzer
Saya telah menambahkan perintah lain untuk jawaban saya. Tidak masalah jika sementara gid digunakan yang tidak ada di / etc / group. Setiap pengguna dalam grup harus masuk kembali untuk mendapatkan gid baru.
jofel
0

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

jirib
sumber
seperti yang saya katakan itu akan mengubah gid file. Tapi bukan itu yang saya maksud. Saya ingin mengubah gid grup bukan file.
mibzer
ok, saya bingung, lalu 'vi / etc / group' :)
jirib