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:
rwx= read + write + execute = 7rw-= read + write = 6r--= read only = 4r-x= read + execute = 5
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:
u= user/owner,g= group,o= others,a= all+= tambah,-= hapus,== set persis
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
- Jangan gunakan
777— ini memberi akses penuh ke semua orang 600untuk file sensitif — .env, SSH keys, certificates755untuk folder dan script — executable tapi aman644untuk file biasa — readable tapi hanya pemilik yang bisa edit- Gunakan
sudodengan hati-hati — hanya saat benar-benar diperlukan