Mengenal Access Permission Setuid, Setgid di GNU/Linux
Pada tulisan sebelumnya kita telah membahas mengenai Sticky Bit. Yang mana berfungsi hanya akun owner dan root
saja yang bisa memodifikasi perubahan suatu berkas atau direktori. Tulisan kali ini, kita melanjuti pembahasan tentang special permission lainnya, yakni setuid
dan setgid
, yang mana kedua permission ini memiliki keunggulan masing-masing terutama dalam hal security.
Setuid
Setuid atau SUID adalah special permission yang mana hanya pengguna owner dan root
saja yang bisa menghapus atau me-rename. Berbeda dengan sticky bit
, yang mana hanya berefek pada berkas/direktori yang mana berada dalam parent/top directory-nya. Setuid
ditandai dengan nilai bit 4
dan tulisan s
atau S
di awal. Jadi ketika kita ingin menggunakan setuid
gunakan angka 4
di awal.
Cara menggunakannya
chmod 4777 nama_berkas_atau_direktori atau chmod u+s nama_berkas_atau_direktori
Contoh:
Kita buat berkas misalnya bernama Halo lalu isikan dengan apapun dan gunakan permission 4777
.
echo "Halo" > Halo
cat Halo
chmod 4777 Halo
su - fulan
echo "Situsali.com" >> Halo
cat Halo
rm Halo
Lihat di atas, berwarna merah dah ada notasi s
(kecil/lowercase). Padahal permission mengizinkan semua bisa read, write, execute. Namun kita pengguna lain ingin mencoba menghapus ia tidak bisa. Lalu bagiamana dengan S
(kapital/uppercase) ? Ini artinya pada hanya owner
tidak diberikan permission execute (x
).
Perintah berikut untuk mengaktifkan Setuid bit dengan S
.
chmod 4677 nama_berkas chmod 4666 nama_berkas chmod 4675 nama_berkas
Setgid
Setgid
atau GUID adalah suatu special permission yang mana ia otomatis memaksa hanya mengeset group pada berkas atau direktori di dalamnya disesuaikan dengan primary group dari user yang membuat setgid
tersebut.
Setgid
ditandai dengan nilai bit 2 atau huruf s
dan S
di tengah (group). Lihat perbedaanya:
Berkas animal
menggunakan setuid
sedangkan direktori zoo
menggunakan setgid
.
Cara menggunakannya
chmod 2777 top_direktori/ atau chmod g+s top_direktori/
Contoh kasus
Kita buat suatu direktori bernama zoo
dengan setiap user primary group-nya masing-masing berbeda. Katakanlah ali:users
, fulan:fulan
, fulanah:fulanah
. Kita bisa mengecek tiap user menggunakan primary gruop yang ia digunakan, dengan perintah id -gn username
. Kemudian masing-masing user tersebut memiliki secondary group yang sama yakni group users
.
Berikut perintahnya:
id -gn ali id -gn fulan id -gn fulanah mkdir zoo chmod 2770 zoo cd zoo touch penguin su - fulan touch kambing su - fulanah touch sapi ls -lh
Perhatikan berkas yang dibuat oleh tiap-tiap user di atas, semua otomatis berubah menjadi group users
. Bisa kita cek sendiri group users
pada fulan
dan fulanah
itu masuk dalam secondary group. Bisa dicek dengan perintah groups username
.
Kita akan melakukan percobaan lagi, menghapus secondary group dari fulan
. Yang mana si fulan
mencoba membuat berkas pada direktori zoo
. Dalam hal ini fulan
berarti masuk dalam kategori others
, kita harus merubah permission yang sebelumnya 2770
menjadi 2777
. Berikut ini perintahnya:
sudo gpasswd -d fulan users chmod 2777 zoo su - fulan cd zoo touch macan ls -lh groups
Perhatikan gambar di atas ketika fulan
membuat berkas bernama macam, ia otomatis berubah menjadi group users
. Nah menarik bukan? Tentu saja.
Kesimpulan
Dengan menggunakan setuid
berfungsi memberikan suatu proteksi tambahan yakni semua user boleh memodifikasi tetapi tidak bisa mengapus. Mirip seperti sticky bit, hanya saja setuid ini lebih fleksibel kita boleh melekataknnya dimanapun, berbeda dengan sticky bit
baru baru berefek di bawah direktori yang diset.
Dengan setgid memberikan suatu keuntungan berkas yang ada di bawahnya dipaksa menggunakan primary group dari user yang mengeset. Hal ini bisa kita manfaatkan misalnya pada direktori /var/www/htm
l di mana semua user dipaksa menggunakan group www-data
atau http
.
Semoga bermanfaat.