Chapter sebelumnya melatih kita membaca notasi rwx; kini giliran mengubahnya. Alat utamanya chmod dengan dua gaya penulisan: mode simbolik yang menyebut kelas dan hak satu per satu, dan mode oktal yang menetapkan seluruh permission dalam tiga angka. Bersamanya ada chown dan chgrp untuk memindahkan kepemilikan file ke user atau group lain. Chapter ini mempraktikkan semuanya pada file latihan milik sendiri, termasuk melihat batas kerasnya: perubahan kepemilikan ditolak tanpa root.
Mode Simbolik: Menambah dan Mengurangi Hak #
Bentuk umum mode simbolik adalah chmod siapa-operasi-hak berkas. Bagian siapa menentukan kelas yang diubah:
| Huruf | Kelas |
|---|---|
u | owner (user pemilik) |
g | group |
o | other |
a | semua kelas (owner, group, other) |
Operatornya tiga: + menambah hak, - menghapus hak, dan = menetapkan hak secara persis. Kita praktikkan pada file latihan:
mkdir -p latihan
printf 'laporan\n' > latihan/laporan.txt
chmod u+x latihan/laporan.txt
stat -c '%a %A %n' latihan/laporan.txt
chmod go-w latihan/laporan.txt
stat -c '%a %A %n' latihan/laporan.txtOutput yang Dihasilkan:
764 -rwxrw-r-- latihan/laporan.txt
744 -rwxr--r-- latihan/laporan.txtMari kita bedah blok tersebut:
- Baris 1-2 membuat fixture: folder
latihandan filelaporan.txtyang permission awalnya664bawaan sistem ini. - Baris 3 menambah hak
xuntuk owner saja (u+x) — baris 4 terbaca764: owner kinirwx, group dan other tak tersentuh. - Baris 5 menghapus hak
wdari dua kelas sekaligus (go-w), sehingga baris 6 menunjukkan744— group dan other tinggal baca.
Huruf kelas boleh digabung agar ringkas, dan a mencakup ketiganya. Untuk hasil persis, operator = lebih aman daripada + dan - berulang: chmod u=rw,go=r menjamin rw-r--r-- apa pun permission sebelumnya.
Mode Oktal: Tiga Angka untuk Seluruh Permission #
Mode oktal menetapkan kesembilan bit sekaligus: tiga angka untuk owner, group, dan other. Nilai tiap huruf dalam satu trio: r = 4, w = 2, x = 1, lalu dijumlahkan — rwx = 7, r-x = 5, r-- = 4, sehingga 755 berarti rwxr-xr-x.
mkdir -p latihan
printf 'laporan\n' > latihan/laporan.txt
chmod 644 latihan/laporan.txt
stat -c '%a %A %n' latihan/laporan.txt
chmod 600 latihan/laporan.txt
stat -c '%a %A %n' latihan/laporan.txtOutput yang Dihasilkan:
644 -rw-r--r-- latihan/laporan.txt
600 -rw------- latihan/laporan.txtDua operasi itu mengubah file yang sama ke dua target berbeda: 644 (rw-r--r--) untuk berbagi bacaan, lalu 600 (rw-------) untuk berkas pribadi. Mode oktal tidak menambah-mengurangi — ia menimpa seluruh permission lama, jadi hasilnya selalu persis tiga angkanya.
Perubahan Rekursif dengan chmod -R #
Folder beserta seluruh isinya sering perlu diubah serentak, misalnya menutup akses other untuk satu pohon direktori — opsi -R menjalankan chmod secara rekursif:
mkdir -p latihan/arsip
printf 'laporan\n' > latihan/laporan.txt
printf 'catatan\n' > latihan/arsip/catatan.txt
chmod -R o-rwx latihan
stat -c '%a %n' latihan latihan/laporan.txt latihan/arsip latihan/arsip/catatan.txtOutput yang Dihasilkan:
770 latihan
660 latihan/laporan.txt
770 latihan/arsip
660 latihan/arsip/catatan.txtKita bedah hasilnya:
- Baris 4 menghapus seluruh hak other (
o-rwx) di folderlatihandan semua isinya secara berantai. - Hasil folder menjadi
770dan hasil file menjadi660— hakxdi folder tetap terjaga karena hanyarwxmilik other yang diambil.
chown dan chgrp: Memindahkan Kepemilikan #
Di sisi kepemilikan bekerja chown dan chgrp: chown budi laporan.txt mengubah pemilik, chown budi:tim-dev laporan.txt mengubah pemilik sekaligus group-nya, dan chgrp tim-dev laporan.txt mengubah group saja. Sebagai user biasa, kita bisa menyaksikan batasnya langsung:
mkdir -p latihan
printf 'laporan\n' > latihan/laporan.txt
chown root:root latihan/laporan.txt 2>&1
chgrp root latihan/laporan.txt 2>&1Output yang Dihasilkan:
chown: changing ownership of 'latihan/laporan.txt': Operation not permitted
chgrp: changing group of 'latihan/laporan.txt': Operation not permittedDua perintah itu sama-sama ditolak. Aturannya tegas: mengganti pemilik selalu butuh root, dan mengganti group hanya diizinkan ke group tempat kita jadi anggota — bukan root. Dengan sudo perintah yang sama berhasil, karena itu chown dan chgrp menuntut kehati-hatian, terutama dengan -R. Penggunaan sudo menunggu Chapter sudo dan root.
Praktik Aman Mengubah Permission #
Tiga kebiasaan menjaga sistem sehat. Pertama, mulai dari permission paling ketat (600 untuk data pribadi, 644 untuk berkas yang boleh dibaca umum) lalu longgarkan hanya saat ada kebutuhan nyata. Kedua, curigai mode 777 — kemunculannya biasanya pertanda salah desain; jalannya adalah group bersama seperti pada Chapter Group Management, bukan membuka pintu ke semua orang. Ketiga, skrip tidak butuh bit x untuk dijalankan dengan bash skrip.sh — bit itu hanya perlu untuk memanggilnya langsung sebagai ./skrip.sh.
Mengubah permission satu per satu melelahkan untuk file yang terus diciptakan. Kabar baiknya, Linux menghitung permission awal file baru otomatis lewat umask — cara kerjanya kita bedah pada Chapter umask
.