• Tidak ada hasil yang ditemukan

Ijin dan Kepemilikan

N/A
N/A
Protected

Academic year: 2021

Membagikan "Ijin dan Kepemilikan"

Copied!
5
0
0

Teks penuh

(1)

Ijin dan Kepemilikan

RONNY

HARYANTO

Januari 2001

Operating system yang berbasis multiuser, seperti

Linux atau jenis-jenis Unix lainnya, memperbolehkan su-atu sistem untuk digunakan lebih dari ssu-atu pengguna pada saat yang bersamaan maupun tidak bersamaan. Konsep

multiuser ini muncul karena pada awalnya sistem

kom-puter bukanlah barang yang umum dimiliki di rumah tangga sehingga perlu diusahakan penggunaan yang efek-tif dan efisien. Sistem-sistem komputer yang berbasis Unix sejak lama sudah mengenal konsep time-sharing, di mana sumber daya sistem diatur sedemikian rupa penggu-naanya sehingga sebanyak mungkin pekerjaan dari berba-gai pengguna bisa dilakukan dengan seminimal mungkin menyia-nyiakan sumber daya yang ada.

Sebagai efek samping positif dari kemampuan

time-sharing ini adalah munculnya konsep multiuser. Dengan

adanya account untuk masing-masing user dari suatu sis-tem maka kita dapat mengatur akses penggunaan sumber daya yang ada di sistem, seperti login, pembatasan ak-ses ke aplikasi-aplikasi tertentu, atau ke file-file tertentu. Seperti yang mungkin sudah anda ketahui, definisi user tidak terbatas pada pengguna sistem yang benar-benar manusia, tetapi juga account yang digunakan oleh operat-ing system maupun berbagai aplikasinya, contohnya user

root,ftp,maildanmysql.

Di sistem multiuser seperti Unix keberadaan account-account pendukung seperti itu adalah penting untuk me-nunjang pengoperasian aplikasi-aplikasi tertentu maupun keseluruhan sistem, terutama dari segi keamanannya. Se-lain privacy, keamanan juga berarti membatasi sejauh mana suatu program bisa mengakses suatu sumber daya sistem.

Linux dan saudara-saudara Unixnya yang lain

Penulis adalah salah satu aktivis Linux Indonesia yang bertu-gas mengurus website, sistem email dan DNS dari domain

linux.or.id. Penulis dapat dihubungi melalui email dengan alamat

<ronny@linux.or.id>.

diakan kombinasi permission (ijin) dan ownership (kepemilikan) untuk mengontrol akses. Keduanya harus digunakan bersamaan; permission tidak bisa berjalan tanpa ownership dan pengontrolan akses tidak akan bisa dilakukan tanpa permission.

Seorang system administrator yang handal dari suatu sistem Unix diharapkan untuk bisa mengamankan sistem yang dikelolanya. Hal ini seringkali melibatkan pengat-uran ownership dan permission dari file-file yang ada di sistem tersebut. Untuk dapat mengatur dengan sebaik mungkin diperlukan pemahaman tentang cara kerja dari permission dan ownership tersebut.

Sebelum saya membahas lebih jauh, saya ingin mem-beritahukan (atau mengingatkan kembali) kepada pem-baca mengenai utilitystatyang bisa memberikan berba-gai informasi mengenai status suatu file. Definisi file di sini adalah secara umum, yaitu termasuk direktori, socket, pipe dan device.

Contoh keluaran dari programstatbisa dilihat di Fig-ure 1. Untuk artikel ini, kita hanya tertarik dengan baris ketiga dari keluaran programstattersebut.Mode menan-dakan permission (dan beberapa informasi lain) dari file

/home/ronny/ yang kebetulan berupa direktori. UID

(User ID) menandakan pemilik dari file tersebut, sedan-gkanGID(Group ID) menandakan group dari file terse-but. Keterangan lebih lanjut tentang programstat bisa didapatkan dari halaman-halamanmandaristat(1)dan

stat(2); di Linux anda bisa gunakan perintah man 1 statdanman 2 stat.

Informasi permission dan ownership dari suatu file dis-impan di filesystem tempat file tersebut berada. Maka dari itu filesystem yang digunakan haruslah mendukung permission dan ownership jika memang dikehendaki demikian. Filesystem native dari berbagai jenis Unix, seperti Ext2 untuk Linux atau UFS untuk BSD, memi-liki dukungan ini, akan tetapi filesystem seperti FAT dari

(2)

Figure 1: Contoh keluaran programstat.

DOS/Windows tidak. Sehingga bila anda memiliki par-tisi FAT yang di-mount di sistem Linux maka semua filenya akan memiliki permission dan ownership yang sama seperti yang sudah ditentukan pada saat mount.

Jika anda sudah cukup lama menggunakan

operat-ing system berbasis Unix mungkin anda memperhatikan

bahwa hampir segalanya di Unix direpresentasikan se-bagai file. Contohnya di Linux digunakan /dev/ttyS1

untuk mewakili serial port kedua, dan banyak informasi tentang status sistem seperti penggunaan memori, penga-lokasian IRQ dan informasi uptime bisa didapatkan dari

filesystem khusus: /proc. Karena semuanya adalah file maka pengontrolan akses ke sumber daya lain di sistem yang diwakili dengan bentuk file, seperti contoh serial port di atas, bisa diatur juga melalui permission dan own-ership sehingga anda bisa mengatur siapa saja yang bisa menggunakan serial port kedua.

Satu hal lagi yang perlu diketahui karena sering kita jumpai adalah mengenai symbolic link (atau singkatnya

symlink, sering juga disebut soft link), suatu file khusus

yang merupakan penunjuk ke file lain. Karena symlink ini adalah penunjuk maka permission dan ownershipnya tentu saja mengikuti file yang ditunjuk. Perubahan ter-hadap permission maupun ownership dari symlink tidak ada efeknya terhadap symlink itu sendiri, melainkan pe-rubahannya akan diteruskan ke file yang ditunjuk oleh

symlink tersebut.

Ownership

Seperti mungkin sudah anda duga, konsep ownership ini pada dasarnya cukup sederhana; setiap file yang ada di sistem berbasis Unix pasti mempunyai satu pemilik yang merupakan salah satu user dari sistem tersebut. Pada

umumnya user di sistem diidentifikasikan dengan meng-gunakanUID(userid) yang berupa bilangan bulat positif.

UIDnomer 0 pada umumnya adalah superuser atauroot.

UID di bawah 500 umumnya dicadangkan untuk keper-luan sistem dan digunakan oleh program-program pen-dukung sistem. Pada umumnya informasi pemilik dari su-atu file yang disimpan di filesystem adalah nomorUIDdari pemiliknya, bukan nama usernya. Jika suatu saat infor-masi pemilik tersebut ingin ditampilkan dengan menggu-nakan suatu program, misalnyalsataustat, barulah pro-gram tersebut akan mencari nama user dariUIDtersebut di database user yang digunakan oleh sistem (/etc/passwd, NIS, dsb.), jika nama user tidak ditemukan maka sebagai gantinya nomerUIDyang akan ditampilkan.

Pada contoh keluaran dari programstatyang bisa dil-ihat dari Figure 1, file (direktori)/home/ronny/dimiliki oleh userronnydenganUID500. Jika anda perhatikan di keluaran tersebut juga terdapatGID(Group ID). Mungkin pada awalnya kita berpikir “Ah, kalau begituGID menan-dakan bahwa file tersebut juga dimiliki oleh group dengan

GIDtersebut.” Pernyataan tersebut benar, tetapi menurut saya lebih tepat lagi jika kita katakan bahwa file terse-but dimiliki oleh userUIDdengan perlakuan khusus ter-hadap groupGID. Saya akan jelaskan apa yang saya mak-sud pada saat saya membahas permission sebentar lagi.

Jika tidak disebutkan secara eksplisit, maka file yang dibuat akan dimiliki oleh user yang membuatnya. Atau jika file tersebut dibuat oleh suatu proses, maka file tersebut akan memiliki UID dan GID yang sama den-ganUID danGIDdari proses pembuatnya. Namun ser-ingkali kita perlu mengubahUIDatauGIDdari suatu file. Hal ini dapat dilakukan paling mudah dengan menggu-nakan program bantu chown dan/atau chgrp. Sebetul-nya kita bisa juga mengubah sekaligus user dan group

(3)

dengan menggunakan ’chown user.group namafile’, tetapi ada kalanya kita hanya ingin mengubah group dari suatu file sehingga chgrp dapat juga digunakan. Seperti biasa, untuk informasi lebih lanjut tentang peng-gunaan chown danchgrp silakan berkonsultasi dengan ’man chown chgrp’.

Permission

Pada dasarnya setiap file di sistem Unix memiliki infor-masi permission untuk:

siapa saja yang boleh membacanya (read),

siapa saja yang boleh mengubah isinya (write),

siapa saja yang boleh menjalankannya (execute). Supaya lebih fleksibel, maka sistem Unix pada umum-nya didisain untuk menggunakan tiga triplet read-write-execute di atas:

permission read-write-execute untuk user pemilik,

permission read-write-execute untuk group,

permission read-write-execute untuk user selain pemilik dan anggota group.

Jika anda perhatikan keluaran dari ls -l, maka mungkin anda akan menjumpai permission dari suatu file pada kolom pertama dari keluaran tersebut, seperti “-rw-r---“. Karakter pertama menandakan jenis dari file tersebut, “-“ menandakan bahwa file tersebut adalah file biasa, “d” menandakan direktori, “l” untuk symlink, “s” untuk socket, dan “p” untuk pipa FIFO (First In First Out).

Tiga karakter berikutnya melambangkan triplet read-write-execute untuk pemiliknya, karakter “-“ menan-dakan ketidakadaan suatu bit, jadi “rw-“ untuk pemilik artinya file tersebut boleh dibaca dan ditulisi oleh pemi-liknya, tetapi tidak bisa dijalankan karena tidak memiliki bitx. Triplet kedua adalah permission untuk group dari file tersebut, “r--“ artinya anggota group hanya boleh membaca file tersebut. Triplet ketiga, “---“ artinya user selain dari pemilik dan anggota group tidak boleh mem-baca, menulisi maupun menjalankan file tersebut.

Di kebanyakan Unix (kalau tidak semua) suatu file da-pat dijalankan bila memiliki permission execute. Jadi pada dasarnya kita dapat membuat suatu file teks, lalu kita beri permission execute, lalu kita jalankan dari shell. Kemudian kernel akan melihat apa format dari file terse-but, misalnya untuk Linux bila filenya adalah binary

executable dalam format ELF maka akan langsung

di-jalankan. Tetapi bila file tersebut berupa teks maka akan diteruskan ke interpreter yang disebutkan di baris pertama (contoh: jika dituliskan#!/usr/bin/perlmaka akan di-gunakan /usr/bin/perl sebagai interpreter-nya), jika tidak disebutkan maka akan digunakan/bin/sh.

Seperti saya sudah utarakan sebelumnya, sebuah direk-tori pada dasarnya adalah file khusus, maka dari itu se-buah direktori juga memiliki permission. Namun permis-sion diperlakukan sedikit berbeda untuk direktori. Per-mission read pada suatu direktori menandakan apakah di-rektori tersebut bisa dilihat daftar isinya (misalnya den-ganlsdari shell). Permission write menandakan boleh tidaknya membuat, menghapus atau mengubah nama file di direktori tersebut. Sedangkan permission execute menandakan boleh tidaknya direktori tersebut dimasuki (denganchdir(2), perintahcddari shell atau akses lang-sung ke salah satu file di dalam direktori tersebut).

Salah satu kesalahpahaman yang sering dijumpai adalah bahwa jika suatu file tidak memiliki permission write maka file tersebut tidak bisa dihapus. Bisa tidaknya suatu file dihapus bukan dilihat dari ada atau tidaknya per-mission write pada file tersebut, melainkan ada tidaknya permission write pada direktori di mana file tersebut be-rada.

Untuk pembaca yang tertarik dengan bagaimana infor-masi permission disimpan di filesystem, kita perlu sedikit bermatematika ria dalam basis delapan (octal). Men-gapa delapan, anda bertanya. Komputer pada dasarnya hanya mengerti angka 0 dan 1, ini bisa dimanfaatkan un-tuk mewakili ada tidaknya suatu bit informasi. Unun-tuk keperluan permission, jika suatu bit tidak ada maka dit-ulis sebagai 0 dan jika bit tersebut ada maka ditdit-ulis den-gan 1. Karena permission adalah triplet dari read-write-execute maka kita butuh tiga bit untuk merepresentasikan sebuah triplet. Dengan tiga bit tersebut, di mana masing-masing bit bisa memiliki dua kemungkinan (0 atau 1), kita bisa merepresentasikan delapan kombinasi yang berbeda (23

8). Untuk menyingkat penulisan dari tiga bit terse-but digunakan bilangan basis delapan (angka 0 hingga 7).

(4)

Misalnya angka 5 dalam basis delapan sama dengan 101 dalam biner, sehingga untuk permission angka 5 tersebut ekuivalen dengan “r-x”.

Untuk memudahkan konversi dari bilangan biner ke ok-tal untuk keperluan permission ini sering digunakan jalan pintas. Jika kita perhatikan, triplet tersebut dapat kita pec-ahkan menjadi komponen-komponennya sebagai berikut.

Triplet Biner Oktal

r-- 100 4

-w- 010 2

--x 001 1

Kemudian jika kita inginkan suatu kombinasi, misalnya “rwx”, tinggal kita jumlahkan saja dari oktalnya 4

2

1

7, yang dalam biner adalah 111.

Permission yang terdiri dari tiga triplet read-write-execute bisa dituliskan dengan tiga angka oktal, masing-masing mewakili owner, group, dan other. Pada con-toh kita sebelumnya, “rw-r---“ , bisa dituliskan den-gan oktal sebagai 640. Konvensi ini masuk akal karena “rw-r---“ dalam biner adalah 110100000, atau 416 dalam desimal, atau 640 dalam oktal!

Perlu diketahui bahwa pada umumnya bilangan oktal di dunia perkomputeran sering dituliskan dengan awalan “0” (nol) untuk menandakan bahwa bilangan tersebut ditulis dengan basis 8, misalnya 0640. Konvensi seperti ini juga digunakan untuk penulisan bilangan hexadecimal (basis 16), yaitu dengan awalan “0x”, misalnya “0x3F” untuk bilangan 63 dalam desimal.

Karena permission adalah kombinasi dari tiga triplet, maka dibutuhkan 3 3

9 bit untuk menyimpan in-formasi tersebut. Namun pada kenyataannya digunakan 12 bit untuk menyimpan informasi permission. Hal ini dikarenakan adanya satu triplet tambahan yang diletakkan di paling depan untuk merepresentasikan bit-bit khusus. Tetapi triplet ini bukan read-write-execute, melainkan se-tuid (4), setgid (2) dan sticky-bit (1). Masing-masing punya efek berbeda terhadap file dan direktori.

Pada file biasa, setuid, setgid dan sticky-bit hanya berpengaruh pada file yang bisa dijalankan (memiliki bit execute). Suatu file executable yang memiliki bit setuid (atau set user id) artinya akan selalu dijalankan seba-gai user yang memiliki file tersebut. Bit setgid (atau set

group id) menandakan bahwa file tersebut akan dijalankan

dengan GID yang sama dengan GID dari file tersebut.

Sedangkan sticky-bit, yang lebih jarang digunakan, hanya berpengaruh jika file tersebut adalah dynamic loader un-tuk ELF executable, di mana address space yang tadinya hanya bisa dibaca oleh proses yang menjalankan dynamic

loader tersebut akan bisa diakses.

Suatu file bisa dijalankan oleh user selain dari pemi-liknya, misalnya jika file tersebut memiliki permission 0750 dan user yang menjalankan file tersebut bukan pemi-lik tetapi anggota dari group file tersebut. Sebagai contoh, file/usr/bin/chfnyang digunakan untuk mengubah in-formasifingerdari user, memiliki permission 04711 dan dimiliki oleh userroot, tetapi semua user sistem terse-but bisa menjalankan file terseterse-but karena triplet terakhir (1) berkata demikian. Angka 4 menunjukkan bahwa file ini memiliki bit setuid, sehingga bila user ronny men-jalankan file tersebut maka file tersebut akan dimen-jalankan dengan UID efektif user root. Penggunaan bit setuid, terutama bila diterapkan untuk file yang pemiliknya mem-punyai hak lebih–seperti root–dan tidak diketahui dengan tepat dan jelas apa yang dilakukan oleh file tersebut, jika tidak berhati-hati bisa digunakan oleh seseorang untuk berbuat sesuatu yang tidak diinginkan.

Bit setuid untuk direktori tidak mempunyai efek apa-apa. Tetapi jika bit setgid dimiliki oleh suatu direktori maka semua file (termasuk direktori) yang dibuat di dalam direktori tersebut akan memilikiGID yang sama dengan

GIDdari direktori tersebut. Jika direktori tidak memiliki bit setgid maka file yang baru dibuat di dalam direktori itu akan memilikiGIDyang sama denganGIDefektif dari proses yang membuat file tersebut.

Jika sebuah direkori bisa ditulisi dan memiliki

sticky-bit, maka sebuah proses dapat menghapus atau mengubah

nama file yang ada di dalam direktori tersebut jika satu atau lebih dari kondisi di bawah ini terpenuhi:

UIDefektif dari proses itu sama denganUIDdari file yang hendak dihapus atau diganti namanya,

UIDefektif dari proses itu sama denganUIDdari di-rektori tersebut,

UID efektif dari proses itu adalah 0 atau

supe-ruser/root.

Sticky-bit untuk direktori ini paling umum digunakan

un-tuk direktori yang digunakan oleh banyak user dari sistem untuk meletakkan file-file sementara, contohnya/tmp.

(5)

0

1 1

1 1

0

1

1 1

0

1 0

}

}

}

}

Other (05/r-x) Group (05/r-x) Owner (07/rwx) Special (04/s--) 04755

Figure 2: Representasi biner dari bit-bit permission.

Secara default, file yang baru dibuat akan memiliki permission 0777 -umask, di manaumask adalah bilan-gan oktal yang pada umumnya sudah ditentukan oleh sis-tem dan bisa diubah melalui shell, misalnya dengan per-intah umask pada bash, atau denganumask(2). Seba-gai contoh, jikaumaskyang ditentukan adalah 022 maka file yang baru akan dibuat dengan permission 0666 akan memiliki permission 0666 & ~022 = 0644.

Permission dari suatu file bisa diubah oleh pemi-lik file tersebut (atau superuser), cara yang paling umum digunakan adalah menggunakan program bantu

chmod. Misalnya untuk mengubah permission file

/home/ronny/contohmenjadi 0600 bisa digunakan per-intah ’chmod 0600 /home/ronny/contoh’. Selain no-tasi oktal,chmodjuga menyediakan notasi huruf (seperti “rwx”) yang mungkin lebih mudah dipahami atau diingat. Tetapi untuk beberapa orang yang sudah terbiasa dengan notasi oktal, mungkin tidak lebih mudah. Informasi lebih lanjut tentang penggunaan notasi alternatif ini bisa dibaca dari halamanmanuntukchmod(1).

Pada Akhirnya...

Pemahaman yang mendalam dari cara kerja permission dan ownership bisa sangat membantu dalam pengaturan keamanan sebuah sistem, khususnya dari sisi penggunaan kombinasi ownership dan permission ini. Pemahaman menyeluruh tentang kemampuan apa saja yang disediakan oleh sistem, walau sekecil apapun, membuat pengurus sis-tem menjadi tahu semua bagian yang rapuh dan lubang-lubang yang mungkin digunakan oleh penelusup atau user dari sistem yang berniat jahat.

Selain ownership dan permission, beberapa filesystem

menyediakan attribute-attribute lain. Seperti bit untuk

synchronous write, undeletion, dan lain-lain. Lengkapnya

bisa dibaca dariman chattrjika sistem anda mendukung

Gambar

Figure 1: Contoh keluaran program stat .
Figure 2: Representasi biner dari bit-bit permission.

Referensi

Dokumen terkait

Ambil keputusan untuk memimpin bawahan Anda untuk bekerja dalam sikap kerja yang baik.. Bersikap sportif dalam mendiskusikan situasi tersebut dengan kelompok, namun tidak

Ngopi Doeloe adalah sebuah bisnis kreatif yang mulai berkiprah dalam industri restoran sejak tanggal 20 November 2006, yang berarti bisnis kreatif ini sudah

b) Mampu mengkaji implikasi pengembangan atau implementasi ilmu pengetahuan industri perjalanan, teknologi atau seni sesuai dengan keahliannya berdasarkan kaidah, tata

Berdasarkan penelitian yang dilakukan peneliti diketahui strategi komunikasi Account Executive dan Media Planner OCTA Advertising berupa pelayanan dan juga menjaga hubungan

Penelitian ini merupakan penelitian sosiologi sastra, yaitu mendeskripsikan secara sosiologis data yang tersedia dari teks sastra dalam novel Ketika Lampu Berwarna

Hal ini menunjukan bahwa cosine similarity berdasarkan pemodelan topik dapat digunakan untuk menunjukan kualitas jawaban dimana jawaban dengan nilai cosine similarity yang kecil

Diagram pasor dari Gambar 2.2 untuk faktor daya yang tertinggal, digambarkan kembali dengan arus I dibuat mendatar, seperti yang terlihat pada Gambar 2.3. Tegangan

Pembelajaran konvensional yang dilakukan siswa kelas kontrol dalam penelitian ini adalah pembelajaran dengan metode penugasan dan presentasi sama seperti pada kelas eksperimen,