Permission di Linux – part 1

Hai semuanya, apa kabar? Kali ini saya mau berbagi lagi tentang Linux, setelah tulisan sebelumnya kan personal, sekarang balik lagi ke Linux hehehe.

Pada Linux, file dan direktori memiliki izin atau tersendiri. Mungkin teman-teman sudah tahu bagaimana cara cek izin dari suatu file atau direktori. Yaitu dengan menggunakan perintah ls -l. Untuk pengujian pada tulisan kali ini, saya menggunakan file skrip kemarin (yang digunakan untuk mengirimkan informasi disk usage via Telegram).

Kita coba cek izin dari file tersebut:

[user@localhost ~]$ ls -l penyimpanan.sh
-r-xr--r--. 1 user user 463 Jan 9 10:08 penyimpanan.sh

Nah, terdapat field yang penting dalam kita belajar tentang izin di Linux. Terdapat 10 bit pada field izin tersebut. File penyimpanan.sh pada field tersebut memiliki nilai -r-xr--r--.

Pada bit pertama merepresentasikan jenis file. Apabila bernilai d artinya adalah direktori, namun apabila bernilai – artinya file biasa.

Biar lebih gampang, saya coba ilustrasiin di gambar 1

image host

gambar 1

Untuk bit selanjutnya (9 bit) dibagi menjadi tiga bagian. User/owner, grup, dan other. Jenis izin juga dibagi tiga, yaitu izin baca (read- r), tulis (write- w), dan eksekusi/menjalankan (execute- x). Apabila tidak memiliki izin, maka dilambangkan dengan -. Pada gambar 1, artinya file penyimpanan.sh untuk pemilik file memiliki akses read dan execute, untuk grup dan otherĀ hanya memiliki akses read.

Kita coba yuk. Kan untuk user/owner punya hak akses baca dan eksekusi, nah kita coba deh eksekusi tapi tanpa sudo, bisa atau nggak ya? Karena sudo itu perintah yang memungkinkan kita untuk bisa jalanin perintah dengan tingkat privilege yang lebih tinggi. Biasanya kita dapat menjalankan perintah sebagaimana root user.

image host

gambar 2

Mungkin agak membingungkan. Skrip berjalan, berhasil kirim notifikasi, tapi kok ada pesan eror ya? Permission denied. Dan pada notifikasi tidak menampilkan keterangan hari yang sesuai (pembuatan tulisan ini pada 10/1). Hmm kenapa ya?

Yuk kita amati. Kita lihat kode di bawah:

[user@localhost ~]$ cat penyimpanan.sh
#!/bin/bash


echo "Penggunaan Disk Tanggal $(date +'%d/%m/%Y')" > /home/user/penyimpanan.log

df -h / | awk 'NR==2 {print "Filesystem:", $1; print "Size:", $2; print "Used:", $3; print "Avail:", $4; print "Use%:", $5; print "Mounted on:", $6}' >> /home/user/penyimpanan.log

isi_log=$(cat /home/user/penyimpanan.log)
curl -s -F chat_id=<ini chat id> -F text="$isi_log" https://api.telegram.org/bot<ini bot token>/sendMessage >/dev/null


[user@localhost ~]$ ls -l penyimpanan.log
-rw-r--r--. 1 root root 130 Jan 9 10:30 penyimpanan.log

Ketemu penyebabnya. Pada skrip penyimpanan.sh, terdapat perintah untuk menyimpan tulisan judul yang disertai tanggal terkini dan juga status penyimpanan ke dalam file penyimpanan.log. Nah, saat pengujian tadi terdapat eror karena kita tidak menjalankan skrip dengan sudo dan juga karena file penyimpanan.log tidak memberikan hak akses execute apabila tidak menggunakan sudo/root.

Jadi, walaupun file penyimpanan.sh memberikan aksesĀ eksekusi kepada owner, namun tidak dengan file penyimpanan.log. Sehingga notifikasi tetap dikirim namun tidak berisi informasi terkini karena file penyimpanan.log tidak memberikan akses tersebut.

Nah, selanjutnya kita coba gunakan akses write pada file penyimpanan.sh, apakah bisa kita edit tanpa menggunakan sudo? Kita coba gunakan perintah nano penyimpanan.sh untuk edit file tersebut.

image host

gambar 3

Saat mencoba edit menggunakan nano, terdapat tulisan File … is unwriteable. Namun kita masih bisa menulis pada file tersebut. Namun, saat kita coba simpan file tersebut (ctrl+x lalu Y), tidak bisa disimpan: Permission denied. Kita tidak bisa menulis atau mengubah file tersebut karena tidak diberikan akses write.

Namun, saat pengujian menggunakan vi editor, sama-sama menampilkan

-- INSERT -- W10: Warning: Changing a readonly file
Press ENTER or type command to continue

dan file masih bisa diedit apabila “dipaksa” save menggunakan perintah :wq!

Untuk tulisan kali ini akan dilanjutkan di tulisan yang akan datang yaa.. Bye~

 

Leave a Comment