Archived Linux

Fungsi file attribut serta hak akses pada linux

Memahami Hak Akses User(User Privileges)

Sebenarnya windows dan linux sama-sama menggunakan attribut file permission untuk mengatur hak akses user dan aplikasi terhadap sebuah file,pembatasan hak akses ini dibuat untuk tujuan keamanan.

Pada Windows -Kebanyakan pengguna windows tidak mau tau dan windows pun memberi kemudahan walau user komputer disetting tidak sebagaimana mestinya(semua user mempunyai hak akses administrator),mungkin karena windows dibuat agar penggunanya nyaman dan kesan nya tidak ada error, namum pengaturan hak akses user yang tidak benar (semua user berlevel administrator) memberikan resiko mudahnya malware menginfeksi seluruh sistem ketika user ceroboh mengeksekusi sebuah file yang ternyata malware.pada intinya privilage/hak akses dibuat untuk membatasi akses fitur penting pada sistem operasi agar tidak disalahgunakan oleh user yang tidak bertanggung jawab /malware,karena malware pada dasarnya perintah dan tindakan user yang dikemas dalam bentuk aplikasi.

Malware perlu hak akses tertinggi-Malware memerlukan hak akses tertinggi (administrator pada windows,root pada linux) untuk bisa menginfeksi sebuah sistem dengan utuh,jika malware berjalan pada user biasa maka fungsi malware tidak akan berjalan sempurna karena tidak bisa membaca dan mengakses file dan fitur penting sistem operasi yang hanya bisa diakses oleh user dengan privilage tertinggi (administrator/root). oleh karena itu biasanya malware telah disenjatai dengan  tehnik.

Pada Linux-Pemberian user privilage harus dipikirkan dengan matang-matang, apalagi untuk user dengan privilage root (setara hak akses administrator pada windows),karena root adalah dewa , dinama root # bisa melakukan apapun terhadap sistem karena root merupakan hak akses tertinggi pada linux sistem.

privilage escalation(pengangkatan hak akses user secara paksa) yang berfungsi untuk menggkat privilage dari user biasa ke administrator/root agar malware bisa berjalan dan menginfeksi sistem dengan sempurna.

hakSecara default user biasa pda linux mempunyai hak akses yang sangat terbatas terhadap sistem (tidak bisa mengakses setting dan file system) sehingga keamanan di linux lebih terjamin dibandingkan windows yang terkesan “umbaran” dalam memberikan hak akses walau pada user biasa sekalipun, pada windows OS juga sangat mudah untuk melakukan privilage user escalation dan banyak cara untuk membypass pertahanan windows,sedangkan di Linux akan sangat susah karena linux mempunyai komunitas opensource yang sangat besar sehingga pembaruan Kernel dan Patch system sering sekali dilakukan untuk mengatasi berbagai macam masalah keamanan.

Memahami  Attribut file permission dan ownership pada Linux

Pada dunia keamanan,File permission dan attribut pada linux digunakan untuk mempertahankan system dari hacker yang mempunyai akses ke mesin,baik akses langsung fisik,remote atau melalui malware.Walau hacker telah berhasil masuk kedalam sistem linux,bukan berarti hacker telah  memegang kendali 100% sebelum dia berhasil mengangkat user privilage  menjadi root.File permission dan attribut berperan penting dalam mempertahankan linux dari hacker karena tanpa memegang root privilage maka hak akses dan ruang gerak hacker akan  sangat terbatas (bisa masuk tapi tidak bisa melakukan apa-apa) .

File attribut dan permission digunakan pada linux dengan multi user untuk mengatur hak akses sebuah file ,sehingga user tidak bisa melihat dan mengakses file milik user lain yang ada di dalam sistem tersebut.

Intinya-File permission dan attribut (ownership) adalah komponen penting linux yang menyediakan cara aman untuk menyimpan file dengan membatasi hak akses kepada  user lain yang ada di dalam sistem.

File attribute- Pada Unix Like OS (termasuk Linux dan MacOS) setiap file mempunyai 3 attribut yang menerangkan akan hak akses ke file tersebut yaitu –

Owner Permission – Hak akses/permission terhadap pemilik/pembuat file tersebut

Group Permission -Hak akses/permission suatu group dan semua user didalam group tersebut terhadap file tersebut.

Other (World) permission – Hak akses untuk semua user yang ada di dalam sistem tersebut (baik owner,group dan user lain yang ada dalam sistem) terhadap file tersebut.

Indikator Permission – Untuk melihat file permission kamu bisa menggunakan perintah ls -l dan hasilnya akan terlihat seperti dibawah ini :

[root@nxxs mail]# ls -l
total 8
-rw-rw----. 1 admin mail 0 Dec 30 08:47 admin
-rw-rw---- 1 mailbox mail 0 Dec 31 06:37 mailbox
drwxr-xr-x 4 mailbox mailbox 4096 Jan 4 01:04 vhosts
drwxr-xr-x 6 mailbox mailbox 4096 Jan 4 05:43 virtual_mailbox_base

Keterangan : 

  1. Jumlah block yang terpakai oleh file                                            5. Jumlah Hardlink yang menuju ke file/directory tersebut
  2. Jenis File(digit pertama) dan Owner Permission(digit ke 2-4)     6. File Owner (User dan Group Owner)
  3. Group Permission (digit ke 5-7)                                                    7. Ukuran File
  4. Other /World Permission (digit ke 8-10)                                       8. Nama File /Folder (Warna Biru untuk folder,putih file tanpa atribut X dan hijau untuk file dengan attribut executable-X)

Digit pertama merupakan attribute special permission yang bisa salah satu dari attribut dibawah ini

  • _ – File biasa tanpa special permisison
  • d – Directory/folder
  • – Sysmbolic link dari file atau directory
  • s/g  – Menandakan setuid/setgid permissions. digunakan untuk menberitahu system agar file executable dijalankan menggunakan user owner /group owner permission ketika dijalankan user lain.
  • t – Indikasi dari sticky bit permissions. attribut ini biasanya diletakan di digit akhir (hasil tampilan ari perintah ls -l), attribut sticky bertujuan untuk mencegah penghapusan file oleh user lain yang mempunyai read-write access terhadap file tersebut (*file /directory)
  • S /T/G dengan huruf besar menandakan bahwa file tidak diberi atribut permission x sedangkan s/t dengan huruf kecil menandakan file diberi atribut permission x

Kolom pertama yang perlu diperhatikan, kolom pertama dibagi menjadi 3 seksi (nomer 2–3–4) kolom inilah yang merupakan attribut permission dari sebuah file. Setiap section terdiri dari 3 digit attribut yang bisa diisi dengan rwx

3 Permission dasar pada linux – Permission untuk Memodifikasi file(Write – W) ,Membaca file (Read- R) dan mengeksekusi/menjalankan  (execute – X) jika file tersebut berbentuk binnary,tanda – pada attribut menandakan file tersebut tidak mempunyai permission yang seharusnya ada pada kolom tersebut.Atribut permission sebuah file mempunyai urutan rwx ,jika file hanya mempunyai permission read maka menjadi r– , permission ini dibagi menjadi 3 seksi seperti yang dijelaskan sebelum nya yaitu Owner,Group dan other (world)

Ownership /Hak kepemilikan File dalam Linux

Penjelasan detail akan dibahas pada bab ini,jadi jangan melakukan quick reading agar kamu benar-benar paham karena ini sangat penting dan agak membingungkan khususnya bagi pemula.

Pada contoh diatas terlihat semua file dan folder mempunyai owner dan group owner(6) yang sama yaitu user admin sebagai owner dan group mail sebagai group owner , dari informasi kotak nomer 6 pada gambar diatas bisa kita tafsirkan sebagai berikut :

Owner permission attribute (user admin) berada di kotak nomer yaitu pada digit 2-4 (rwx),digit pertama menerangkan jenis file (d untuk directory – untuk file biasa dan l untuk Link/shortcut)

Group permision (semua user yang berada di group mail) berada di kotak nomer 3 yaitu digit ke 5-7

Permision untuk other/world berada pada 3 digit terakhir di kotak nomer ,yang artinya semua user selain user admin dan  semua user yang tidak masuk dalam group mail menggunakan permission pada kotak nomer 4 yaitu digit 8-10

Root adalah dewa-Bisa melakukan apapun bahkan bisa mengakses file  dengan permision 000 (———) ,jadi berhati-hatilah memberikan akses root kepada user (menggunakan sudo)

Mengatur File Permission dan Ownership pada linux

Secara default owner dari sebuah file adalah user dan group dari pembuat file tersebut, namun adakalanya kita perlu meyesuaikan ownner dari sebuah file untuk kepentingan konfigurasi lebih lanjut,misalnya sharing file dengan user lain atau saat penginstallan aplikasi /service.

sebagai contoh jika kita membuat file dengan nama test menggunaan user admin, maka permision untuk file yang baru kita buat dengan user tersebut akan terlihat seperti dibawah ini :

[admin@nxxs download]$ touch test
[admin@nxxs download]$ ls -l test
-rw-rw-r-- 1 admin admin 0 Jan 5 14:23 test
[admin@nxxs download]$

pada contoh diatas owner dari file tersebut adalah user admin (permision read-write) dan permision untuk group dan world adalah read-only (r)

Ownership hanya bisa diubah oleh user root atau user yang berada di sudo list sedangkan permission hanya bisa diubah oleh owner dari file tersebut, selain owner tidak bisa merubah permission walau user lain diberi permission rwx sekalipun.

Merubah Ownership

Untuk bisa merubah ownership sebuah file /folder  user harus mempunyai privilage root,baik melalui sudo atau berada di group root /wheel. perintah chown digunakan untuk mengeset owner dan group owner sebuah file misalnya perintah chown apache:apache home.html merubah kepemilikan/owner file home.html ke user apache dan mengatur permision semua user yang ada di groups apache terhadap file home.html, dan semua user yang tidak berada di grup apache menggunakan permission other(world). Dengan kata lain hanya user apache yang bisa mengubah permission dari file tersebut,karena user apache merupakan owner dari file home.html

format perintah merubah ownership – chown user:group namaFile contoh: chown admin:apache home.html

Menggunakan Binary References untuk merubah permissions

Cara ini merupakan cara favorit yang digunakan oleh banyak user linux karena untuk mengeset permission owner,group dan other bisa dilakukan dengan  simpel  cukup memasukan 3 digit angka kepada chmod command, setiap permission diwakili dengan angka dan setiap attribut (r/w/x) mempunyai nilai yang berbeda seperti dijabarkan dibawah ini :

Contoh : chmod 640 filename – yang artinya mengeset attribut permission file dengan nama filename sehingga owner mempunyai permission read-write ,group mempunyai permisson read dan other tidak mempunyai permision apapun terhadap file ini.

Digit pertama mewakili permission untuk owner,digit kedua mewakili permission untuk group dan digit ketiga mewakili permission untuk other(world).Adapun nilai dari masing-masing attribut permission (rwx) adalah :

r=4  (read /dibolehkan membaca file)
w=2 (write /dibolehkan mengedit-delete file)
x=1  (executable /dibolehkan mengeksekusi file untuk file binnary)
t=1  (adalah permission untuk mengeset  sticky bit dan diletakan di digit pertama misal 1640)
s=4  (SUID attribut,agar aplikasi menggunakan user owner berikut permission nya ketika dijalankan oleh user lain)
g=2  (SGID attribut,agar aplikasi menggunakan group owner berikut permission nya ketika dijalankan oleh user lain)

untuk mengeset permission sesuai dengan yang kamu inginkan,kamu hanya perlu menjumlahkan total nilai dari permission yang ingin kamu gunakan.

contoh: file dengan nama filename ingin dirubah dengan permission -rw-r—– kamu hanya perlu memasukan 640 ke chmod command darimana asalnya angka 640?
pertama – kita bagi attribut permission diatas menjadi 3 bagian yaitu owner permision,group dan other permission seperti dibawah ini
-rw-               r–          —
0+4+2+0   4+0+0    0+0+0
kedua – kita jumlahkan nilai permission untuk setiap bagian(section)
6                     4              0
ketiga -tinggal kita masukan ke chmod command angka 640 (chmod 640 filename)yang sama artinya dengan -rw-r—– ,read write untuk owner,read untuk group dan otheer tidak diberi permission apapun.

Menggunakan symbolik/huruf untuk merubah permissions

kita juga bisa mengeset permission menggunakan symbol huruf ,walau caranya agak sedikit ribet karena saat pengesetan permission perlu dilakukan satu per satu baik untuk owner,group dan other.

r – Read
w – Write
x – Execute

Adapun simbol untuk mengeset permision yang kita maksud,kita gunakan simbol:

– Owner   -> Mengeset Owner permission
g – Group    ->Mengeset Group permission
o – Others    ->Mengeset Other permission
a – All users  ->Mengeset semua permission (owner,group dan other sekaligus)
Tanda + (plus) dan  (minus) digunakan sebagai operator untuk meambahkan/mengaktifkan permission atau menghapus/mencabut permission.
Contoh – kita ingin mengeset permission sebuah file dengan nama home.html menjadi rwxr—–yang sebelum nya beratribut rwxrw-r– ,maka kita hanya perlu mengubah permission group dan other karena owner permission nya masih sama.
-Ubah group permision menjadi read only (r–) dengan menghapus permission write (w) menggunakan perintah chmod g-w home.html
-Ubah other permission menjadi nothing () dengan menghapus permission read (r) menggunakan perintah chmod o-r home.html
 gunakan tanda + jika kamu ingin menambahkan attribut dan tanda – jika ingin mencabut attribut

Advanced dan Special Permission

Linux mempunyai special permission selain permission rwx yang telah dijelaskan sebelum nya,permission ini sangat berguna ketika sistem yang kita bangun mulai sedikit rumit dengan user yang komplex dengan kebutuhan tertentu.

Sticky bit Permission

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

numeric value sticky bit permission =1 dan sysmbolic character sticky bit permission =t

Contoh kita ingin mengeset sticky bit permission pada folder /home/share maka kita bisa mengesetnya menggunakan :

Cara symbolic
chmod o+t /home/share atau chmod +t /home/share 
Untuk menghapus atribut permision kita gunakan operator  (minus)
chmod o-t /home/share atau chmod -t /home/share

Cara Numeric
Pertama kita harus tau permission seperti apa yang kita inginkan pada directory /home/share misal : drwxrw-rwx lalu kita mengkonversi 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@nxxs home]# chmod 1767 share/
[root@nxxs home]# ls -l /home/
total 12
drwx------. 3 admin admin 4096 Jan 5 14:38 admin
drwx------ 2 mailbox mailbox 4096 Dec 31 06:37 mailbox
drwxrw-rwt 2 root root 4096 Jan 5 14:38 share
[root@nxxs home]#

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 Tbesar

contoh: jika kita ingin membuat folder /home/share menjadi non executable tapi tetap menerapkan attribut sticky bit permission maka caranya :

Cara symbolic
chmod o+t /home/share atau chmod +t /home/share 

chmod o-x /home/share

Cara Numeric
Pertama kita harus tau permission seperti apa yang kita inginkan pada directory /home/share misal : drwxrw-rw- lalu kita mengkonversi 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

ketika kita lihat dengan perintah ls-l maka akan terlihat seperti dibawah ini (atribut T besar)

[root@nxxs home]# chmod 1766 /home/share
[root@nxxs home]# ls -l /home/
total 12
drwx------. 3 admin admin 4096 Jan 5 14:38 admin
drwx------ 2 mailbox mailbox 4096 Dec 31 06:37 mailbox
drwxrw-rwT 2 root root 4096 Jan 5 14:38 share
[root@nxxs home]#

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

Andri Kurniawan
What’s up, I’m Andri. I’m a Website Developer based in Dunispulsa with over 12 years of professional experience. I spend my days working on all sorts of interesting web projects.