Salah satu kerjaannya Sysadmin yang paling critical adalah mengelola permissions. Kekurang hati-hatian dalam mengelola permissions ini dapat menimbulkan resiko keamanan dari sistem yang kita kelola.
Kali ini kita akan coba mempelajari command chmod yang digunakan untuk mengelola permissions yang disampaikan di atas.
Apa yang membedakan dan merupakan nilai lebih dari permissions di Linux dibandingkan dengan sistem yang lain (terutama Wind**s)? Hmm, let’s see…
Ada tiga hal penting yang harus dipahami terkait permission ini: the elements, the actions dan who.
The elements terdiri dari dua tipe dimana permission diterapkan, yaitu pada File dan Folder.
The actions menentukan aksi apa yang bisa dilakukan pada elemen-elemen tersebut, meliputi:
- Read
- Write
- Execute, dimana tidak hanya digunakan untuk mengeksekusi script atau binaries tapi juga berhubungan dengan aksi yang dapat dilakukan pada folder, seperti membuat file atau folder baru di dalam sebuah folder.
Dan siapa saja yang bisa melakukan aksi yang didefinisikan diatas (who)? Ada tiga komponen pada bagian ini, yaitu:
- User sebagai pemilik dari file/folder tersebut.
- Group dimana user pemilik file/folder tersebut merupakan anggotanya
- Dan user lain (others) yang bukan merupakan pemilik file/folder tersebut dan juga tidak masuk kedalam group yang sama dengan user pemilik file/folder tersebut.
Jalankan command ls -l dan kita akan melihat bagaimana permission dari sebuah file/folder

Field pertama, yang terdiri dari 10 karakter pada contoh di atas, menunjukkan permission dari elemen tersebut dengan penjelasan di bawah ini.
Karakter pertama dari field pertama pada keluaran diatas menjelaskan File Type nya. Contoh di atas, karakter pertamanya nya adalah (–) yang berarti File Typenya adalah normal file. Bila merupakan folder/directory, karakter pertama akan berisikan huruf d.
Keterangan
dari field File Typeadalah sebagai berikut :
– normal filed directory
s socket file
l link file
9 karakter berikutnya setelah File Type menjelaskan permission dari file atau direktori tersebut, baik read (r), write (w), dan execute (x),untuk user pemilik file/folder, group dari user pemilik file/folder atau pihak lain secara berurutan (user – group – others).
Bagaimana merubah permissions dari sebuah file/folder? Hal ini dapat dilakukan dengan menggunakan command chmod. Perhatikan syntax nya di bawah ini:
chmod permissions file [file 2] [file n]
file; [file 2]; [file n] merupakan reprentasi dari nama file/folder yang ingin dirubah permissions nya. Lalu bagaimana dengan spesifikasi atau representasi dari permissions itu sendiri?
Permissions dapat dipresentasikan dengan octal representation maupun symbolic representation. Penjelasan untuk kedua representasi ini sebagai berikut:
Octal Representation
Untuk memahami notasi octal sebagai representasi permissions, perhatikan contoh dibawah ini, dimana kita mengatur permissions dari file.txt dengan ketentuan owner memiliki akses read dan write, group nya memiliki akses write saja, dan pihak lain tidak memiliki akses apapun ke file.txt tersebut. Kita mengekusi command chmod sebagai berikut:
sudo chmod 640 file.txt
Sekarang kita coba untuk membaca file tersebut menggunakan user yang bukan merupakan owner dari file tersebut dan tidak termasuk sebagai member dari group yang sama dari owner file itu, perhatikan output nya.
sudo -u other-user more file.txt
Seharusnya akan muncul pesan error seperti di bawah ini:
file.txt: Permission denied
Pertanyaan selanjutnya, dari mana datangnya angka 640 itu?
Setiap digit dari angka 640 di atas merepresentasikan permissions yang dimiliki oleh owner, group dan others. Dan setiap digit merupakan representasi oktal dari kombinasi permissions yang hendak kita implementasikan. Jadi:
- 0 – tidak ada akses apapun (no permission).
- 1 – akses execution.
- 2 – akses write.
- 4 – akses read.
Jadi untuk memberikan hak akses read dan write, direpresentasikan dengan angka 2 + 4 = 6. Untuk lebih jelasnya, perhatikan tabel di bawah ini:
Number | Binary | Read? [r] | Write? [r] | Execute? [x] |
---|---|---|---|---|
0 | 000 | No | No | No |
1 | 001 | No | No | Yes |
2 | 010 | No | Yes | No |
3 | 011 | No | Yes | Yes |
4 | 100 | Yes | No | No |
5 | 101 | Yes | No | Yes |
6 | 110 | Yes | Yes | No |
7 | 111 | Yes | Yes | Yes |
Symbolic Representation
Selain menggunakan representasi oktal, penggunaan symbolic representation juga dapat digunakan pada command chmod. Pada representasi simbolis ini, penggunaan huruf dan operator aritmatika adalah sebagai berikut.
Untuk merepresentasikan users, simbol yang digunakan adalah sebagai berikut:
- u: file owner.
- g: file owner’s group.
- o: other users.
- a: all users.
Sedangkan representasi action atau akses sama seperti halnya pada representasi oktal yang sudah kita bahas sebelumnya:
- r: read.
- w: write.
- x: execute.
Dan penggunaan operator aritmatika untuk mengatur permissions adalah sebagai berikut:
- =:
mengeset hak akses danmenggantikan hak akses yangterlah diatur sebelumnya (sets the permissions as specified, overwriting any other previous permissions). - +:
menambahkan hak akses (adds permissions). - –:
menghapus hak akses (removes permissions).
Contoh syntax penggunaan symbolic representation adalah sebagai berikut:
sudo chmod who operator action(s)[,who operator action(s),…]
Dengan contoh yang sama, dimana kita mengatur permissions dari file.txt dengan ketentuan owner memiliki akses read dan write, group nya memiliki akses write saja, dan pihak lain tidak memiliki akses apapun ke file.txt tersebut. Kita mengekusi command chmod menggunakan symbolic representation sebagai berikut:
sudo chmod u=rw,g=r,o-rwx file.txt
Contoh lain, bila kita ingin mempertahankan hak akses yang sekarang namun ingin menambahkan hak akses write bagi seluruh user, kita cukup menuliskan command sebagai berikut:
sudo chmod a+w file.txt
Command di atas akan menambahkan permissions di bawah ini:
-rw-r----- 1 adisun adisun 0 Jun 26 17:38 file.txt
menjadi:
-rw-rw--w- 1 adisun adisun 0 Jun 26 17:39 file.txt
Selain dari pembahasan terkait permissions yang sudah kita bahas di atas, ada 3 (tiga) lagi special permissions yang digunakan pada Linux: setuid (user id), setgid (group id) dan sticky.
setuid
setuid (set user ID) dapat diimplementasikan pada file yang executable, dimana ketika file tersebut dieksekusi akan menggunakan permissions yang dimiliki oleh owner dari file tersebut.
Hal ini biasanya digunakan untuk memberi hak akses bagi user biasa (yang tidak memiliki superuser privileges) untuk mengakses beberapa file-file executable tertentu dengan root privileges.
Sebagai contoh, /bin/ping. Bila kita cek permissions nya, kita akan menemukan bahwa setuid sudah diset pada binary tersebut.
-rwsr-xr-x 1 root root 44168 May 7 2014 /bin/ping*
Perhatikan huruf s yang menggantikan huruf x pada bit execution untuk owner. Kita bisa mencoba untuk menghapus setuid dari file tersebut.
sudo chmod u-s /bin/ping
Hal ini akan mengakibatkan user biasa tidak bisa menggunakan command ping, yang mana bila kita mencoba:
ping localhost
Maka akan muncul pesan sebagai berikut:
ping: icmp open socket: Operation not permitted
Tentu saja user yang memiliki akses sudo dapat mengakses file-file yang memiliki root privileges tanpa harus menambahkan setuid pada file tersebut. Namun seperti yang disebutkan di atas, pendekatan ini akan berguna untuk user-user biasa tanpa superuser privileges.
Untuk menambahkan kembali setuid:
sudo chmod u+s /bin/ping
setgid
Bila setuid membolehkan user untuk menggunakan hak akses dari owner file tertentu, maka setgid membolehkan user untuk menggunakan hak akses dari group nya owner file tersebut.
setgid bit dapat di atur dengan menggunakan notasi oktal:
sudo chmod 2777 script.sh
dimana pengesetannya menggunakan angka 2
atau dengan menggunakan notasi simbolis:
sudo chmod g+s script.sh
Bila kita cek, outputnya adalah sebagai berikut:
-rwxrwsrwx 1 adisun adisun 27 Nov 21 19:22 script.sh*
sticky
sticky bit digunakan pada direktori dimana kita menginginkan sebuah file atau folder writeable untuk beberapa user, namun file dan folder di dalamnya hanya dapat dihapus oleh owner nya sendiri. Sebagai contoh, sticky bit ini digunakan pada direktori /tmp dan /var/tmp.
Untuk meng-assign sticky bit ini dapat menggunakan notasi oktal (menggunakan angka 1 dan diikuti dengan permissions yang kita kehendaki–biasanya 777 pada kasus ini):
sudo chmod 1777 sticky/
Atau, menggunakan notasi simbol:
sudo chmod +t sticky/
Bila kita cek, sticky bit direpresentasikan dengan huruf t seperti di bawah ini:
drwxrwxrwt 2 adisun adisun 4096 Nov 21 19:22 sticky/
Untuk lebih memahami tentang sticky bit ini, cobalah untuk memodifikasi folder sticky/ di atas dengan owner maupun dengan user lain, dan juga coba lah untuk menghapusnya:
touch file.txt
echo "written with owner" > file.txt
sudo -u other-user echo "written with other user" > file.txt
Seharusnya eksekusi di atas akan berhasil, tapi coba sekarang delete file tersebut dengan user lain yang bukan owner:
sudo -u other-user rm file.txt
Akan keluar pesan seperti ini:
rm: remove write-protected regular file ’file.txt’?
Kita bisa saja mencoba mengetikkan y untuk melanjutkan, tapi…
rm: cannot remove ’file.txt’: Operation not permitted
Namun, owner dari file.txt bisa menghapus file tersebut tanpa kendala apapun.
Untuk menghapus sticky bit, gunakan command berikut:
sudo chmod -t sticky/
Semoga bermanfaat.
Post A Reply