Permission & Ownership — Terminal

File Permission di Linux/macOS Setiap file dan folder di sistem Unix/Linux memiliki permission (izin) yang mengontrol siapa yang boleh membaca, menulis, dan men

File Permission di Linux/macOS

Setiap file dan folder di sistem Unix/Linux memiliki permission (izin) yang mengontrol siapa yang boleh membaca, menulis, dan menjalankan file tersebut.

Melihat Permission

ls -la
# -rw-r--r--  1 budi staff  1234 Mar 15 app.js
# drwxr-xr-x  3 budi staff    96 Mar 15 src/

Kolom pertama menunjukkan permission:

-rw-r--r--
|_________|
     |
  permission string

Membaca Permission String

- rw- r-- r--
| |   |   |
| |   |   └── Others (semua user lain)
| |   └────── Group (grup pemilik)
| └────────── Owner/User (pemilik file)
└──────────── Type (- = file, d = directory, l = symlink)

Setiap segmen punya 3 karakter:

Karakter Arti Nilai
r Read (baca) 4
w Write (tulis) 2
x Execute (jalankan) 1
- Tidak ada izin 0

Contoh:

chmod — Change Mode (Ubah Permission)

Ada dua cara: numeric dan symbolic.

Numeric Mode

# Format: chmod [owner][group][others] file
chmod 755 script.sh
# owner: rwx (7), group: r-x (5), others: r-x (5)

chmod 644 config.json
# owner: rw- (6), group: r-- (4), others: r-- (4)

chmod 600 .env
# owner: rw- (6), group: --- (0), others: --- (0)
# Hanya pemilik yang bisa baca/tulis!

Permission umum:

Angka Permission Digunakan untuk
755 rwxr-xr-x Script, folder
644 rw-r--r-- File biasa
600 rw------- File sensitif (.env, key)
700 rwx------ Folder pribadi
777 rwxrwxrwx JANGAN DIPAKAI (semua bisa akses)

Symbolic Mode

# Tambah execute untuk owner
chmod u+x script.sh

# Hapus write untuk group dan others
chmod go-w config.json

# Set read untuk semua
chmod a+r README.md

# Kombinasi
chmod u+rwx,go+rx script.sh

Simbol:

chown — Change Ownership

# Ubah pemilik file
sudo chown budi file.txt

# Ubah pemilik dan grup
sudo chown budi:staff file.txt

# Ubah rekursif (termasuk subfolder)
sudo chown -R budi:staff project/

Kasus Umum untuk Developer

# File .env harus private
chmod 600 .env

# Script harus bisa dijalankan
chmod +x deploy.sh
./deploy.sh

# Fix permission setelah clone project
chmod -R 755 storage/
chmod -R 755 bootstrap/cache/

# SSH key harus permission ketat
chmod 600 ~/.ssh/id_rsa
chmod 644 ~/.ssh/id_rsa.pub

Tips

  1. Jangan gunakan 777 — ini memberi akses penuh ke semua orang
  2. 600 untuk file sensitif — .env, SSH keys, certificates
  3. 755 untuk folder dan script — executable tapi aman
  4. 644 untuk file biasa — readable tapi hanya pemilik yang bisa edit
  5. Gunakan sudo dengan hati-hati — hanya saat benar-benar diperlukan

Yang akan kamu pelajari