Perintah chgrp Linux: ganti kelompok berkas dan periksa akses

Perintah chgrp mengganti kelompok pemilik berkas atau direktori tanpa mengganti pengguna pemiliknya. Gunakan chgrp untuk menyelaraskan kelompok pada berkas kerja bersama. Penggantian kelompok belum otomatis memberi anggota kelompok izin membaca atau menulis berkas.

Sintaks dan tiga hal yang perlu dibedakan

chgrp [OPSI] KELOMPOK BERKAS...

OPSI, KELOMPOK, dan BERKAS adalah penanda yang diganti dengan nilai sebenarnya. Pembahasan ini menggunakan GNU chgrp; periksa chgrp --help, chgrp --version, dan man chgrp pada sistem yang digunakan.

Bedakan kelompok pemilik berkas, izin kelompok pada berkas, dan keanggotaan kelompok proses yang mengaksesnya. Chgrp mengubah hal pertama. Untuk izin baca atau tulis, lihat chmod untuk mengatur bit izin; untuk identitas dan kelompok proses, lihat id untuk memeriksa UID dan GID.

Siapkan kelompok dan berkas latihan

Editors dan developers di bawah adalah nama kelompok contoh yang harus benar-benar ada pada mesin tujuan. Periksa kelompok sasaran dan kewenangan Anda terlebih dahulu. Pada Linux, pemilik berkas dapat mengganti kelompok berkasnya ke kelompok yang diikutinya; perubahan lain memerlukan hak yang sesuai.

Gunakan direktori latihan baru dengan berkas milik sendiri. Buat report.txt yang belum ada dengan printf 'laporan\n' > report.txt. Untuk contoh beberapa berkas, siapkan draft.txt dan final.txt baru dengan cara yang sama. Tanda > menimpa berkas lama, jadi pastikan nama latihan tidak menyimpan data penting.

Sebelum perubahan, catat kelompok dan mode awal, misalnya dengan stat -c '%u:%g %a %n' report.txt. Huruf kecil %u dan %g menampilkan user ID (UID) dan group ID (GID), yaitu nomor pengguna dan kelompok. Simpan nilai untuk setiap berkas yang ingin dipulihkan.

Ganti kelompok satu berkas

sudo chgrp editors report.txt

Contoh ini menetapkan editors sebagai kelompok report.txt. Bentuk sudo berlaku ketika sudo tersedia dan kebijakan administrator mengizinkan tindakan tersebut. Ganti editors dengan kelompok yang benar, lalu pastikan jalur report.txt merujuk ke berkas latihan yang dituju.

Pengguna pemilik berkas tetap sama. Namun, layanan atau pengguna yang mengandalkan kelompok lama dapat kehilangan akses, sementara anggota kelompok baru dinilai menurut izin yang tersedia. Karena itu, periksa kebutuhan berbagi sebelum mengganti kelompok.

Terapkan pada beberapa berkas yang disebutkan

sudo chgrp editors draft.txt final.txt

Kedua berkas yang disebutkan ditujukan ke kelompok editors. Perintah ini tidak memakai -R dan tidak meminta perubahan seluruh direktori. Jika salah satu nama keliru atau perubahan ditolak, periksa pesan hasil dan keadaan masing-masing berkas; jangan menganggap semua sasaran selalu berhasil bersama-sama.

Setiap berkas dapat mempunyai kelompok awal berbeda. Catatan sebelum perubahan perlu dibuat per berkas, terutama jika Anda ingin mengembalikan keadaan semula setelah latihan.

Baca kelompok dan izin bersama-sama

stat -c '%U:%G %A %n' report.txt

Pada GNU stat, %U adalah nama pemilik pengguna, %G nama kelompok, %A mode izin simbolis, dan %n nama berkas. Setelah perubahan yang berhasil, kelompok report.txt sesuai sasaran, sedangkan pengguna pemilik tetap sama.

Perhatikan bagian izin kelompok pada hasil %A. Mengganti kelompok tidak otomatis menambah bit baca atau tulis yang sebelumnya tidak ada. Jika akses masih ditolak, kelompok yang benar hanyalah salah satu pemeriksaan yang diperlukan.

Contoh kelompok developers dan verifikasi

Siapkan demo.txt baru dengan printf 'demo\n' > demo.txt. Contoh berikut mengasumsikan developers sudah ada dan pengguna pemanggil berwenang mengganti kelompok berkas tersebut. Developers berbeda dari editors pada contoh sebelumnya.

chgrp developers demo.txt
stat -c '%G %n' demo.txt

Contoh hasil jika penggantian kelompok dan pemetaan nama berhasil:

developers demo.txt

Jika hak akses tidak cukup, pesan seperti Operation not permitted dapat muncul. GNU chgrp biasanya tidak mencetak pesan ketika berhasil. Baris stat setelahnya membaca keadaan saat itu, sehingga cocokkan kelompok dengan sasaran dan periksa pesan galat; pembacaan stat sendiri bukan bukti bahwa operasi sebelumnya berhasil.

Untuk memulihkan berkas latihan, gunakan kelompok awal yang telah dicatat dan hak yang sesuai, lalu baca ulang hasilnya. Jangan memakai developers atau editors sebagai nilai pemulihan umum untuk semua berkas.

Opsi GNU untuk ruang lingkup dan tautan

Opsi Arti
-R Mengubah kelompok direktori dan isi di bawahnya secara rekursif.
-h Mengubah kelompok tautan simbolis itu sendiri, bukan sasarannya, pada sistem yang mendukungnya.
--reference=BERKAS Memakai kelompok berkas rujukan.
-v Menampilkan keterangan untuk berkas yang diproses.

Tautan simbolis menunjuk ke jalur lain. Pemilihan tautan atau sasaran dengan -h berbeda dari aturan penelusuran pohon direktori saat memakai -R. Periksa jalur, isi, dan aturan tautan terlebih dahulu sebelum perubahan rekursif; jangan memakai jalur luas hanya untuk mengatasi galat satu berkas.

Opsi dan aturan penelusuran GNU dijelaskan dalam manual GNU chgrp. Perubahan kelompok juga mengikuti batas hak akses serta dapat memengaruhi bit khusus pada kondisi tertentu; rinciannya dijelaskan dalam manual Linux tentang perubahan kepemilikan.

Jika akses bersama masih ditolak

Periksa izin berkas dan izin penelusuran setiap direktori pada jalurnya. Misalnya, ls -ld . report.txt menampilkan direktori saat ini dan berkas latihan; untuk jalur lain, periksa pula direktori induk yang dilalui. Pada direktori, bit x berarti izin penelusuran, bukan menjalankan dokumen.

Periksa pula kelompok proses yang benar-benar mengakses berkas. Chgrp tidak menambahkan pengguna ke kelompok dan tidak memperbarui kelompok sesi yang sudah berjalan. Keanggotaan yang tercatat untuk akun dan kelompok proses saat ini dapat berbeda, sehingga lakukan pemeriksaan pada sesi yang mengalami masalah.

Untuk berkas baru dalam direktori bersama, bit set-group-ID atau setgid pada direktori dapat membuat berkas mewarisi ID kelompok direktori tersebut. Mekanisme itu berbeda dari memberikan izin tulis kelompok: izin berkas baru masih perlu diperiksa. Dasar pewarisan kelompok dijelaskan dalam manual inode Linux tentang bit set-group-ID.

FAQ

Apa perbedaan chgrp dan chown :kelompok?

Keduanya dapat mengganti kelompok pemilik. Pada GNU chown, titik dua di depan kelompok tanpa nama pengguna berarti hanya kelompok yang diubah. Chgrp menyatakan tujuan perubahan kelompok secara langsung; bentuk lain chown dibahas dalam panduan perubahan pemilik dan kelompok dengan chown.

Apakah anggota kelompok baru otomatis dapat menulis?

Tidak. Kelompok pemilik, bit izin kelompok, keanggotaan kelompok proses, dan izin direktori pada jalur akses perlu sesuai. Penggantian kelompok saja belum menjamin akses tulis.