You are on page 1of 5

Ijin dan Kepemilikan

RONNY H ARYANTO
Januari 2001

Operating system yang berbasis multiuser, seperti diakan kombinasi permission (ijin) dan ownership
Linux atau jenis-jenis Unix lainnya, memperbolehkan su- (kepemilikan) untuk mengontrol akses. Keduanya harus
atu sistem untuk digunakan lebih dari satu pengguna pada digunakan bersamaan; permission tidak bisa berjalan
saat yang bersamaan maupun tidak bersamaan. Konsep tanpa ownership dan pengontrolan akses tidak akan bisa
multiuser ini muncul karena pada awalnya sistem kom- dilakukan tanpa permission.
puter bukanlah barang yang umum dimiliki di rumah Seorang system administrator yang handal dari suatu
tangga sehingga perlu diusahakan penggunaan yang efek- sistem Unix diharapkan untuk bisa mengamankan sistem
tif dan efisien. Sistem-sistem komputer yang berbasis yang dikelolanya. Hal ini seringkali melibatkan pengat-
Unix sejak lama sudah mengenal konsep time-sharing, di uran ownership dan permission dari file-file yang ada di
mana sumber daya sistem diatur sedemikian rupa penggu- sistem tersebut. Untuk dapat mengatur dengan sebaik
naanya sehingga sebanyak mungkin pekerjaan dari berba- mungkin diperlukan pemahaman tentang cara kerja dari
gai pengguna bisa dilakukan dengan seminimal mungkin permission dan ownership tersebut.
menyia-nyiakan sumber daya yang ada. Sebelum saya membahas lebih jauh, saya ingin mem-
Sebagai efek samping positif dari kemampuan time- beritahukan (atau mengingatkan kembali) kepada pem-
sharing ini adalah munculnya konsep multiuser. Dengan baca mengenai utility stat yang bisa memberikan berba-
adanya account untuk masing-masing user dari suatu sis- gai informasi mengenai status suatu file. Definisi file di
tem maka kita dapat mengatur akses penggunaan sumber sini adalah secara umum, yaitu termasuk direktori, socket,
daya yang ada di sistem, seperti login, pembatasan ak- pipe dan device.
ses ke aplikasi-aplikasi tertentu, atau ke file-file tertentu. Contoh keluaran dari program stat bisa dilihat di Fig-
Seperti yang mungkin sudah anda ketahui, definisi user ure 1. Untuk artikel ini, kita hanya tertarik dengan baris
tidak terbatas pada pengguna sistem yang benar-benar ketiga dari keluaran program stat tersebut. Mode menan-
manusia, tetapi juga account yang digunakan oleh operat- dakan permission (dan beberapa informasi lain) dari file
ing system maupun berbagai aplikasinya, contohnya user /home/ronny/ yang kebetulan berupa direktori. UID
root, ftp, mail dan mysql. (User ID) menandakan pemilik dari file tersebut, sedan-
Di sistem multiuser seperti Unix keberadaan account- gkan GID (Group ID) menandakan group dari file terse-
account pendukung seperti itu adalah penting untuk me- but. Keterangan lebih lanjut tentang program stat bisa
nunjang pengoperasian aplikasi-aplikasi tertentu maupun didapatkan dari halaman-halaman man dari stat(1) dan
keseluruhan sistem, terutama dari segi keamanannya. Se- stat(2); di Linux anda bisa gunakan perintah man 1
lain privacy, keamanan juga berarti membatasi sejauh stat dan man 2 stat.
mana suatu program bisa mengakses suatu sumber daya Informasi permission dan ownership dari suatu file dis-
sistem. impan di filesystem tempat file tersebut berada. Maka
Linux dan saudara-saudara Unixnya yang lain menye- dari itu filesystem yang digunakan haruslah mendukung

permission dan ownership jika memang dikehendaki
Penulis adalah salah satu aktivis Linux Indonesia yang bertu-
gas mengurus website, sistem email dan DNS dari domain
demikian. Filesystem native dari berbagai jenis Unix,
linux.or.id. Penulis dapat dihubungi melalui email dengan alamat seperti Ext2 untuk Linux atau UFS untuk BSD, memi-
<ronny@linux.or.id>. liki dukungan ini, akan tetapi filesystem seperti FAT dari

1
Figure 1: Contoh keluaran program stat.

DOS/Windows tidak. Sehingga bila anda memiliki par- umumnya user di sistem diidentifikasikan dengan meng-
tisi FAT yang di-mount di sistem Linux maka semua gunakan UID (userid) yang berupa bilangan bulat positif.
filenya akan memiliki permission dan ownership yang UID nomer 0 pada umumnya adalah superuser atau root.
sama seperti yang sudah ditentukan pada saat mount. UID di bawah 500 umumnya dicadangkan untuk keper-
Jika anda sudah cukup lama menggunakan operat- luan sistem dan digunakan oleh program-program pen-
ing system berbasis Unix mungkin anda memperhatikan dukung sistem. Pada umumnya informasi pemilik dari su-
bahwa hampir segalanya di Unix direpresentasikan se- atu file yang disimpan di filesystem adalah nomor UID dari
bagai file. Contohnya di Linux digunakan /dev/ttyS1 pemiliknya, bukan nama usernya. Jika suatu saat infor-
untuk mewakili serial port kedua, dan banyak informasi masi pemilik tersebut ingin ditampilkan dengan menggu-
tentang status sistem seperti penggunaan memori, penga- nakan suatu program, misalnya ls atau stat, barulah pro-
lokasian IRQ dan informasi uptime bisa didapatkan dari gram tersebut akan mencari nama user dari UID tersebut di
filesystem khusus: /proc. Karena semuanya adalah file database user yang digunakan oleh sistem (/etc/passwd,
maka pengontrolan akses ke sumber daya lain di sistem NIS, dsb.), jika nama user tidak ditemukan maka sebagai
yang diwakili dengan bentuk file, seperti contoh serial gantinya nomer UID yang akan ditampilkan.
port di atas, bisa diatur juga melalui permission dan own- Pada contoh keluaran dari program stat yang bisa dil-
ership sehingga anda bisa mengatur siapa saja yang bisa ihat dari Figure 1, file (direktori) /home/ronny/ dimiliki
menggunakan serial port kedua. oleh user ronny dengan UID 500. Jika anda perhatikan di
Satu hal lagi yang perlu diketahui karena sering kita keluaran tersebut juga terdapat GID (Group ID). Mungkin
jumpai adalah mengenai symbolic link (atau singkatnya pada awalnya kita berpikir “Ah, kalau begitu GID menan-
symlink, sering juga disebut soft link), suatu file khusus dakan bahwa file tersebut juga dimiliki oleh group dengan
yang merupakan penunjuk ke file lain. Karena symlink GID tersebut.” Pernyataan tersebut benar, tetapi menurut
ini adalah penunjuk maka permission dan ownershipnya saya lebih tepat lagi jika kita katakan bahwa file terse-
tentu saja mengikuti file yang ditunjuk. Perubahan ter- but dimiliki oleh user UID dengan perlakuan khusus ter-
hadap permission maupun ownership dari symlink tidak hadap group GID. Saya akan jelaskan apa yang saya mak-
ada efeknya terhadap symlink itu sendiri, melainkan pe- sud pada saat saya membahas permission sebentar lagi.
rubahannya akan diteruskan ke file yang ditunjuk oleh Jika tidak disebutkan secara eksplisit, maka file yang
symlink tersebut. dibuat akan dimiliki oleh user yang membuatnya. Atau
jika file tersebut dibuat oleh suatu proses, maka file
Ownership tersebut akan memiliki UID dan GID yang sama den-
gan UID dan GID dari proses pembuatnya. Namun ser-
Seperti mungkin sudah anda duga, konsep ownership ini ingkali kita perlu mengubah UID atau GID dari suatu file.
pada dasarnya cukup sederhana; setiap file yang ada di Hal ini dapat dilakukan paling mudah dengan menggu-
sistem berbasis Unix pasti mempunyai satu pemilik yang nakan program bantu chown dan/atau chgrp. Sebetul-
merupakan salah satu user dari sistem tersebut. Pada nya kita bisa juga mengubah sekaligus user dan group

2
dengan menggunakan ’chown user.group namafile’, Di kebanyakan Unix (kalau tidak semua) suatu file da-
tetapi ada kalanya kita hanya ingin mengubah group pat dijalankan bila memiliki permission execute. Jadi
dari suatu file sehingga chgrp dapat juga digunakan. pada dasarnya kita dapat membuat suatu file teks, lalu
Seperti biasa, untuk informasi lebih lanjut tentang peng- kita beri permission execute, lalu kita jalankan dari shell.
gunaan chown dan chgrp silakan berkonsultasi dengan Kemudian kernel akan melihat apa format dari file terse-
’man chown chgrp’. 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
Permission diteruskan ke interpreter yang disebutkan di baris pertama
Pada dasarnya setiap file di sistem Unix memiliki infor- (contoh: jika dituliskan #!/usr/bin/perl maka akan di-
masi permission untuk: gunakan /usr/bin/perl sebagai interpreter-nya), jika
tidak disebutkan maka akan digunakan /bin/sh.


siapa saja yang boleh membacanya (read), Seperti saya sudah utarakan sebelumnya, sebuah direk-
tori pada dasarnya adalah file khusus, maka dari itu se-


siapa saja yang boleh mengubah isinya (write), buah direktori juga memiliki permission. Namun permis-
sion diperlakukan sedikit berbeda untuk direktori. Per-


siapa saja yang boleh menjalankannya (execute). mission read pada suatu direktori menandakan apakah di-
rektori tersebut bisa dilihat daftar isinya (misalnya den-
Supaya lebih fleksibel, maka sistem Unix pada umum-
gan ls dari shell). Permission write menandakan boleh
nya didisain untuk menggunakan tiga triplet read-write-
tidaknya membuat, menghapus atau mengubah nama file
execute di atas:
di direktori tersebut. Sedangkan permission execute
menandakan boleh tidaknya direktori tersebut dimasuki


permission read-write-execute untuk user pemilik,


(dengan chdir(2), perintah cd dari shell atau akses lang-


permission read-write-execute untuk group, sung ke salah satu file di dalam direktori tersebut).
Salah satu kesalahpahaman yang sering dijumpai


permission read-write-execute untuk user selain adalah bahwa jika suatu file tidak memiliki permission
pemilik dan anggota group. write maka file tersebut tidak bisa dihapus. Bisa tidaknya
suatu file dihapus bukan dilihat dari ada atau tidaknya per-
Jika anda perhatikan keluaran dari ls -l, maka mission write pada file tersebut, melainkan ada tidaknya
mungkin anda akan menjumpai permission dari suatu permission write pada direktori di mana file tersebut be-
file pada kolom pertama dari keluaran tersebut, seperti rada.
“-rw-r-----“. Karakter pertama menandakan jenis dari Untuk pembaca yang tertarik dengan bagaimana infor-
file tersebut, “-“ menandakan bahwa file tersebut adalah masi permission disimpan di filesystem, kita perlu sedikit
file biasa, “d” menandakan direktori, “l” untuk symlink, bermatematika ria dalam basis delapan (octal). Men-
“s” untuk socket, dan “p” untuk pipa FIFO (First In First gapa delapan, anda bertanya. Komputer pada dasarnya
Out). hanya mengerti angka 0 dan 1, ini bisa dimanfaatkan un-
Tiga karakter berikutnya melambangkan triplet read- tuk mewakili ada tidaknya suatu bit informasi. Untuk
write-execute untuk pemiliknya, karakter “-“ menan- keperluan permission, jika suatu bit tidak ada maka dit-
dakan ketidakadaan suatu bit, jadi “rw-“ untuk pemilik ulis sebagai 0 dan jika bit tersebut ada maka ditulis den-
artinya file tersebut boleh dibaca dan ditulisi oleh pemi- gan 1. Karena permission adalah triplet dari read-write-
liknya, tetapi tidak bisa dijalankan karena tidak memiliki execute maka kita butuh tiga bit untuk merepresentasikan
bit x. Triplet kedua adalah permission untuk group dari sebuah triplet. Dengan tiga bit tersebut, di mana masing-
file tersebut, “r--“ artinya anggota group hanya boleh masing bit bisa memiliki dua kemungkinan (0 atau 1), kita
membaca file tersebut. Triplet ketiga, “---“ artinya user bisa merepresentasikan delapan kombinasi yang berbeda
selain dari pemilik dan anggota group tidak boleh mem- (23 8). Untuk menyingkat penulisan dari tiga bit terse-


baca, menulisi maupun menjalankan file tersebut. but digunakan bilangan basis delapan (angka 0 hingga 7).

3
Misalnya angka 5 dalam basis delapan sama dengan 101 Sedangkan sticky-bit, yang lebih jarang digunakan, hanya
dalam biner, sehingga untuk permission angka 5 tersebut berpengaruh jika file tersebut adalah dynamic loader un-
ekuivalen dengan “r-x”. tuk ELF executable, di mana address space yang tadinya
Untuk memudahkan konversi dari bilangan biner ke ok- hanya bisa dibaca oleh proses yang menjalankan dynamic
tal untuk keperluan permission ini sering digunakan jalan loader tersebut akan bisa diakses.
pintas. Jika kita perhatikan, triplet tersebut dapat kita pec- Suatu file bisa dijalankan oleh user selain dari pemi-
ahkan menjadi komponen-komponennya sebagai berikut. liknya, misalnya jika file tersebut memiliki permission
0750 dan user yang menjalankan file tersebut bukan pemi-
Triplet Biner Oktal lik tetapi anggota dari group file tersebut. Sebagai contoh,
r-- 100 4 file /usr/bin/chfn yang digunakan untuk mengubah in-
-w- 010 2 formasi finger dari user, memiliki permission 04711 dan
--x 001 1 dimiliki oleh user root, tetapi semua user sistem terse-
but bisa menjalankan file tersebut karena triplet terakhir
Kemudian jika kita inginkan suatu kombinasi, misalnya (1) berkata demikian. Angka 4 menunjukkan bahwa file
“rwx”, tinggal kita jumlahkan saja dari oktalnya 4 2
 

ini memiliki bit setuid, sehingga bila user ronny men-


1 7, yang dalam biner adalah 111.


jalankan file tersebut maka file tersebut akan dijalankan


Permission yang terdiri dari tiga triplet read-write- dengan UID efektif user root. Penggunaan bit setuid,
execute bisa dituliskan dengan tiga angka oktal, masing- terutama bila diterapkan untuk file yang pemiliknya mem-
masing mewakili owner, group, dan other. Pada con- punyai hak lebih–seperti root–dan tidak diketahui dengan
toh kita sebelumnya, “rw-r-----“ , bisa dituliskan den- tepat dan jelas apa yang dilakukan oleh file tersebut, jika
gan oktal sebagai 640. Konvensi ini masuk akal karena tidak berhati-hati bisa digunakan oleh seseorang untuk
“rw-r-----“ dalam biner adalah 110100000, atau 416 berbuat sesuatu yang tidak diinginkan.
dalam desimal, atau 640 dalam oktal! Bit setuid untuk direktori tidak mempunyai efek apa-
Perlu diketahui bahwa pada umumnya bilangan oktal di apa. Tetapi jika bit setgid dimiliki oleh suatu direktori
dunia perkomputeran sering dituliskan dengan awalan “0” maka semua file (termasuk direktori) yang dibuat di dalam
(nol) untuk menandakan bahwa bilangan tersebut ditulis direktori tersebut akan memiliki GID yang sama dengan
dengan basis 8, misalnya 0640. Konvensi seperti ini juga GID dari direktori tersebut. Jika direktori tidak memiliki
digunakan untuk penulisan bilangan hexadecimal (basis bit setgid maka file yang baru dibuat di dalam direktori
16), yaitu dengan awalan “0x”, misalnya “0x3F” untuk itu akan memiliki GID yang sama dengan GID efektif dari
bilangan 63 dalam desimal. proses yang membuat file tersebut.
Karena permission adalah kombinasi dari tiga triplet, Jika sebuah direkori bisa ditulisi dan memiliki sticky-
maka dibutuhkan 3 3 9 bit untuk menyimpan in-



bit, maka sebuah proses dapat menghapus atau mengubah


formasi tersebut. Namun pada kenyataannya digunakan nama file yang ada di dalam direktori tersebut jika satu
12 bit untuk menyimpan informasi permission. Hal ini atau lebih dari kondisi di bawah ini terpenuhi:
dikarenakan adanya satu triplet tambahan yang diletakkan
di paling depan untuk merepresentasikan bit-bit khusus. UID efektif dari proses itu sama dengan UID dari file


Tetapi triplet ini bukan read-write-execute, melainkan se- yang hendak dihapus atau diganti namanya,
tuid (4), setgid (2) dan sticky-bit (1). Masing-masing
UID efektif dari proses itu sama dengan UID dari di-


punya efek berbeda terhadap file dan direktori.


rektori tersebut,
Pada file biasa, setuid, setgid dan sticky-bit hanya
berpengaruh pada file yang bisa dijalankan (memiliki bit UID efektif dari proses itu adalah 0 atau supe-


execute). Suatu file executable yang memiliki bit setuid ruser/root.


(atau set user id) artinya akan selalu dijalankan seba-
gai user yang memiliki file tersebut. Bit setgid (atau set Sticky-bit untuk direktori ini paling umum digunakan un-
group id) menandakan bahwa file tersebut akan dijalankan tuk direktori yang digunakan oleh banyak user dari sistem
dengan GID yang sama dengan GID dari file tersebut. untuk meletakkan file-file sementara, contohnya /tmp.

4
100111101101
} Other (05/r-x)

} Group (05/r-x)

04755

} Owner (07/rwx)

} Special (04/s--)

Figure 2: Representasi biner dari bit-bit permission.

Secara default, file yang baru dibuat akan memiliki menyediakan attribute-attribute lain. Seperti bit untuk
permission 0777 - umask, di mana umask adalah bilan- synchronous write, undeletion, dan lain-lain. Lengkapnya
gan oktal yang pada umumnya sudah ditentukan oleh sis- bisa dibaca dari man chattr jika sistem anda mendukung
tem dan bisa diubah melalui shell, misalnya dengan per- attribute-attribute tambahan tersebut.
intah umask pada bash, atau dengan umask(2). Seba-
gai contoh, jika umask yang 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/contoh menjadi 0600 bisa digunakan per-
intah ’chmod 0600 /home/ronny/contoh’. Selain no-
tasi oktal, chmod juga 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 halaman man untuk chmod(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