Saat kamu belajar perintah linux pasti kamu akan menjumpai kasus dimana suatu file tidak bisa kamu buka, bahkan tidak bisa kamu lihat dengan user biasa (bukan root).
Baca: belajar perintah linux
Disinilah penting nya kamu memahami hak akses /file perminssion di linux.
Apa itu Hak Akses File di Linux
Linux menerapkan hak akses file yang sangat ketat, setiap file akan dibeli label (file attribute) yang menjabarkan hak akses untuk user dan group terhadap file tersebut.
Hanya user dan group tertentu yang bisa membaca,memodifikasi dan mengeksekusi file tersebut.
Atribut ini sering disebut dengan file permission.
Untuk Membatasi Akses user dan process ke File
Tujuan diberlakukan/set file permission pada linux adalah untuk alasan keamanan yang tujuan utamanya adalah membatasi akses user terhadap suatu file.
Cara ini sangat efektif untuk memproteksi file sistem dari modifikasi user yang tidak bertanggung jawab (hacker).
Ownership dan File Permission
Pada sistem linux, semua file memiliki tuan, ini adalah cara untuk menentukan hak akses untuk file tersebut.
Hak akses pemilik,group dan user lain terhadap file tersebut ditentukan oleh file permission/ file attribut yang menempel di file tersebut.
Hak Kepemilikan File (Ownership)
Setiap file di linux punya tuan (owner) yang punya hak akses penuh terhadap file tersebut (baca,tulis,eksekusi), secara default owner sebuah file adalah user yang membuat file tersebut.
Tapi administrator/root bisa mengubah ownership sebuah file dengan perintah chown dan bisa menentukan hak akses untuk user dan group terhadap file tersebut dengan perintah chmod.
Hak akses untuk owner,group dan user lain di dalam sistem ditentukan oleh file attribut /file permission
Attribute Hak Akses File (File Permission)
Hak akses suatu file didefinisikan dalam suatu atribut yang sering disebut file permission.
Pada attribut file permission menjelaskan permission/hak akses untuk 3 kelompok user,yaitu :
- Ownner : Menjelaskan Permission/hak akses untuk owner/pemilik file tersebut.
- Group : Menentukan permission/hak akses untuk sekelompok user yang masuk dalam group tersebut.
jadi semua user yang masuk ke group tersebut akan mempunyai hak akses file yang sama - Other/World : Menentukan permission/hak akses untuk semua user yang ada di sistem.
Flag File permission Huruf (RWX)
Untuk menjelaskan hak akses suatu file,linux menggunakan flag permission ,dimana setiap flag menjelaskan hak akses untuk user owner,group dan world/other.
- Read (R) : Hak akses untuk membaca isi file/folder
- Write(W) : Hak akses untuk memodifikasi suatu file/memodifikasi isi folder
- Execute(X) : Hak akses untuk mengeksekusi sutu file/menjalankan aplikasi.
Jadi pada attribut file permission nanti ada flag permission seperti diatas untuk menentukan hak akses user terhadap file tersebut.
Selain dengan simbolic/huruf,flag file permission juga bisa dijabarkan menggunakan angka.
Flag File Permission Angka
Metode atribut angka jauh lebih efisien saat kamu ingin mengeset attribut suatu file,karena kamu hanya mengetikan 1 digit file untuk setiap segmen (total 3 digit angka untuk mengeset permission owner,group dan other).
Attribut/permission Read(R) mempunyai nilai 4 ,Write (W) mempunyai nilai 2 sedangkan attribut executable(X) mempunyai nilai 1.

Cara mengubah hak akses file dengan perintah CHMOD
Jadi jika kamu ingin megeset permission suatu file dengan hak akses Owner (read,write,execute) ,group (read,execute) dan Other (read,execute) maka kamu cukup mengesetnya menggunakan 3 digit angka yaitu 755
$ chmod 755 nama_file_folder
Sticky bit Permission

Agar user other/world Tidak bisa menghapus file
sticky bit permission ini digunakan untuk mengantisipasi dihapusnya sebuah file/folder oleh user (other/world) yang mempunyai permission Write (w) terhadap file/folder tersebut.
Dengan demikian hanya root dan owner yang bisa mendelet file/folder tersebut.
jadi ingat,attribut ini hanya digunakan untuk mengeset user yang masuk dalam kategori other/world (bukan owner ataupun group).
Cara Mengeset Sticky Bit Permission
Kamu bisa memberikan atribut sticky bit dengan 2 cara yaitu :
- numeric value sticky bit permission =1
- dan sysmbolic character sticky bit permission =t
Contoh kamu ingin mengeset sticky bit permission pada folder /home/share maka kamu bisa mengesetnya menggunakan :
Cara symbolic
# chmod o+t /home/share
atau chmod +t /home/share
Untuk menghapus atribut permision kamu bisa gunakan operator – (minus)# chmod o-t /home/share
atau chmod -t /home/share
Cara Numeric
Pertama kamu harus tau permission seperti apa yang kamu inginkan pada directory /home/share
Misal folder diatas mempunyai attribut drwxrw-rwx
Kamu bisa mengkonversinya kedalam numeric 3 digit permission dan menambahkan angka 1 pada digit awal menjadi 4 digit.
r(2)+w(4)+x(1) r(2)+w(4)+ –(0) r(2)+w(4)+x(1) –> drwxrw-rwx =767# chmod 1767 /home/share
setelah diberi attribut sticky bit permission maka jika dilihat menggunakan perintah ls -l maka akan terlihat seperti dibawah ini
[root@SparkFly ~]# chmod 1767 /home/share
[root@SparkFly ~]# ls -l
/home/ drwxrw-rwt 1 root root 0 Jul 11 14:25 share
T besar dan t Kecil pada sticky bit attribute
T besar dan t kecil memiliki makna yang berbeda, dimana T besar mengindikasikan atribut x tidak diset dan t kecil mengindikasikan attribut x diset.
Logic nya begini sticky bit + execute permision diwakili dengan t kecil dan sticky bit + non execute permission diwakili dengan T besar
contoh: jika kamu ingin membuat folder /home/share menjadi non executable tapi tetap menerapkan attribut sticky bit permission maka caranya :
Cara symbolic$ sudo chmod o+t /home/share
atau chmod +t /home/share
$ sudo chmod o-x /home/share
Cara Numeric
Pertama kamu harus tau permission seperti apa yang kamu inginkan pada directory /home/share
misal atribute folder diatas adalah drwxrw-rw-
Kamu mengkonversinya kedalam numeric 3 digit permission dan menambahkan angka 1 pada digit awal menjadi 4 digit.
r(2)+w(4)+x(1) r(2)+w(4)+ –(0) r(2)+w(4)+–(0) –> drwxrw-rw- =766# chmod 1766 /home/share
mari lihat dengan perintah ls -l maka hasilnya akan terlihat seperti dibawah ini (atribut T besar)
[root@SparkFly ~]# chmod 1766 /home/share
[root@SparkFly ~]# ls -l /home/
drwxrw-rwT 1 root root 0 Jul 11 14:25 share
SUID Permission
SUID (Set owner User ID up on execution) merupakan special permission yang diberikan kepada file pada linux sistem.Secara normal ketika aplikasi dijalankan di linux aplikasi tersebut dieksekusi menggunakan user dan permission dari user itu sendiri.
SUID memberikan permission secara sementara kepada aplikasi agar dijalankan menggunakan user dan permission dari owner file/aplikasi tersebut, bukan menggunakan user dan permission user yang menjalanan nya.

Kapan dan untuk apa SUID digunakan?
SUID digunakan ketika kita sebagai admin tidak mau memberikan akses root /sudo kepada user yang akan menjalankan aplikasi tertentu,tetapi aplikasi tertentu hanya bisa berjalan jika dijalankan oleh root.
Maka solusinya adalah dengan set owner aplikasi ke user root dan menambahkan permission SUID ke aplikasi tersebut.
Setelah aplikasi diset SUID maka aplikasi akan berjalan menggunakan user root dan permission root walau dijalankan oleh user biasa tanpa permission root /sudo.
Cara mengeset SUID pada sebuah file /aplikasi
SUID memiliki numerical value 4 dan symbolic value s ,jadi untuk mengeset file/folder dengan attribut SUID kita hanya perlu menambahkan angka 4 pada digit pertama saat set permission menggunakan cara numerical/octal dan menambahkan +s jika menggunakan cara symbolic
Contoh : kita ingin set SUID pada file degan nama aplikasi.sh
Cara symbolic# chmod u+s aplikasi.sh
dan untuk menghapus SUID permission gunakan # chmod u-s aplikasi.sh
Cara Numeric
Pertama kita harus tau permission seperti apa yang kita inginkan pada file aplikasi.sh misal : -rwx–x–x lalu kita mengkonversi kedalam numeric 3 digit permission dan menambahkan angka 4 pada digit awal menjadi 4 digit.
r(2)+w(4)+x(1) –(0)+–(0)+ x(1) –(0)+–(0)+x(1) –> -rwx–x–x =711# chmod 4711 aplikasi.sh
untuk menghapus SUID permission ganti 4 jadi tak ada # chmod 711 aplikasi.sh
Mengeset SUID harus dilakukan oleh user owner yang ingin permission nya diturunkan (inherit) ketika file/aplikasi tersebut dijalankan oleh user lain.
S besar dan s kecil memiliki arti yang berbeda ketika muncul di atribut saat menggunakan perintah ls -l ,dimana S besar mengindikasikan atribut x tidak diset dan s kecil mengindikasikan attribut x diset.
Logic nya begini SUID + execute permision diwakili dengan s kecil dan SUID + non execute permission diwakili dengan S besar
SGID Permisison

SGID (Set Group ID up on execution) adalah special permission yang diberikan untuk file/folder pada linux.
Pada kasus normal,ketika user mengeksekusi file/aplikasi maka aplikasi tersebut akan berjalan menggunakan user dan permission user yang menjalankannya.
SGID atribut memberikan permission sementara kepada user diluar group (other) untuk menjalankan file/aplikasi menggunakan permission group dari file/aplikasi itu sendiri.
SGID mirip dengan SUID.
Perbedaan nya adalah SUID menggunakan owner permission untuk menjalankan file/aplikasi sedangkan SGID menggunakan group permission untuk menjalankan file/aplikasi ketimbang menggunakan permission user yang menjalankan file/applikasi tersebut.
Cara mengeset SGID pada sebuah file /aplikasi
SGID memiliki numerical value 2 dan symbolic value s ,jadi untuk mengeset file/folder dengan attribut SUID kita hanya perlu menambahkan angka 2 pada digit pertama saat set permission menggunakan cara numerical/octal dan menambahkan +s jika menggunakan cara symbolic
Contoh : kita ingin set SGID pada file degan nama aplikasi.sh
Cara symbolic# chmod g+s aplikasi.sh
dan untuk menghapus SUID permission gunakan # chmod g-s aplikasi.sh
Cara Numeric
Pertama kita harus tau permission seperti apa yang kita inginkan pada file aplikasi.sh misal : -rwxrwx— lalu kita mengkonversi kedalam numeric 3 digit permission dan menambahkan angka 2 pada digit awal menjadi 4 digit.
r(2)+w(4)+x(1) r(2)+w(4)+ x(1) –(0)+–(0)+–(0) –> -rwxrwx— =770# chmod 2770 aplikasi.sh
untuk menghapus SUID permission ganti 4 jadi tak ada # chmod 770 aplikasi.sh
KESIMPULAN
Saat kamu belajar linux server kamu wajib untuk mempelajari dan memahami advanced dan special permission linux,karena akan sangat membantu mengatasi masalah saat kamu mengelola server linux.
mantap
ralat mas, pada judul “Flag File Permission Angka” untuk angka READ itu bernilai 4, sedangkan WRITE itu bernilai 2
ok siap, masukan di terima!