Hai semuanya, apa kabar? Kali ini kita akan bahas tentang Linux lagi, yaitu mengenai file permission. Salah satu fondasi keamanan di Linux adalah hak akses file atau file permission. Tiap file atau direktori memiliki aturan siapa saja yang bisa read-write-execute. Apabila penggunaan file permission tidak sesuai, sistem Linux jadi lebih rentan/berisiko terhadap akses yang tidak diinginkan.
Jenis Permission
Permission atau izin terbagi menjadi tiga:
- r – read : membaca isi file, atau melihat daftar/isi dari direktori.
- w – write : mengubah isi file, membuat, mengubah file di dalam direktori. Perlu diingat bahwa permission w ini, artinya user dapat menghapus file di dalam direktori walaupun file tersebut bukan mililk si user.
- x – execute : mengeksekusi/menjalanakan program atau masuk ke dalam direktori. Tanpa permission x meskipun kita bisa melihat isi direktori, kita tidak bisa masuk ke dalam direktori tersebut.
Selain digambarkan dengan huruf (r/w/x), permission juga dapat dilambangkan dengan angka (sistem bilangan oktal).
- r: 4
- w: 2
- x: 1
Contoh penggunaan:
chmod 644 file
- User memiliki permission 6: rw- : bisa read&write.
- Group memiliki permission 4: r– : hanya bisa read.
- Other memiliki permission 4: r– : hanya bisa read.
Subyek Permission
Di Linux, tiap file atau direktori tidak hanya memiliki jenis izin yang berbeda (r, w, x),namun juga melekat ke subyek tertentu:
- User (u). Merujuk ke pemilik file/direktori. Biasanya pemilik file/direktori adalah user yang membuat file/direktori tersebut. Misalnya user
phantom
membuat filescript.sh
, maka secara default file tersebut dimiliki ollehphantom
. - Group (g). Merujuk ke grup pemilik dari file/direktori. Semua anggota group akan mendapatkan hak akses sesuai dengan permission yang diberikan. Misalnya sebuah group
developers
adalah group pemilik dari filescript.sh
, maka semua user yang tergabung ke dalamdevelopers
memiliki izin yang sama sesuai dengan group rule-nya. - Other (o). Merujuk ke semua user lain dalam sistem yang bukan merupakan pemilik dari file/direktori maupun anggota group pemilik dari file/direktori tersebut.
Misalnya kita punya file dengan nama dokumen.txt
dengan hak akses berikut:
# ls -l dokumen.txt
-rw-r----- 1 ignite developers 1024 Sep 12 10:00 dokumen.txt
Artinya:
- User – ignite memiliki hak akses
rw-
yang artinya bisa membaca dan mengubah isi file. - Group – developers memiliki hak akses
r--
yang artinya bisa membaca file namun tidak bisa mengubah/edit file. - Other memiliki hak akses
---
yang artinya tidak bisa melakukan apa pun.
Saat kita ingin mengatur permission, ada beberapa hal yang perlu diingat. Siapa pemilik dari file/direktori, grup apa yang terasosiasikan dengan file/direktori tersebut, dan juga apakah akun lain (other) perlu akses juga atau tidak.
Kita kembali lagi ke kutipan di atas (yang hasil dari perintah ls -l
). Kita coba lihat satu-per-satu output-nya.
-rw-r-----
- Karakter pertama (
-
) menyatakan bahwa itu adalah file biasa. Direktori dinyatakan dengand
, symbolic link dinyatakan denganl
. - 9 karakter berikutnya dibagi menjadi tiga bagian (masing-masing tiga karakter).
rw-
: user permission.r--
: group permission.---
: other permission.
- Karakter pertama (
1
: jumlah hard link ke file.ignite
: user pemilik file.developers
: group pemilik file.1024
: ukuran file (byte).Sep 12 10:00
: waktu terakhir file diubah (timestamp).dokumen.txt
: nama file.
Ubah Permission
Perintah yang digunakan untuk melakukan hal ini adalah chmod
(change mode). Ada dua cara yang umum dipakai, yaitu format simbolik dan format angka/oktal.
Format Simbolik
Menggunakan kombinasi subyek (u, g, o, a
(all)), operator (+, -, =
), dan jenis permission (r, w, x
).
Kombinasi subyek sudah dijelaskan pada poin sebelumnya. Dan berikut deskripsi singkat untuk operator:
+
: menambahkan permission.-
: menghapus permission.=
: menetapkan permission tertentu.
Kita coba. Untuk memberikan execute permission ke user, kita dapat menggunakan perintah:
chmod u+x script.sh
Untuk menghapus write permission dari group:
chmod g-w dokumen.txt
Menetapkan read permission untuk semua:
chmod a=r dokumen.txt
Format Oktal
Hitungan angka didapatkan dari kombinasi r=4
, w=2
, x=1
. Formatnya adalah [user][group][other]
.
Misalnya kita ingin memberikan full permission kepada user, dan read only permission untuk group & other:
chmod 744 dokumen.txt
Untuk memberikan read & write permission untuk user & group, dan no permission untuk other:
chmod 660 dokumen.txt
Untuk memberikan full permission ke semua (hati-hati, semua orang dapat menjalankan dan memodifikasi file):
chmod 777 dokumen.txt
Mengubah Ownership dan Group
Pada setiap file/direktori memiliki dua identitas utama, yaitu user dan group. Kadang, kita perlu mengubah siapa pemilik file. Contohnya adalah saat melakukan SSL renewal pada Zimbra Mail Server, file SSL-nya harus diubah ownership-nya menjadi zimbra
.
Untuk mengubah ownership dapat menggunakan perintah chown
(change owner) dan untuk mengubah group dapat menggunakan perintah chgrp
(change group).
chown
Sintaks dasar:
chown [user] [file]
Untuk mengubah ownership dari file laporan.txt
menjadi user ignite
:
chown ignite laporan.txt
Ubah user & group sekaligus:
chown ignite:developers laporan.txt
Ubah ownership dari direktori beserta isinya (rekursif). Jadi, semua isi file yang ada di dalam direktori berubah ownership & group-nya.
sudo chown -R ignite:developers /project
chgrp
Sintaks dasar:
chgrp [group] [file]
Misalnya kita ingin mengubah group dari file laporan.tzt
menjadi developers
tanpa mengubah ownership-nya:
chgrp developers laporan.txt
Setelah melakukan perubahan ownership/group, kita bisa gunakan perintah ls -l
untuk memeriksa hasil perubahan. Hal lain yang perlu diingat adalah hanya root
atau user yang menggunakan sudo
yang dapat melakukan perubahan ownership.
Penutup
Mengelola permission merupakan salah satu keterampilan dasar yang perlu dikuasai SysAdmin. Walaupun terkesan “dasar”, namun hal ini sangat krusial di sistem Linux.
Dengan memahami cara membaca nilai permission, mengubah/mengatur permission/ownership, kita dapat menjaga sistem Linux tetap aman dengan memastikan tiap file/direktori hanya dapat diakses oleh pihak atau user yang tepat.
Untuk tulisan kali ini sampai di sini dulu ya. Sampai jumpa. Bye.