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:

HurufKelas
uowner (user pemilik)
ggroup
oother
asemua kelas (owner, group, other)

Operatornya tiga: + menambah hak, - menghapus hak, dan = menetapkan hak secara persis. Kita praktikkan pada file latihan:

bash
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.txt

Output yang Dihasilkan:

text
764 -rwxrw-r-- latihan/laporan.txt
744 -rwxr--r-- latihan/laporan.txt

Mari kita bedah blok tersebut:

  1. Baris 1-2 membuat fixture: folder latihan dan file laporan.txt yang permission awalnya 664 bawaan sistem ini.
  2. Baris 3 menambah hak x untuk owner saja (u+x) — baris 4 terbaca 764: owner kini rwx, group dan other tak tersentuh.
  3. Baris 5 menghapus hak w dari dua kelas sekaligus (go-w), sehingga baris 6 menunjukkan 744 — 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.

bash
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.txt

Output yang Dihasilkan:

text
644 -rw-r--r-- latihan/laporan.txt
600 -rw------- latihan/laporan.txt

Dua 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:

bash
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.txt

Output yang Dihasilkan:

text
770 latihan
660 latihan/laporan.txt
770 latihan/arsip
660 latihan/arsip/catatan.txt

Kita bedah hasilnya:

  1. Baris 4 menghapus seluruh hak other (o-rwx) di folder latihan dan semua isinya secara berantai.
  2. Hasil folder menjadi 770 dan hasil file menjadi 660 — hak x di folder tetap terjaga karena hanya rwx milik 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:

bash
mkdir -p latihan
printf 'laporan\n' > latihan/laporan.txt
chown root:root latihan/laporan.txt 2>&1
chgrp root latihan/laporan.txt 2>&1

Output yang Dihasilkan:

text
chown: changing ownership of 'latihan/laporan.txt': Operation not permitted
chgrp: changing group of 'latihan/laporan.txt': Operation not permitted

Dua 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 .