Mengenal Access Permission Sticky Bit di GNU/Linux


Kalau Anda membaca artikel kemaren mengenai cara merubah hak akses di GNU/Linux saya menyarankan untuk menulis dengan 4 format notasi angka, contoh 0644. Meskipun kenyataannya angka nol di awal tidak perlu ditulis. Saya menyarankan menggunakan 4 format, sebagai penegasan permission saja dan sebagai pembelajaran bahwa ada special permission yang perlu kita ketahui.

Coba perhatikan tangkapan layar di bawah ini:

Lihatlah yang berwarna merah dan kuning, juga tanda t dan T dan s dan S. Dan perhatikan pulah letaknya ada huruf S di awal atau tengah dan huruf s diakhir. Kemudian huruf t dan T selalu diakhir. Huruf t dan T merupakan singkatan atau notasi dari Sticky Bit. Sedangkan, s dan S notasi dari Setuid atau Setguid.

Pada pembahasan artikel kali ini, kita bahas mengenai sticky bit terlebih dahulu.

Sticky Bit

Sticky Bit merupakan special permission yang mana hanya pada akun pemilik (user as owner) dan akun root yang bisa menghapus atau me-rename suatu direktori atau berkas. Artinya jika Anda login sebagai Fulan lalu men-sticky bit suatu berkas Anda, lalu ada orang lain ingin me-rename atau menghapusnya ia tidak akan bisa, meskipun kita mengeset permission-nya dengan 777 yang mana seharusnya semua user bisa saja menghapus atau rename direktori. Karena si Fulan men-sticky bit maka user lain yang satu group sekalipun tidak akan bisa. Perlu diketahui untuk menggunakan sticky bit, kita harus mengeset pada top directory / parent directory-nya.

Cara Menggunakannya

chmod 1777 nama_top_directory

atau

chmod +t nama_top_directory

Perhatikan contoh tangkapan layar berikut:

Lihat tanda t di akhir permission. Artinya sticky bit. Kita membuat satu direktori bernama allaccess yang mana dengan permission 1777 artinya secara teori seharusnya seluruhnya bisa read, write, dan execute artinya semua bisa menghapus atau rename. Namun karena kita men-sticky bit direktori allaccess, maka user manapun tidak akan bisa merubahnya.

Perhatikan gambar di bawah ini:

Perhatikan berkas-berkas di atas. Semua memiliki permission rwx jika Anda login dengan akun apapun seharusnya bisa menghapusnya. Contoh di sini kita login dengan akun Fulan dan mencoba menghapus berkas_Ali.

Nah lihat ada tulisan operation not permitted. Meskipun permissionnya rwx tetap tidak akan bisa dihapus oleh pengguna manapun selain pemiliknya. Perhatikan lagi gambar di bawah ini:

Kita lihat user fulanah mencoba menghapus berkas_Ali. Padahal dia masuk groups users, seharusnya bisa dihapus dengan permission rwx tersebut. Tapi nyata, si fulanah tidak bisa menghapusnya.

Lalu bagaimana dengan tanda T (dengan huruf kapital / uppercase) ? Tanda itu juga berarti sticky bit perbedaanya hanya pada others tidak boleh menggunakan permission eksekusi (x). Artinya Kita boleh menggunakan permission r atau w atau gabungan keduanya, yang terpenting tidak ada x.

Cara penggunaanya:

chmod 1770 nama_berkas
chmod 1772 nama_berkas
chmod 1774 nama_berkas
chmod 1776 nama_berkas

Lihat tangkapan layar di bawah ini:

Terdapat perbedaan warna dan notasi dengan huruf T (kapital / uppercase).

Lalu apakah bedanya dengan 0770 ? bukankah sama saja? Betul sama. Untuk sticky bit dengan tanda T ini sebetulnya sama dengan permission 0770 hanya saja seperti fungsi utamanya yakni hanya bisa di write pada pemiliknya saja, artinya user lain yang satu group sekalipun tidak akan bisa menghapus.

Untuk lebih jelasnya lagi coba kita buat berkas dengan nama halo dan isikan dengan apapun itu, lalu ubah permission tersebut menjadi 1776 artinya pengguna others bisa baca dan menulis di sana.

echo "Halo" > Halo
cat Halo
chmod 1776 Halo
su - fulan
echo "Situsali" >> Halo
cat Halo
rm Halo

Lihat gambar di atas, padahal kita bisa write pada berkas Halo. Namun tidak bisa menghapus berkas tersebut kecuali si owner-nya. Perlu diketahui permission x digunakan untuk mengeksekusi direktori, jadi kalau Anda tidak gunakan x artinya tidak bisa masuk pada direktori tersebut.

Kesimpulan

Sticky Bit sangatlah bermanfaat untuk membuat satu direktori hanya pengguna tertentu saja yang bisa memodifikasinya. Sebetulnya sticky bit sudah diterapkan di direktori /tmp. Untuk membuat sticky bit, harus pada direktori utama (parent / top directory) artinya, sticky bit hanya bisa berefek di dalam direktori (sub-directory / child).