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_direktoriatau
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.
Komentar