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