TUTORIAL
Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
YUM
Membuat Local Repository YUM dan Cara Penggunaannya Salah satu kendala utama bagi para pengguna distro Fedora adalah pada saat menginstalasikan suatu aplikasi yang memiliki ketergantungan terhadap paket lainnya (packet dependencies). Artikel kali ini akan membahas penggunaan YUM untuk mengatasi packet dependencies itu.
M
ungkin untuk pengguna distro Debian Sarge 3.1 yang jumlah CD-nya mencapai 14 buah dan di dalamnya sudah tersedia sekitar 14.000 paket, tentu sangatlah menyenangkan dapat mencoba hampir semua software yang terdapat di Linux. Apalagi Debian sudah dilengkapi dengan tools apt yang sangat memanjakan penggunanya dalam urusan manajemen instalasi software. Namun jangan takut, bagi Anda para pengguna distro Fedora, sekarang dapat memanfaatkan paket YUM (Yellow dog Updater, Modified) yang dapat berfungsi layaknya tools apt di Debian. Dengan menggunakan Yum, para pengguna Fedora tidak perlu memikirkan lagi ketergantungan paket yang akan diinstal atau di-remove, karena Yum yang akan melakukannya sendiri. Yum secara otomatis akan mencari dependencies paket yang diperlukan dan akan menampilkan paket apa yang seharusnya diinstal. Dengan Yum akan memudahkan Anda memanajemen grup software dibandingkan Anda melakukannya secara manual dengan menggunakan perintah rpm. Beberapa fitur yang dimiliki oleh Yum, di antaranya: Dapat terdiri dari beberapa repositori. File konfigurasi yang mudah. Mencari otomatis ketergantungan paket yang dibutuhkan. Operasi pekerjaan yang cepat. Pekerjaan rpm dapat dilakukan secara konsisten. Mendukung grup comps.xml, termasuk mengelompokkan beberapa grup repositori. Mudah digunakan.
50
INFOLINUX 10/2005
Pada artikel ini, penulis akan menjelaskan cara membuat repository Yum, dan cara penggunaan Yum. Dalam membuat artikel ini, penulis menggunakan distro Fedora Core 4 untuk uji cobanya. Meski demikian, langkah ini juga dapat diterapkan bagi anda pengguna distro Fedora Core 1, 2 maupun 3.
Persiapan awal Sebelum dapat mengikuti langkah-langkah ini, sebaiknya Anda siapkan terlebih dahulu beberapa kebutuhan di bawah ini: 1. Koneksi Internet Item ini dibutuhkan jika Anda telah memiliki koneksi Internet. Jika tidak ada koneksi Internet, Anda dapat memanfaatkan file-file RPM Fedora Core 4 Extras yang terdapat pada CD-1 InfoLinux edisi Agustus 2005. Bagi pengguna Fedora Core versi lainnya, download terlebiih dahulu paket-paket RPM tambahan di Intenet. 2. Sistem Fedora yang sudah terinstalasi dengan baik Dalam contoh ini, distro yang penulis gunakan adalah Fedora Core 4. 3. Yum Anda dapat menginstalasi Yum yang sudah ada di CD 4 distro Fedora Core 4. 4. Wget Instalasikan paket wget ini, untuk kepentingan download paket RPM fedora dari Internet. 5. Vsftpd Paket ini digunakan untuk membuat ftp server, agar paket RPM dapat diakses melalui ftp server. 6. Apache Paket ini digunakan untuk membuat web
www.infolinux.web.id
server, sehingga repository dapat diakses melalui web. 7. Createrepo Berfungsi untuk membuat metadata repository umum. Anda dapat menginstalnya dari CD 4 yang ada di Fedora Core 4. 8. Ruang harddisk kosong Sediakan space sesuai dengan banyaknya paket yang ingin anda letakkan di harddisk lokal.
Repository Yum menggunakan Ftp server Jika semua persiapan pada tahap pertama telah anda siapkan, langkah berikutnya adalah check apakah semua telah terinstallasi dengan baik. 1. Mengecek versi software yang dibutuhkan Check versi distro Fedora yang Anda gunakan. $ cat /etc/redhat-release Fedora Core release 4 (Stentz)
Check versi yum $ yum --version 2.3.2
Check versi createrepo $ createrepo --version 0.4.2
2. Mengonfigurasikan vsftpd Langkah berikutnya adalah mengonfigurasikan vsftpd sebagai ftp server yang akan kita gunakan sebagai repository Yum. Jika Anda sudah menginstalasikannya, check apakah paket vsftp sudah
TUTORIAL
Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
YUM
terinstalasi dengan baik di sistem Anda. # rpm -qa | grep vsftpd vsftp-2.0.3-1
Berikutnya, kita akan mengonfigurasikan hanya vstp hanya untuk user anonymous. ubah file vsftpd.conf menjadi vsftpd.conf.bak # cd /etc/vsftpd # mv vsftpd.conf vsftpd.conf. bak # touch vsftpd.conf # chmod 600 vsftpd.conf
Isikan file vstpd.conf yang baru kita buat dengan menggunakan editor kesukaan anda, dengan konfigurasi sebagai berikut: # Isi dari file /etc/vsftpd/ vsftpd.conf anonymous_enable=YES anon_upload_enable=NO anon_mkdir_write_enable=NO local_enable=NO write_enable=NO local_umask=022 xferlog_enable=YES connect_from_port_20=YES xferlog_std_format=YES pam_service_name=vsftpd userlist_enable=YES listen=YES tcp_wrappers=YES ftpd_banner=Service ready for use.
Restart service vstfpd # service vsftpd restart
Instalasi Bluefish menggunakan perintah yum install.
Selanjutnya coba login ke FTP server dengan menggunakan user “anonymous” atau “ftp” dengan tidak perlu memasukkan password. Nantinya hanya akan terlihat direktory “pub” yang bertindak sebagai default direktori. $ ftp localhost Connected to localhost (127.0.0.1). Name (localhost:root): anonymous 331 Please specify the password Password : 230 Login successful. Remote system type is UNIX. Using binary mode to transfer files. ftp> ls 227 Entering Passive Mode (127,0,0,1,165,236) 150 Here comes the directory listing. drwxr-xr-x 3 0 0 4096 Aug 09 09:25 pub 226 Directory send OK. ftp>quit 221 Goodbye.
3. Berikutnya buat direktori tempat penyimpanan paket-paket RPM yang akan kita letakkan di direktori ftp server. # mkdir -p /var/ftp/pub/ fedora/1/updates # mkdir -p /var/ftp/pub/ fedora/2/updates # mkdir -p /var/ftp/pub/ fedora/3/updates
# mkdir -p /var/ftp/pub/ fedora/4/updates # cd /var/ftp/pub/fedora/4/ updates
Sebagai latihan, copy-kan saja file-file yang ada pada CD 1 InfoLINUX edisi Agustus 2005 ke direktori /var/ftp/pub/ fedora/4/updates. Misal cdrom Anda termount pada directory /media/cdrom. Ketikkan perintah berikut: # cp /media/cdrom/extras/*.rpm /var/ftp/pub/fedora/4/updates
Jalankan perintah createrepo yang berfungsi untuk mendaftarkan paket-paket RPM yang berada dalam suatu direktori. Nantinya perintah createrepo ini akan menghasilkan suatu folder yang bernama repodata dan didalamnya akan berisi file-file sebagai berikut: filelist.xml.gz, other.xml.gz, primary.xml.gz, repomd. xml. Dari langkah berikut, Anda sudah berhasil untuk membuat local repository Yum. # cd /var/ftp/pub/fedora/4/ updates # createrepo /var/ftp/pub/ fedora/4/updates
Jika ingin mengaktifkan fitur group, copy terlebih dahulu file comps.xml yang ada pada directory /usr/share/comps/i386/ comps.xml ke direktori yang sama dengan paket RPM berada. # cp /usr/share/comps/i386/ comps.xml /var/ftp/pub/
Option grouplist di Yum untuk menampilkan daftar paket group.
www.infolinux.web.id
INFOLINUX 10/2005
51
TUTORIAL
Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
YUM
fedora/4/updates # cd /var/ftp/pub/fedora/4/ updates # createrepo -g comps.xml /var/ftp/pub/fedora/4/updates
Selanjutnya, Anda dapat mengonfigurasikan file yum.conf, yang kali ini akan kita arahkan ke ftp server yang sudah menyediakan yum repository. Caranya, edit file /etc/yum.conf, menjadi seperti di bawah ini: [main] cachedir=/var/cache/yum debuglevel=2 logfile=/var/log/yum.log pkgpolicy=newest distroverpkg=redhat-release tolerant=1 exactarch=1 retries=20 obsoletes=1 #gpgcheck=1 gpgcheck=0 # PUT YOUR REPOS HERE OR IN separate files named file. repo # in /etc/yum.repos.d [local-repository] name=Paket Updates baseurl=ftp://localhost/pub/ fedora/4/updates enabled=1 enablegroups=1 gpgcheck=0
Selanjutnya, pindah ke direktori /etc/ yum.repos.d, edit beberapa file yang ada di direktori tersebut. Diantaranya file fedora-extras.repo, fedora.repo dan fedoraupdates.repo. Ubah nilai pada parameter: enabled = 1
menjadi : enabled = 0
Berikutnya lakukan yum check-update untuk untuk men-download kumpulan lengkap header paket yang telah terdefinisi di metadata repository. # yum check-update Setting up repositories
52
INFOLINUX 10/2005
local-repository 100% |=========================| 1.1 kB 00:00 Reading repository metadata in from local files primary.xml.gz 100% |=========================| 150 kB 00:00 local-repo: ################# ##################### 417/417 Added 417 new packages, deleted 0 old in 20.25 seconds
4. Coba test dari komputer tersebut, apakah repository Yum yang baru saja Anda ciptakan sudah dapat berjalan dengan baik. Caranya, instal salah satu program yang terdapat pada repository tersebut. Sebagai contoh kita akan menginstalasikan games supertux yang ada pada direktori tersebut. # yum install supertux ............................ ............................ Transaction Summary ============================ Install 1 Package(s) Update 0 Package(s) Remove 0 Package(s) Total download size: 6.3 M Is this ok [y/N]: y Downloading Packages: (1/1): supertux-0.1.2-3.i 100% |=========================| 6.3 MB 00:04 Running Transaction Test warning: supertux-0.1.2-3: Header V3 DSA signature: NOKEY, key ID 1ac70ce6 Finished Transaction Test Transaction Test Succeeded Running Transaction Installing: supertux ####################### [1/1] Installed: supertux.i386 0:0.1.2-3 Complete!
5. Jika pada tahap di atas Anda sudah dapat menginstalasikan program dari server yum dengan baik, Anda tinggal melanjutkannya dengan membaca bagian Konfigurasi Yum pada komputer client.
www.infolinux.web.id
Repository Yum Menggunakan HTTP Server Kali ini penulis akan menjelaskan juga, cara installasi Yum server menggunakan Http Server. Pada prinsipnya, penggunaan Ftp server maupun Http server sebagai media Yum tidak jauh berbeda fungsinya. Meski demikian, penulis tetap akan menjelaskan langkah-langkahnya secara detail. 1. Langkah pertama ini sama dengan yang ada pada repository yum menggunakan Ftp Server. 2. Mengonfigurasikan Apache Langkah berikutnya adalah mengonfigurasikan Apache sebagai Http Server yang akan kita gunakan sebagai repository Yum. Jika Anda sudah menginstallasikannya, check apakah paket Apache sudah terinstalasi dengan baik di sistem anda. # rpm -qa | grep httpd httpd-2.0.54-10
Secara default, lokasi directory root Apache terletak di /var/www/html. Pada folder ini kita akan membuat sebuah file yang bernama index.html yang berisikan pesan Selamat Datang dan link yang menunjuk ke letak repository server. # cd /var/www/html # vi index.html
Yum Web Server
Welcome, to access repository server packages click on link below
RPM Repository
Selanjutnya, Apache akan kita konfigurasikan dengan menggunakan option Alias. Sebagai latihan, penulis tetap akan menggunakan file-file RPM yang terletak di /var/ftp/pub/fedora/4/updates, dengan tujuan menghemat ruang harddisk Anda. # cd /etc/httpd/conf # cp httpd.conf httpd.conf.
TUTORIAL
Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
YUM
Repository Yum menggunakan Ftp server.
bak # vi httpd.conf
Pada file itu, cari pada bagian Alias, yang bertujuan untuk membuat nama Alias yang mengarah ke directory repository berada. Sebagai contoh kita akan membuat sebuah Alias dengan nama “repository” yang menunjuk ke /var/ftp/pub/fedora/4/updates. ............................ ............................ # Nama Alias adalah repository # rpm repository Alias /repository “/var/ftp/ pub/fedora/4/updates”
Options Indexes AllowOverride None Order allow,deny Allow from 192.168.2.0/24 ............................ ............................
Repository Yum menggunakan Http server.
ada pada halaman tersebut. Jika Anda dapat melihat daftar paket RPM yang ada, berarti Anda telah berhasil membuat repository Yum menggunakan Http Server. 4. Konfigurasikan file yum.conf, yang kali ini akan kita arahkan ke http server yang sudah menyediakan yum repository. Caranya, edit file /etc/yum.conf, menjadi seperti di bawah ini: ............................ ............................ [http-local-repository] name= Http Paket Updates baseurl=http://192.168.2.1/ pub/fedora/4/updates enabled=1 enablegroups=1 gpgcheck=0
5. Lakukan yum check-update, kemudian test dengan menginstal salah satu paket yang ada di dalam yum repository. (Note: lihat pada bagian repository Yum menggunakan Ftp Server).
Konfigurasi pada komputer client Simpan hasil perubahan file itu, kemudian restart serviice httpd. # service httpd restart
3. Test dengan membuka browser Anda, lalu pada url link, ketikkan http://<nomor-ipanda>. Sebagai contoh, IP yang penulis gunakan adalah 192.168.2.1, maka ketikkan http://192.168.2.1. Jika muncul halaman index.html yang telah kita buat sebelumnya, klik link RPM Repository yang
Penulis sudah menjelaskan cara membuat server lokal repository yum, berikutnya akan dijelaskan juga cara konfigurasinya dari komputer client. Sebagai contoh, semua komputer dalam contoh ini ber-IP 192.168.2.X. Di mana server yum yang kita gunakan memiliki IP 192.168.2.1. Selanjutnya, pindah ke direktori /etc/ yum.repos.d, edit beberapa file yang ada di direktori tersebut. Di antaranya file fedoraextras.repo, fedora.repo dan fedora-updates.
www.infolinux.web.id
repo. Ubah nilai pada parameter: enabled = 1
menjadi : enabled = 0
Kemudian edit file /etc/yum.conf, dan tambahkan daftar repository Yum ke dalam file tersebut. Berikutnya lakukan yum check-update untuk untuk men-download kumpulan lengkap header paket yang telah terdefinisi di metadata repository. # yum check-update
Setelah ini, Anda dapat melakukan perintah-perintah yang ada di Yum, yang dapat Anda baca di bagian option-option yang ada di Yum. [main] cachedir=/var/cache/yum debuglevel=2 logfile=/var/log/yum.log pkgpolicy=newest distroverpkg=redhat-release tolerant=1 exactarch=1 retries=20 obsoletes=1 #gpgcheck=1 gpgcheck=0 # PUT YOUR REPOS HERE OR IN separate files named file.repo # in /etc/yum.repos.d [local-repository]
INFOLINUX 10/2005
53
TUTORIAL
Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
YUM
name=Paket Updates baseurl=ftp://192.168.2.1/pub/ fedora/4/updates enabled=1 enablegroups=1 gpgcheck=0 [http-local-repository] name= Http Paket Updates baseurl=http://192.168.2.1/pub/ fedora/4/updates enabled=1 enablegroups=1 gpgcheck=0
Option-option yang ada di Yum Secara syntax, perintah yum memiliki syntax sebagai berikut: yum [option] [command] [package ...]
Beberapa command yang terdapat di Yum di antaranya adalah: 1. check-update Perintah ini berfungsi untuk men-download kumpulan lengkap header paket yang telah terdefinisi di metadata repository. Example: yum check-update 2. install [package1] [package2][...] Perintah ini berfungsi untuk menginstall paket yang terdapat pada repository yum. Example: yum install bluefish 3. remove [package1] [package2][...] Perintah ini berfungsi untuk menghapus paket yang telah terinstal di dalam sistem Anda. Example: yum remove bluefish
Tampilan paket yang dapat Anda install di Yumex.
54
INFOLINUX 10/2005
4. update [package1] [package2][...] Perintah ini berfungsi untuk meng-update paket yang ingin Anda instal. Example: yum update bluefish 5. upgrade [package1] [package2][...] Perintah ini sama dengan perintah update dengan –obsoletes flag. Option ini lebih tepat digunakan jika Anda ingin mengupdate semua paket yang ada (example : hampir sama dengan mengupgrade dari Fedora Core 3 ke Fedora Core 4). Example: yum upgrade 6. list [...] Perintah ini berfungsi untuk mendaftar semua paket RPM yang ada di sistem. Paket di sini adalah paket yang sudah terinstal dalam sistem, maupun paket yang ada di repository. Example: yum list 7. Search [string1] [string2] [...] Perintah ini berfungsi untuk mencari suatu paket RPM yang ada dalam sistem kita, berdasarkan string yang dimasukkan. Example: yum search squid 8. groupinstall [group1] [group2] [...] Perintah ini berfungsi untuk menginstal paket berdasarkan group. Anda dapat melihat daftar group yang ada dengan menggunakan option grouplist. Sebagai contoh, Anda ingin menginstal seluruh paket yang ada dalam group Web Server, maka semua paket yang ada dalam group itu (httpd, webalizer, mod_python, distcache, mod_perl, tux, squid, php, httpd_ manual, dan sebagainya) akan terinstal secara otomatis. Example: yum groupinstall “Web Server”
Yumex, Utility Grafis Untuk Yum Setelah dijelaskan seluruh perintah yang ada di Yum dan cara penggunaannya, ada beberapa user yang menanyakan pertanyaan ini: Saya tidak terlalu suka mengetikkan banyak perintah di terminal, Apakah ada utility berbentuk grafis sebagai interface yum? Jawabnya ada. Anda dapat menggunakan paket yang bernama Yumex (Yum Extender) untuk mempermudah penggunaan Yum. Yumex dibuat oleh Tim Lauridsen, setelah dia membaca postingan yang ada di FedoraForum.org. Setelah itu, dia langsung belajar tentang Python, dan PyGTK yang akhirnya terciptalah Yumex. Yumex sangat cocok bagi user yang tidak terlalu suka mengetikkan banyak perintah di command, tetapi ingin dapat menggunakan Yum dengan mudah. Sebelum mengunakan Yumex, Anda harus men-download-nya terlebih dahulu di http://linux.rasmil.dk/yumex. Tapi tak perlu khawatir, karena paket Yumex ada di CD Majalah InfoLINUX kali ini. Berikut ini akan dijelaskan sedikit mengenai cara penggunaan Yumex: 1. Sebelum dapat menginstalasi Yumex, pastikan versi Yum Anda paling tidak memiliki versi 2.2. Selanjutnya instalkan paket Yumex ini dengan menggunakan perintah rpm. # rpm -ivh yumex-0.40-1.tla.1. FC4.noarch.rpm
2. Setelah terinstalasi dengan baik, jalankan Yumex. Dari konsole ketikkan perintah berikut untuk menjalankan Yumex. $ yumex &
Pilih repository Yum yang akan Anda gunakan.
www.infolinux.web.id
Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
TUTORIAL YUM
Atau dari Menu Applications => System Tool => Yum Extender Masukkan password root Anda, untuk memulai penggunaan Yumex. 3. Klik Icon Repos, lalu pilih repository lokal yang telah Anda buat, selanjutnya klik Refresh. 4. Selanjutnya sangat mudah bagi Anda untuk melakukan update paket, instal paket, maupun remove paket. Untuk menginstal, Anda hanya perlu mengklik paket-paket yang ingin Anda Instal, dan klik Instal. Yum akan mencari secara otomatis ketergantungan paket yang akan di install. Dan seluruh kegiatan Yum yang telah dilakukan, dapat Anda lihat kemudian di menu Output.
Tip and trik Yum Ada beberapa Tips and Trick Yum, yang akan penulis jelaskan : 1. Jika komputer Anda hanya satu, dan ingin tetap membuat repository Yum, Anda tidak perlu membuat Ftp Server maupun Http Server. Cukup letakkan file-file RPM yang telah anda dapatkan ke dalam suatu direktori lalu tambahkan directory path tersebut ke dalam file yum.conf dengan menggunakan file://. Misal seluruh file RPM Anda akan dicopykan ke directory /home/supri/fedora4/ updates.
seperti di langkah 1, hanya saja mount terlebih dahulu CD-nya dan arahkan baseurl-nya sesuai dengan letak CD Anda di mount. Misalkan Anda mem-burning seluruh folder dan isi folder dari /home/ supri/fedora4/updates ke CD. Setelah diburning, Anda memount CD itu ke /media/cdrom. Sehingga letak file-file RPM dalam CD terbaca di /media/cdrom/updates. Selanjutnya, Anda hanya perlu menambahkan letak url path tersebut ke yum.conf, lalu lakukan yum check-update. ............................. baseurl=file:///mnt/cdrom/ updates .............................
3. Dalam artikel ini, penulis mengabaikan GPG-Key yang ada dalam setting-an Yum.conf. Hal ini dapat Anda lihat di settingan yum.conf, di mana nilai parameter gpg-check=0. Jika Anda tetap menginginkan gpg-check ini tetap aktif, dengan alasan agar sistem Anda tetap secure saat melakukan update, download
gpg-key dari situs bersangkutan, lalu ketikkan perintah ini: # rpm –import public.gpg.key
Untuk menginstall GPG Key dari Fedora Project, lakukan perintah berikut: # rpm –import /usr/share/rhn/ RPM-GPG-KEY-fedora
Lalu edit parameter gpg-check=1 Demikian tutorial Yum yang telah penulis jelaskan. Dengan adanya repository Yum lokal ini, Anda yang tidak memiliki koneksi Internet dapat memanfaatkan Repository Yum lokal untuk mencari paket-paket Fedora terbaru yang ingin diinstal. Dan jika resource Internet Anda berlimpah, cukup tambahkan url situs yang menyediakan repository Yum ke dalam yum.conf Anda. Pada akhirnya, penulis hanya bisa berharap, semoga dengan adanya artikel ini, dapat membantu Anda dalam mengalami masalah sulitnya instalasi software di Fedora Core. Supriyanto (
[email protected])
$ cp *.rpm /home/supri/ fedora4/updates $ cd /home/supri/fedora4/ updates $ createrepo /home/supri/ fedora4/updates # vi /etc/yum.conf ............................. ............................. [Home Directory] name=Direktory RPM baseurl=file:///home/supri/ fedora4/updates enabled=1 enablegroups=1 gpgcheck=0
2. Untuk Alasan penghematan ruang harddisk, Anda dapat mem-burning seluruh folder yang berisi file RPM dan repodatanya ke dalam CD-ROM. Lalu sama
www.infolinux.web.id
INFOLINUX 10/2005
55
TUTORIAL
Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
Suhu Komputer
Monitoring Suhu Komputer Suhu yang terlampau tinggi terkadang menjadi penyebab suatu sistem gagal bekerja. Lebih parah lagi, hardware sistem bisa ikut rusak. Di artikel ini, kita akan mengatur langkah antisipatif dengan memeriksa suhu komputer secara berkala dan memberikan aksi yang bersesuaian.
K
omputer adalah seperti manusia. Bisa kepanasan dan berhenti bekerja apabila kepanasan. Dan, toleransi untuk berhenti bekerja pada komputer sangatlah rendah. Apalagi untuk sebuah server yang dituntut untuk memiliki uptime lebih dari 99,9%. Betul bahwa kita bisa membeli server besar yang secara hardware telah sangat hebat. Tapi, tidak semua dari kita mampu membeli server branded yang mahal. Dan, sejujurnya, server branded yang mahal tidaklah selalu diperlukan. Terutama bagi perusahaan kecil sampai menengah. Bagi Anda yang menggunakan server rakitan yang secara hardware sama seperti komputer desktop, sekaligus berada di dalam ruang kerja tidak berpendingin ruangan, namun harus tetap mampu melayani, maka ada baiknya bagi Anda untuk mampu memelihara komputer tersebut secara software. Kepanasan merupakan salah satu faktor yang sangat umum dalam membuat komputer berhenti bekerja ataupun membuat kerusakan permanen pada hardware. Tidak ada satu pun sistem operasi yang mampu menahan kerusakan pada hardware. Yang paling bisa kita lakukan adalah membuat sistem berhenti bekerja sebelum kepanasan mencapai batas yang tidak dapat ditoleransi. Sebenarnya, solusi dengan membuat sistem berhenti bekerja sebelum kepanasan seharusnya disisipkan pada level kernel, sehingga bisa lebih responsif dan memiliki hak yang lebih tinggi. Namun, hal tersebut jauh lebih susah untuk dilakukan. Sebagai gantinya, kita akan membuat aplikasi user space dengan memanfaatkan shell scripting. Prinsip kerjanya sangat sederhana. Kita akan menjalankan suatu program secara berkala (misal, setiap me-
56
INFOLINUX 10/2005
nit), dimana di dalam program tersebut, kita memeriksa suhu sistem dan mengambil tindakan yang bersesuaian dengan suhu yang didapat tersebut. Untuk menjalankan program secara berkala, kita akan menggunakan cron. Sementara, untuk mengambil suhu sistem, Anda bisa menggunakan salah satu dari program-program berikut: ACPID. Sangat fleksibel dan ekstensible dalam menangani event ACPI. Daemon ini akan membaca /proc/acpi/event dan menjalankan aksi yang bersesuaian. Sayangnya, tidak semua sistem mendukung acpi. Xmbmon. Alternatif ACPID yang sangat menyenangkan. Kita akan menggunakan program yang satu ini dalam tulisan kali ini. Sayangnya, ada beberapa sistem yang tidak dikenal oleh xmbmon sehingga aplikasi ini tidak dapat digunakan sebagai alat bantu. Dari namanya, kita bisa menduga bahwa program ini bisa dijalankan dari X. Hal tersebut tidak kita inginkan. Untungnya, pembuatnya juga membuat versi consolenya (mbmon), yang akan kita gunakan. Untuk tindakan yang akan diambil apabila suhu mencapai batas yang diinginkan, secara default adalah shutdown, yang berarti, kita akan memanfaatkan program shutdown (/sbin/shutdown) yang telah dimiliki oleh semua sistem. Namun, bagi Anda yang ingin pendekatan lain, software suspend (/sbin/ swsusp) bisa dipergunakan apabila tindakan yang akan diambil adalah melakukan suspend secara software. Untuk melakukan suspend, pastikan telah didukung oleh kernel. Untuk men-shutdown sistem, tentu saja program monitoring harus dijalankan oleh root. Bagi Anda yang tidak ingin menjalankan sebagai root, sudo bisa digunakan.
www.infolinux.web.id
Tulisan ini akan mengasumsikan Anda menjalankan program sebagai root.
Cron Berikut ini, kita akan melihat dasar-dasar penggunaan cron secara sederhana, untuk menjalankan aplikasi kita secara berkala. Tergantung dari distribusi yang Anda gunakan, umumnya, cron daemon sudah dijalankan pada saat booting. Pastikan crond sudah dijalankan karena kita akan membutuhkannya. Setelah itu, login-lah sebagai root, dan berikan perintah berikut ini untuk membuat entri tabel cron yang baru: # crontab -e
Apabila belum ada entri sama sekali, maka Anda akan mengedit file kosong. Untuk membuat entri tabel yang baru yang memuat contoh tugas yang akan dijalankan setiap menit, cobalah memberikan baris berikut ini: * * * * * /bin/echo `date` >> /tmp/DATE
Contoh entri tersebut akan menulis jam dan tanggal aktif ke /tmp/DATE setiap menit. Untuk menambahkan entri tabel crontab yang baru, Anda bisa membuatnya di baris baru. Cron sendiri memiliki lima field yang pada contoh sebelumnya kita isi dengan *. Berikut ini adalah penjelasan kelima field yang digunakan: Field pertama adalah menit keberapa. Nilai yang diizinkan adalah 0-59. Kita bisa mengisikan nilai * yang berarti awal sampai akhir. Field kedua adalah jam keberapa. Nilai yang diizinkan adalah 0-23. Field ketiga adalah hari keberapa dalam satu bulan. Nilai yang diizinkan adalah 1-31.
TUTORIAL
Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
Suhu Komputer
Field keempat adalah bulan keberapa dalam satu tahun. Nilai yang diizinkan adalah 1-12. Field kelima adalah hari dalam satu minggu. Nilai yang diizinkan adalah 0-7. Nilai 0 atau 7 adalah minggu (sun). Sebagai contoh, apabila kita ingin menjalankan suatu tugas setiap jam 21.15 setiap hari, maka berikanlah entri tabel berikut: 15 21 * * * /path/to/app
xmbmon Berikutnya, kita akan melihat penggunaan program xmbmon. Versi xmbmon yang digunakan adalah 2.0.5. Program ini dibuat oleh Yoshifumi R. Shimizu (http://www. nt.phys.kyushu-u.ac.jp/shimizu/index.html). Distribusi xmbmon umumnya berada dalam format source code. Untuk itu, Anda perlu melakukan konfigurasi dan kompilasi sebelum bisa digunakan: $ ./configure $ make
Setelah kompilasi selesai, tergantung konfigurasi sistem Anda, Anda mungkin akan menjumpai program xmbmon dan mbmon di direktori aktif. Yang kita perlukan adalah program mbmon. Untuk mendapatkan suhu sistem, jalankanlah mbmon tanpa parameter. Sebagai contoh: # ./mbmon Temp.= 44.8, 32.1, 23.8; Rot.= 0, 0, 0 Vcore = 1.54, 3.19; Volt. = 3.26, 4.98, 12.01, 0.00, 0.00 Temp.= 44.8, 32.1, 23.8; Rot.= 0, 0, 0 Vcore = 1.54, 3.19; Volt. = 3.26, 4.98, 12.01, 0.00, 0.00 Temp.= 44.8, 32.1, 23.8; Rot.= 0, 0, 0
www.infolinux.web.id
Vcore = 1.54, 3.19; Volt. = 3.26, 5.00, 12.01, 0.00, 0.00
Secara default, mbmon akan menampilkan informasi suhu sistem dan informasi lainnya setiap lima detik sekali. Dalam aplikasi yang akan kita buat, kita perlu meminta kepada mbmon untuk menjalankan hanya sekali tanpa perulangan. Untuk itu, kita perlu memberikan opsi -c1 pada saat menjalankan: # ./mbmon -c1 Temp.= 43.7, 30.8, 23.8; Rot.= 0, 0, 0 Vcore = 1.54, 3.20; Volt. = 3.26, 4.98, 12.01, 0.00, 0.00
Informasi yang kita dapatkan terlalu lengkap. Bagaimana kalau kita hanya ingin mengambil suhu sistem saja? Jalankanlah mbmon dengan tambahan opsi -T1:
INFOLINUX 10/2005
57
TUTORIAL
Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
Suhu Komputer
ini juga akan mencatat waktu shutdown dan suhu terakhir ketika shutdown dilakukan. Berikut ini adalah source code program hwmon3: #!/bin/sh STATUS=`tail -n1 ~/BACKUP/ hwmon2.report | grep -i danger | tr -d [[:space:]]` if [ ! -z $STATUS ] then echo “`date` DANGEROUS SHUTDOWN $STATUS” >> ~/BACKUP/ shutdown.time /sbin/shutdown -h now fi
Berikut ini adalah contoh isi file shutdown.time: Sun Jul 3 21:26:00 WIT 2005 DANGEROUS SHUTDOWN SunJul321:25: 00WIT2005DANGER--55of55
Situs untuk memperoleh tool xmbmon.
# ./mbmon -T1 -c1 41.5
Sayangnya, informasi yang kita inginkan adalah suhu dalam tipe integer. Oleh karena itu, kita akan membuang informasi pecahannya. Gunakan program cut untuk membantu: # ./mbmon -T1 -c1 | cut -d. -f1 41
Untuk memastikan bahwa semua whitespace diabaikan, gunakan bantuan program tr: # ./mbmon -T1 -c1 | cut -d. -f1 | tr -d [[:space:]] 41#
Selanjutnya, kita bisa gunakan output perintah tersebut untuk mengisi variabel temperatur kita, sebagai contoh TEMP=`./ mbmon -T1 -c1 | cut -d. -f1 | tr -d [[: space:]]`.
Autoshutdown Sampai di sini, kita telah siap membangun aplikasi. Aplikasi yang akan kita bangun cukup sederhana. Kita berikan nama hwmon2. Tugas dari program ini adalah memeriksa suhu sistem dan membuat laporan sederhana. Program hwmon2 ini akan dijalankan
58
INFOLINUX 10/2005
setiap menit, dan oleh karenanya, kita akan mendapatkan laporan suhu sistem setiap menit (yang disimpan dalam file hwmon2. report). Berikut ini adalah source code program hwmon2: #!/bin/sh TEMP_OK=55 TEMP=`/home/DATA/PUB/Apps/ System/LowLevel/xmbmon/ xmbmon205/mbmon -c1 -T1 | cut -d. -f1| tr -d [[:space:]]` STATUS=”OK--$TEMP of $TEMP_OK” [ $TEMP -ge $TEMP_OK ] && STATUS=”DANGER--$TEMP of $TEMP_OK” echo [`date`] $STATUS >> ~/ BACKUP/hwmon2.report
Sebagai catatan, script tersebut dijalankan oleh root dan semua file disimpan di /root/BACKUP/. Gantilah path ke mbmon sesuai konfigurasi sistem Anda. Ganti pula lokasi laporan dan script Anda. Untuk membuat autoshutdown, kita akan membuat program tambahan, sebut saja hwmon3, yang akan memeriksa baris terakhir pada hwmon2.report, dan akan melakukan tindakan yang bersesuaian apabila menemukan kata DANGER. Program
www.infolinux.web.id
Jangan lupa untuk menjalankan hwmon2 dan hwmon3 setiap menit. Tambahkan kedua baris ini ke dalam crontab Anda. * * * * * /root/BACKUP/hwmon2.sh * * * * * /root/BACKUP/hwmon3.sh
Dengan kerja sama antara hwmon2 dan hwmon3, kita bisa mendapatkan laporan status sistem setiap jangka waktu tertentu, dan dapat pula mengambil tindakan yang diinginkan. Satu pertimbangan penting yang mungkin perlu adalah masalah seberapa sering kita menjalankan program hwmon2 dan hwmon3. Terlalu sering tentu akan berakibat pada kesibukan sistem yang mungkin tidak perlu. Namun, terlalu lama juga akan membuat aplikasi ini kurang berguna. Sesuaikan dengan kondisi server Anda dan load server yang mungkin. Pertimbangan lainnya adalah suhu yang bisa ditoleransi (TEMP_OK pada hwmon2). Pastikan jangan terlalu rendah dan jangan lupa terlalu tinggi. Kenali pula karakteristik processor yang digunakan. Sampai di sini dulu pembahasan kita. Source code program-program tersebut masih bisa dikembangkan lebih lanjut sesuai kebutuhan Anda. Selamat mencoba! Noprianto (
[email protected])
Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
www.infolinux.web.id
TUTORIAL
INFOLINUX 10/2005
59
TUTORIAL
Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
Oracle Cluster
Oracle Cluster pada Red Hat Linux Advance Server 3.0 Bagian 1 dari 3 Artikel Ada apa dengan Oracle Real Application Cluster sebenarnya? Apakah memang sesuatu yang perlu kita implementasikan? Ataukah hanya sebuah sugesti tren teknologi? Temukan jawabannya pada paparan berikut ini.
O “
racle database-nya nanti di-cluster saja, ya Pak? Biar lebih baik performansinya…” Kata-kata tersebut sering penulis dengar ketika hendak mengimplementasi sistem dan aplikasi berbasis Oracle. Banyak orang berbicara tentang cluster dan cluster. Tren Oracle cluster di Indonesia berdasarkan pengamatan penulis bukan hanya terjadi di perusahaan yang memerlukan availability dan scalability yang tinggi, namun perusahaan yang menurut penulis belum perlu mengimplementasikan Oracle Cluster pun juga mulai keranjingan dengan teknologi tersebut.
Real Application Cluster Architecture Real Application Cluster (RAC) database memerlukan dua atau lebih mesin yang memungkinkan untuk bekerja bersamaan di bawah kendali sistem operasi yang sudah dilakukan cluster sebelumnya. Architecture dari RAC sendiri dapat dilihat pada gambar 1. Gambar 1 memperlihatkan bahwa satu database diakses secara bersamaan oleh 2 mesin (Instance RAC1 dan Instance RAC2) melalui “Cluster Interconnect”.
Real Application Cluster on Linux? Mengapa penulis memilih Linux? bukan IBMAIX, Sun Solaris atau Microsoft Windows? Hal ini bukan karena Linux memang sedang trend sekarang ini, namun dari beberapa kali implementasi Oracle Real Application cluster yang penulis lakukan, yaitu mulai dari yang berbasis Windows, Linux, Solaris dan AIX, Linux memberikan hasil yang sangat memuaskan dalam memenuhi modern business requirement sekarang ini. Yaitu dilihat dari “Reliability”, ”Portability”, “Recoverability”, “Secure ability”, “Audit ability”, “Manageability & Maintainability“, “Scalability”, “Availability”, dan “Response”. Linux dapat memenuhi semua kriteria tersebut dikarenakan Oracle Corporation sendiri sudah memfokuskan teknologinya menggunakan sistem operasi Linux.
Instalasi Oracle Real Application Cluster Melalui artikel ini penulis mencoba membagi pengalaman bagaimana melakukan instalasi Oracle RAC di Linux. Penulis memberikan contoh menggunakan Oracle9i dengan Patches terakhir dan menggunakan Redhat Advance Server 3.0 update 2 untuk versi Linux-nya. Mengapa bukan Oracle versi 10g? Pada prinsipnya langkah-langkah untuk Oracle 10g tidak jauh berbeda, mungkin di lain kesempatan penulis juga akan membagi pengalaman bagaimana melakukannya untuk Oracle 10g.
Konfigurasi sistem Gambar 1. Architecture RAC.
60
INFOLINUX 10/2005
Berikut ini adalah konfigurasi sistem yang penulis gunakan untuk membangun Real
www.infolinux.web.id
Application Cluster. Pada kesempatan ini penulis akan menggunakan dua mesin atau dua node untuk menyederhanakan masalah. Walaupun pada kasus di lapangan, clustering Oracle banyak diimplementasikan dengan menggunakan minimal tiga node.
Mesin 1 (HP DL 380 G3) Hostname: dsmp1 IPAddress: eth0 192.168.1.1 netmask 255.255.255.0 eth1 10.1.1.1 netmask 255.255.255.0 Processor: 4 x Intel Pentium IV Xeon – 3.0 Ghz Memory: 4 x 1 GB Harddisk: 18.2 x 4 SCSI 10k (RAID 0 + 1) Operating System: Redhat Avance Server 32 Bit Update 2 Fibre Card: QLogic 2214 (Certified for Linux) Oracle Database Version: Oracle Enterprise Editions 9i(9.2.0.4) for Linux
Mesin 2(HP DL 380 G3) Hostname: dsmp2 IPAddress: eth0 :192.168.1.2 netmask 255.255.255.0 eth1 : 10.1.1.2 netmask 255.255.255.0 Processor: 4 x Intel Pentium IV Xeon – 3.0 Ghz Memory: 4 x 1 GB Harddisk: 18.2 x 4 SCSI 10k (RAID 0 + 1) Operating System: Redhat Advance Server 32 Bit Update 2
TUTORIAL
Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
Oracle Cluster
Fibre Card: QLogic 2214 (Certified for Linux) Oracle Database Version: Oracle Enterprise Editions 9i(9.2.0.4) for Linux
tuhkan oleh Oracle database pada saat instalasi dijalankan. Untuk itu ikutilah langkahlangkah yang akan disajikan secara bersambung dalam majalah kesayangan kita ini.
kernel.sem = 250 32000 100 128 fs.file-max = 65536 net.ipv4.ip_local_port_range = 1024 65000 # End of Oracle
Konfigurasi kernel Linux Storage Name: HP Storage Work Modular Smart Array 1000 Harddisk: 36.4 x 14 SCSI 15k (RAID 0 + 1)
Detail Configuration Parallel SCSI A ( ±34731 MB) - /dev/sda1 RAID (1+0) Bay 1 , 2 Purpose: Quorumfile & Share Configuration Parallel SCSI B (±243122 MB) - /dev/sdb1 RAID (5) Bay 3 - 10 Purpose: OCFS (Oracle Cluster File System) Parallel SCSI C (± 110000 MB) - /dev/sdc1 RAID (5) spare 1 Disk Bay 14 Bay 11-13 Purpose: Backup & Archive Log
Instalasi Oracle membutuhkan beberapa perubahan pada kernel Linux, untuk menambahkan beberapa parameter yang berhubungan dengan Oracle database. Untuk itu tambahkan parameter seperti berikut ini pada kedua mesin (dsmp1 & dsmp2): [root@dsmp1 root]# vi /etc/ sysctl.conf # Oracle Configuration for RAC net.core.rmem_default=262144 net.core.wmem_default=262144 net.core.rmem_max=262144 net.core.wmem_max=262144 # End of for RAC # Oracle Configuration kernel.shmall = 2097152 kernel.shmmax = 2147483648 kernel.shmmni = 4096
[root@dsmp1 root]# vi /etc/ security/limits.conf # * * * * #
Oracle Configuration soft nproc 2047 hard nproc 16384 soft nofile 1024 hard nofile 65536 End of Oracle
[root@dsmp1 root]# vi /etc/ pam.d/login # Oracle Configuration session required /lib/security/ pam_limits.so # End of Oracle Configuration
Setelah menambahkan parameter tersebut, lakukan restart pada kedua mesin Linux.
Paket-paket yang dibutuhkan Sebelum melakukan instalasi Oracle, baik itu OCFS, Oracle Cluster Manager dan Oracle Database Enterprise Edition, Anda harus yakin bahwa beberapa file rpm sudah terinstall dalam semua mesin yang akan dicluster. File-file rpm tersebut adalah: 1. CD-2 Redhat Advance Server 3.0 setarch-1.3-1.i386.rpm tcl-8.3.5-92.i386.rpm 2. CD-3 RedHat Advance Server 3.0 openmotif21-2.1.30-8.i386.rpm compat-db-4.0.14-5.i386.rpm compat-gcc-7.3-2.96.122.i386.rpm compat-gcc-c++-7.3-2.96.122.i386. rpm compat-libstdc++-7.3-2.96.122.i386. rpm c o m p a t - l i b s t d c + + - d e v e l - 7 . 32.96.122.i386.rpm Setelah semua file tersebut terinstal di dalam mesin Linux, sekarang saatnya kita melakukan beberapa konfigurasi yang dibu-
www.infolinux.web.id
INFOLINUX 10/2005
61
TUTORIAL
Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
Oracle Cluster
Konfigurasi “hangcheck-timer” Tambahkan parameter berikut pada /etc/ modules.conf Red Hat Linux di semua mesin RAC. [root@dsmp1 root]# echo “options hangcheck-timer hangcheck_ tick=30 hangcheck_margin=180” >> /etc/modules.conf [root@dsmp1 root]#
Hangcheck-timer memiliki dua parameter, yaitu: 1. hangcheck_tick, parameter ini berguna untuk melakukan check terhadap “System Health” 2. hangcheck_margin, parameter ini adalah maksimum “Hang Delay” yang ditoleransi sebelum hangcheck-timer melakukan reset terhadap RAC Node.
Membuat group dan user Oracle Tahap selanjutnya adalah membuat user Oracle. User Oracle digunakan untuk melakukan administrasi terhadap database Oracle. User Oracle yang dibuat harus merupakan member dari group oinstall dan dba. Untuk membuatnya lakukan dengan perintah-perintah di bawah ini pada kedua mesin: [root@dsmp1 root]# oinstall [root@dsmp1 root]# [root@dsmp1 root]# Oracle -g oinstall [root@dsmp1 root]#
[root@dsmp1 root]# su - Oracle [Oracle@dsmp1 Oracle]$ vi .bash_profile ORACLE_BASE=/u01/app/Oracle; export ORACLE_BASE ORACLE_HOME=$ORACLE_BASE/ product/9.2; export ORACLE_HOME ORACLE_SID=reald1; ORACLE_OWNER=Oracle; export ORACLE_OWNER PATH=$PATH:$ORACLE_HOME/bin; export PATH LD_LIBRARY_PATH=$ORACLE_HOME/ jlib; export LD_LIBRARY_PATH CLASSPATH=$ORACLE_HOME/ JRE:$ORACLE_HOME/jlib:$ORACLE_ HOME/rdbms/jlib CLASSPATH=$CLASSPATH:$ORACLE_ HOME/network/jlib;export CLASSPATH LD_ASSUME_KERNEL=2.4.19; export LD_ASSUME_KERNEL
Mesin 2 (dsmp2) groupadd dba adduser -G dba
Selanjutkan kita harus membuat ORACLE_ HOME. ORACLE_HOME adalah tempat Oracle database & Oracle cluster manager akan diinstal. ORACLE_HOME pada instalasi diletakkan pada /u01/app/product/Oracle/9.2. Untuk membuatnya ikuti langkah di bawah ini: [root@dsmp1 root]# mkdir -p /u01/app/Oracle/product/9.2 [root@dsmp1 root]# chown -R Oracle:oinstall /u01/app [root@dsmp1 root]#
Script di atas juga harus dilakukan di semua mesin cluster. Oracle juga memerlukan modifikasi pada file .bash_profile pada
INFOLINUX 10/2005
Mesin 1 (dsmp1)
groupadd
Konfigurasi ORACLE_HOME & User Profile
62
user Oracle untuk menentukan nilai dari $ORACLE_BASE, $ORACLE_HOME dan juga ORACLE_SID. Ikuti langkah berikut ini untuk memodifikasi file .bash_profile:
[root@dsmp2 root]# su - Oracle [Oracle@dsmp2 Oracle]$ vi .bash_profile ORACLE_BASE=/u01/app/Oracle; export ORACLE_BASE ORACLE_HOME=$ORACLE_BASE/ product/9.2; export ORACLE_HOME ORACLE_SID=reald2; ORACLE_OWNER=Oracle; export ORACLE_OWNER PATH=$PATH:$ORACLE_HOME/bin; export PATH LD_LIBRARY_PATH=$ORACLE_HOME/ jlib; export LD_LIBRARY_PATH CLASSPATH=$ORACLE_HOME/ JRE:$ORACLE_HOME/jlib:$ORACLE_ HOME/rdbms/jlib CLASSPATH=$CLASSPATH:$ORACLE_ HOME/network/jlib;export CLASSPATH LD_ASSUME_KERNEL=2.4.19; export LD_ASSUME_KERNEL
www.infolinux.web.id
Konfigurasi network Tambahkan konfigurasi berikut ini pada /etc/hosts di kedua mesin (dsmp1 & dsmp2): 192.168.1.1 dsmp1 192.168.1.2 dsmp2 10.1.1.1 dsmp1-priv 10.1.1.2 dsmp2-priv
Konfigurasi rsh untuk “Remote Operation” Ketika melakukan instalasi Oracle pada RAC Node, Oracle akan menggunakan fitur rsh untuk melakukan copy Oracle software dari satu node ke node yang lainnya. Oleh karena itu, Oracle account harus di-trust oleh semua RAC Node. Untuk melakukannya, ikuti langkah berikut: Yakinkan rsh server sudah terinstal di server Anda. [root@dsmp1 root]# rpm -qa | grep rsh rsh-0.17-17 rsh-server-0.17-17 [root@dsmp1 root]#
Aktifkan service rsh, yang biasanya didisable oleh Linux. [root@dsmp1 root]# chkconfig rsh on [root@dsmp1 root]# chkconfig rlogin on [root@dsmp1 root]# service xinetd reload Reloadingconfiguration: [OK] [root@dsmp1 root]#
Tambahkan konfigurasi berikut ini pada file /etc/hosts.equiv. +dsmp1 Oracle +dsmp2 Oracle +dsmp1-priv Oracle +dsmp2-priv Oracle
Ubahlah mode file tersebut. [root@dsmp1 root]# chmod 600 /etc/hosts.equiv [root@dsmp1 root]# chown root:root /etc/hosts.equiv
Lakukan langkah di atas di semua mesin RAC dan setelah itu yakinkan bahwa user Oracle dapat melakukan “remote operation” tanpa meminta password. Untuk itu
TUTORIAL
Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
Oracle Cluster
ikuti langkah berikut ini: [root@dsmp1 root]# su - Oracle [Oracle@dsmp1 Oracle]$ rsh dsmp2 hostname dsmp2 [Oracle@dsmp1 Oracle]$ rsh dsmp2-priv hostname dsmp2 [Oracle@dsmp1 Oracle]$
Jika Linux sudah tidak lagi meminta password, maka konfigurasi rsh sudah Anda lakukan dengan benar. Namun jika Linux tetap meminta password, ulangi langkah di atas. Jika step ini tidak dilakukan dengan benar, instalasi Oracle dipastikan akan gagal karena Oracle tidak dapat melakukan “remote copying”.
Patches Red Hat Linux Advance Server 3.0 Sebelum melakukan instalasi Oracle, Anda perlu melakukan patches pada Redhat Advance Server 3.0 agar instalasi Oracle berjalan dengan lancar tanpa error. Patches
tersebut adalah “p3006854_9204_LINUX. zip”, yang bisa didapatkan dari http://metalink.oracle.com. Untuk melakukan patches harus su atau login sebagai user root dan dilakukan di semua mesin yang akan dicluster.
Mesin 1 ( dsmp1) [root@dsmp1 patches]# unzip p3006854_9204_LINUX.zip Archive: p3006854_9204_LINUX. zip creating: 3006854/ inflating: 3006854/rhel3_pre_ install.sh inflating: 3006854/README.txt [root@dsmp1 patches]# cd 3006854/ [root@dsmp1 3006854]# sh rhel3_ pre_install.sh Applying patch... Ensuring permissions are correctly set... Done. Patch successfully applied
www.infolinux.web.id
Mesin 2 (dsmp2) [root@dsmp2 source]# unzip p3006854_9204_LINUX.zip Archive: p3006854_9204_LINUX. zip creating: 3006854/ inflating: 3006854/rhel3_pre_ install.sh inflating: 3006854/README.txt [root@dsmp2 source]# cd 3006854/ [root@dsmp2 3006854]# sh rhel3_ pre_install.sh Applying patch... Ensuring permissions are correctly set... Done. Patch successfully applied [root@dsmp2 3006854]#
Pada bagian kedua akan membahas mengenai cara instalasi OCFS (Oracle Cluster File System) yang akan digunakan untuk membangun Oracle RAC (Real Application Cluster). Yahya Yanuar (
[email protected])
INFOLINUX 10/2005
63
TUTORIAL
Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
SQLite
Database Embedded dengan SQLite Untuk kebutuhan database, tidak semua pengguna harus menggunakan MySQL ataupun PostgreSQL. Keduanya membutuhkan resource sistem yang cukup besar dan sistem databasenya pun cukup rumit. Apabila Anda membutuhkan database “satu file”, yang kecil, sederhana, bisa dipindahkan dengan sangat mudah, maka Anda selalu bisa mencoba SQLite.
D
atabase embbeded selalu menjadi cerita yang seru bagi pengguna yang ingin segalanya serba praktis. Dan, jumlah pengguna tersebut sangatlah banyak di seluruh dunia. Penulis juga merupakan salah satunya. Tak heran apabila database semacam DB(F) dan MDB sangat populer sampai hari ini. Berjuta-juta pengguna komputer di dunia ini masih menggunakan database jenis tersebut. Dengan database embbeded, semua data disimpan di dalam—umumnya—satu file tunggal, yang menjadikannya sangat mudah untuk dibagi, sangat mudah untuk dipindahkan dan secara umum, sangat mudah untuk dimanage. Database system semacam ini jelas bertentangan dengan database yang bekerja secara client/server seperti PostgreSQL ataupun MySQL. Arsitektur database system keduanya memungkinkan adanya bagian yang jelas antara server database dan client database. Dengan demikian, untuk kebutuhan data diakses ramai-ramai, pengguna tidak perlu mengatur file sharing secara manual, karena database system-nya sendiri telah mengizinkan. Dibandingkan dengan database embedded, database semacam ini jelas memiliki keunggulan seperti multi user native seperti disebutkan sebelumnya, skema keamanan yang lebih fleksibel, dan umumnya, lebih mendukung sistem enterprise. Namun, jangan lupa bahwa proses replikasi, back-up, dan restore juga tidak mudah. Sebagai pengguna database, pemilihan suatu database system merupakan hal
64
INFOLINUX 10/2005
yang sangat penting. Benar bahwa hampir semuanya menggunakan bahasa SQL standar, namun, tidak semua menuruti standar benar-benar. Boleh dikatakan, masing-masing database system yang menerapkan SQL pun, umumnya menambahkan fitur sendiri yang oleh karenanya tidak dimiliki oleh database system lain. Lebih detil, ada pula masalah tipe data yang disebabkan tidak menuruti standar SQL. Untuk memilih database system itu sendiri, Anda mungkin akan memilih dulu apakah database system yang akan Anda gunakan tersebut termasuk kategori yang embbeded atau yang bekerja secara client/ server. Berikut ini adalah beberapa alasan untuk menggunakan database embedded: Anda akan sering memindah-mindahkan database dari satu tempat ke tempat lainnya. Database tidak digunakan untuk melayani kebutuhan enterprise (contoh: tidak perlu database clustering). Anda tidak membutuhkan banyak fitur advanced (contoh: tidak membutuhkan trigger, stored procedure, dan lain-lain). Apabila Anda memiliki alasan-alasan tersebut, maka tidak ada salahnya apabila Anda mencoba menggunakan embedded database. Bicara soal ukuran data yang mampu ditampung oleh database embedded, umumnya hal tersebut bukan merupakan masalah lagi. Ukuran yang mampu ditampung oleh suatu embedded database juga tergantung pada sistem operasi yang digunakan. Apabila diperkirakan data-
www.infolinux.web.id
base Anda perlu menampung database berukuran sekitar 2 GB misalnya, maka banyak sekali database embedded yang sudah mendukung. Ukuran file 2 GB juga bukan masalah besar untuk sistem operasi modern. Beberapa database embedded secara teori mampu menampung data sampai satuan Tera, namun, apabila data Anda sudah berkisar pada ukuran tersebut, akan sangat disarankan apabila Anda menggunakan database system yang memiliki dukungan untuk dunia enterprise. Mari kita batasi bahwa kita akan menggunakan database embedded. Solusi tidak serta merta muncul begitu saja karena terdapat begitu banyak database embbeded yang ada di pasaran. Untuk di dunia open source saja, diperkirakan ada belasan database embedded yang tersedia. Walau, yang benar-benar bisa diandalkan barangkali hanya di bawah sepuluh. Beberapa yang sangat populer diantaranya DB dari Sleepycat dan Sqlite. Bicara soal database, umumnya yang selalu terbayang di dalam benak kita adalah sintaks SQL. Sayangnya, tidak semua database embedded mendukung fitur yang satu ini. Banyak sekali embbeded database yang hanya mendukung operasi pencarian dengan lookup pada key, sementara operasi penambahan data dan modifikasi atau penghapusan data menggunakan API yang telah disediakan. DB (BerkeleyDB) misalnya. Walaupun merupakan salah satu database embbeded terpopuler yang ada, tidaklah mendukung sintaks SQL. Keputusan untuk tidak datang bersama fitur ini umumnya macam-macam. Ada yang memang karena
TUTORIAL
Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
SQLite
keterbatasan teknologi, ada yang dikarenakan tujuan optimasi dan compactness. Dengan tidak datang bersama fitur dukungan SQL, maka setidaknya tidak akan ada kegiatan parsing dan mengartikan sintaks SQL yang diberikan. Kecepatan proses pun bisa ditingkatkan.
Mengenal SQLite Dari beberapa embbeded database yang memiliki cukup banyak fitur, sekaligus datang dengan kemampuan SQL, penulis cukup senang dengan kehadiran SQLite. Ada beberapa alasan mengapa SQLite menyenangkan: Secara umum sangat stabil. Penulis cukup lama menggunakan SQLite dan tidak ada masalah yang berarti. Lisensi yang sangat menyenangkan. SQLite merupakan software yang dilisensikan public domain. Ini jauh lebih menyenangkan daripada GPL. Sangat cepat. Dari sisi dukungan SQL, mendukung banyak sekali standar SQL92. Mampu menampung data sampai 2 Tera. Walaupun yang satu ini umumnya tidak terlalu menjadi fitur yang paling menarik, setidaknya, SQLite mampu menampung data sangat besar. Tidak memerlukan banyak memory. Ini sangat berguna untuk sistem yang juga embedded. Banyak bahasa program telah mendukung database yang satu ini. Mendukung ACID, bahkan pada kegagalan sistem atau power. Perkembangannya juga cukup stabil. Dan, tentunya, sebagai database embedded, tidak ada usaha tambahan untuk pengaturan data, selain itu, database pun disimpan dalam satu file tunggal. File tersebut dapat dipindahkan bahkan dari mesin LE (Little Endian) ke BE (Big Endian) dan lain sebagainya. Tabel dapat disimpan pada file terpisah, dan dapat di-attach ke database utama. SQLite adalah database system yang dikembangkan oleh D. Richard Hipp dari HWACI Applied Software Research (
[email protected]). Sqlite dapat di-download di http://www.sqlite.org. Namun, sebelum men-download, cobalah cari terlebih
dahulu ke dalam CD-ROM Anda. Hampir semua distro desktop umumnya telah memaketkan sqlite ke dalam CD/DVD distro. Saat ini, SQLite telah mencapai versi 3.x, walaupun versi 2.x masih tetap dimaintain. Karena versi 2.x masih sangat banyak digunakan, maka pada distribusi versi 3, beberapa penyesuaian pun dilakukan. Sebagai contoh, nama header pustaka pada versi 3 adalah sqlite3.h, dan bukan sqlite.h. Dengan beberapa penyesuaian tersebut, maka dimungkinkan adanya dua versi SQLite terinstall dalam sistem. Berikut ini kita akan membahas beberapa fitur baru versi 3, sekaligus membandingkan dengan versi 2.
Format file baru Format file data SQLite telah mengalami perubahan dibandingkan dengan versi 2. Sayangnya, perubahan format tersebut tidak kompatibel satu sama lainnya. Versi 2 tidak akan membaca database versi 3, dan sebaliknya. Untungnya, walaupun format data tidak kompatibel, migrasi tetap dapat dilakukan dengan sangat mudah dengan memanfaatkan perintah dump dari program sqlite versi 2, dan hasilnya kemudian disimpan pada database versi 3 menggunakan program
sqlite versi 3. Hal ini dimungkinkan karena dalam satu sistem bisa terinstal lebih dari satu versi SQLIte. Secara teknikal, format file baru SQLite mempergunakan tipe data B+Tree untuk tabel (untuk indeks, b-tree konvensional masih dipergunakan). Pada tree ini, semua data disimpan pada daun-daun tree. Menurut pengembang SQLite, format baru ini akan memungkinkan skalabilitas yang lebih baik.
Tipe data Dukungan untuk BLOB dan tipe data. Selama ini, SQLite dikenal sebagai database server yang tidak bertipe (walaupun pada DDL didukung). Pada SQLite 2.x, semua data akan dikonversi ke teks ASCII. Pada versi 3, apabila memungkinkan, maka data akan disimpan sebagai tipe yang didefiniskan oleh user. Penyimpanan ke format non-ASCII sangat penting untuk memungkinkan adanya tipe data BLOB (Binary Large Object). BLOB pada versi 2.x dimungkinkan apabila data telah diencode terlebih dahulu. Masalah tipe data ini merupakan hal yang sangat penting. Pada versi 2.8, karena semua data akan dikonversi ke teks ASCII, maka dengan demikian, data yang seharusnya disimpan ke kolom satu bisa
Website SQLite.
www.infolinux.web.id
INFOLINUX 10/2005
65
TUTORIAL
Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
SQLite
disimpan ke kolom lain. Hal ini mungkin terdengar sangat asing pada database system lain. Pada SQLite versi 3, fitur ini masih dipertahankan, namun penanganannya telah diperbaiki. Pada saat data dimasukkan ke dalam kolom, SQLite 3 akan mencoba untuk melakukan konversi ke format yang telah didefinisikan. Apabila konversi tidak dimungkinkan, SQLite 3 tetap akan menyimpan data tersebut. Sebagai contoh, apabila data string ingin dimasukkan ke dalam kolom integer, maka SQLite akan memeriksa apakah data dapat dikonversi ke bilangan. Apabila dapat, maka konversi dilakukan dan data akan disimpan ke dalam kolom integer. Apabila tidak dapat dikonversi, maka data akan tetap disimpan sebagai string. Berikut ini adalah tipe-tipe data yang didukung: NULL, nilai null INTEGER, menyimpan integer sampai integer 8 byte REAL, menyimpan nilai floating point/ pecahan sampai 8 byte IEEE floating point TEXT, menyimpan teks BLOB, menyimpan data blob
Concurency Sebuah database tentunya bisa diakses oleh lebih dari satu orang pada saat yang sama. Dan, dengan kondisi demikian, maka locking adalah isu yang sangat penting. Pada SQLite 3, locking pada level tabel juga telah diimplementasikan, walaupun tidak akan sebaik locking pada database system besar lain.
ROWID 64bit Setiap baris dalam tabel akan memiliki ID yang unik (rowid). Dibandingkan dengan versi 2.8 yang hanya mendukung rowid sampai 32bit, versi 3 telah mendukung sampai 64bit.
Dukungan UTF-8 dan UTF-16 SQLite 3 telah mendukung baik teks UTF-8 dan UTF-16 secara natif. Hal ini menjadikan dukungan yang lebih luas untuk bahasa di dunia. Implementasi saat ini belum sepenuhnya mendukung kedua encoding tersebut, namun, di masa depan, SQLite 3 akan mendukung sepenuhnya.
66
INFOLINUX 10/2005
Fitur SQL92 yang tidak didukung SQLite berusaha untuk mendukung sebanyak mungkin fitur SQL92. Namun, untuk kecepatan dan alasan lain, beberapa fitur tidak didukung. Berikut ini adalah fitur SQL92 yang tidak didukung: CHECK constrain. Parser mengenali CHECK namun tidak akan dijalankan, kecuali UNIQUE dan NOT NULL. FOREIGN KEY. Parser mengenali namun tidak akan menjalankan. Dukungan trigger komplit. Saat ini, dukungan trigger pada SQLite belumlah komplit. ALTER TABLE. Untuk mengubah tabel, hapuslah tabel dan buatlah kembali. Saat ini, hanya ALTER TABLE ... RENAME TABLE ... yang didukung. Transaksi bersarang (nested transaction). Fungsi COUNT(DISTINCT X). Cara alternatif adalah dengan menggunakan subquery seperti SELECT count(x) FROM (SELECT DISTINCT x FROM tbl); RIGHT OUTER JOIN dan FULL OUTER JOIN tidak diimplementasikan. Yang telah diimplementasikan adalah LEFT OUTER JOIN. Menulis ke view tidak diimplementasikan. Pada SQLite, view adalah read-only. GRANT dan REVOKE. Hal ini disebabkan karena pengguna file database yang disimpan langsung pada filesystem, sehingga hak akses akan menuruti hak akses pada filesystem. Bisa dilihat bahwa fitur yang tidak didukung sudah cukup sedikit dan tidak terlalu vital. Yang mungkin sedikit vital adalah FOREIGN KEY, yang terpaksa harus dicapai melalui program.
Sementara, pustaka yang datang bersama SQLite adalah pustaka libsqlite3. Pustaka ini dapat digunakan oleh developer untuk bekerja dengan database SQLite. Umumnya, paket-paket dalam distro dibagi dalam paket sqlite dan sqlite-devel. Untuk pengembangan program, paket sqlite-devel harus diinstal. Paket sqlite-devel akan berisi dokumentasi, file-file header dan pustaka untuk kebutuhan pembuatan program.
Menggunakan sqlite3 Begitu dijalankan, sqlite3 dapat menerima dua macam perintah: perintah sqlite3 ataupun perintah SQL. Perintah sqlite3 adalah perintah yang diawali oleh tanda titik dan dapat menerima parameter. Berikut ini adalah beberapa perintah sqlite3 yang berguna: .help berguna untuk melihat daftar perintah sqlite3. .databases berguna untuk melihat nama dan file yang digunakan database. .dump berguna untuk melakukan dump database. .echo berguna untuk menampilkan perintah yang dijalankan dalam hasil. .mode berguna untuk mengatur mode output. Mode yang tersedia cukup banyak, diantaranya line, html, column, csv dan lain sebagainya. .output berguna untuk menyimpan output perintah ke file tertentu. .read berguna untuk menjalankan SQL dari file tertentu. .tables berguna untuk menampilkan daftar tabel. Untuk perintah SQL, Anda dapat langsung memberikannya di prompt.
Distribusi SQLite Distribusi SQLite 3 sebenarnya hanya terdiri dari satu program dan beberapa pustaka C untuk mengakses database. Program sqlite3 yang datang bersama distribusi SQLite3 merupakan program untuk bekerja dengan SQLite, mulai dari pembuatan database sampai memungkinkan perintah-perintah khusus SQLite dan sintaks SQL untuk dijalankan. Secara sederhana, program sqlite3 bisa dianggap seperti halnya program psql (client PostgreSQL) dan mysql (client MySQL).
www.infolinux.web.id
Membuat database baru Untuk membuat database baru, cukup jalankan program sqlite, diikuti oleh sebuah parameter berupa nama database. Ekstensi nama file database umumnya adalah .db, namun Anda dapat menggunakan ekstensi yang Anda suka. Tidak ada pembatasan. Setelah itu, masukkanlah perintah SQL untuk membuat tabel ataupun mengisikan data ke dalam tabel. Setelah itu, begitu Anda keluar dari sqlite3, database telah tersimpan.
TUTORIAL
Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
SQLite
Contoh: $ sqlite3 test.db SQLite version 3.1.3 Enter “.help” for instructions sqlite> create table test(a integer, b integer); sqlite> .exit
Melihat daftar table Untuk melihat daftar table, berikanlah perintah .tables seperti contoh berikut ini: $ sqlite3 test.db SQLite version 3.1.3 Enter “.help” for instructions sqlite> .tables test test2 test3 test4 test5 sqlite> .exit
Enter “.help” for instructions sqlite> .echo on sqlite> .read test.sql .read test.sql select * from test; 1|1 2|2 3|3 insert into test(a,b) values(3,3); select * from test; 1|1 2|2 3|3 3|3 sqlite> .exit
Dump database ke file Menjalankan sintaks SQL dari command line Ada kalanya, Anda ingin menjalankan sintaks SQL dari command line, misalnya ketika digunakan dalam script. Untuk kebutuhan tersebut, Anda bisa langsung memberikan perintah SQL langsung pada command line seperti contoh berikut: $ sqlite3 test.db “select * from test”; 1|1 2|2
Sebenarnya, Anda pun bisa saja menjalankan perintah internal sqlite3 di command line: $ sqlite3 test.db “.tables”; test test2 test3 test4 test5
Menjalankan sintaks SQL dari file lain Untuk menjalankan sintaks SQL yang tersimpan dalam file lain, gunakanlah perintah internal .read seperti contoh berikut ini.
Walaupun back-up dapat dilakukan dengan langsung meng-copy file database ke lokasi lain, tidak harus dengan cara dump seperti MySQL ataupun PostgreSQL, ada kalanya dump diperlukan. Contoh paling baik adalah ketika Anda ingin memigrasi data dari SQLite versi lama ke SQLite versi baru. Berikut ini adalah langkah-langkah melakukan dump: jalankan sqlite3 berikan perintah .output
berikan perintah .dump atur kembali agar output kembali disimpan ke stdout dengan perintah .output stdout Contoh: $ sqlite3 test.db SQLite version 3.1.3 Enter “.help” for instructions sqlite> .output dump.sql sqlite> .dump sqlite> .output stdout sqlite> .exit
isi file test.sql select * from test; insert into test(a,b) values(3,3); select * from test;
Contoh penggunaan .read: $ sqlite3 test.db SQLite version 3.1.3
Contoh file hasil dump: $ cat dump.sql BEGIN TRANSACTION; CREATE TABLE test(a integer, integer); INSERT INTO “test” VALUES(1, INSERT INTO “test” VALUES(2, INSERT INTO “test” VALUES(3,
www.infolinux.web.id
b 1); 2); 3);
Output sqlite_to_web.sh.
INSERT INTO “test” VALUES(3, 3); CREATE TABLE test2(a integer, b integer); CREATE TABLE test3(a integer, b integer); CREATE TABLE test4(a integer, b integer); CREATE TABLE test5(a integer, b integer); COMMIT;
Melihat skema database Untuk melihat skema dalam database, berikanlah perintah .schema seperti contoh berikut: $ sqlite3 test.db SQLite version 3.1.3 Enter “.help” for instructions sqlite> .schema CREATE TABLE test(a integer, b integer); CREATE TABLE test2(a integer, b integer); CREATE TABLE test3(a integer, b integer); CREATE TABLE test4(a integer, b integer); CREATE TABLE test5(a integer, b integer); sqlite> .exit
INFOLINUX 10/2005
67
TUTORIAL
Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
SQLite
Untuk melihat skema per table, berikan parameter nama tabel pada .schema: sqlite> .schema test CREATE TABLE test(a integer, b integer); sqlite>
Membuat auto-increment SQLite tidak memiliki dukungan khusus untuk membuat field auto-increment. Apa yang bisa dilakukan untuk membuat field auto-increment adalah dengan membuat suatu field bertipe integer dan menjadikannya primary key. Pada saat insert, pengguna tidak perlu memasukkan nilai tertentu ke field tersebut. SQLite akan menambahkannya sendiri, sehingga auto-increment pun dimungkinkan. Sebagai contoh, kita akan membuat table test6 yang terdiri dari dua field berikut ini: a bertipe integer dan berupa primary key b bertipe integer Berikut ini adalah sintaks SQL untuk kebutuhan pembuatan tabel: sqlite> create table test6(a integer primary key, b integer);
perintah yang belum selesai adalah ...>. Anda bisa menggantinya dengan perintah .prompt apabila diinginkan. Contoh: $ sqlite3 test.db SQLite version 3.1.3 Enter “.help” for instructions sqlite> select ...> * ...> from ...> test; 1|1 2|2 3|3 3|3 sqlite> .prompt mydb> ‘ --->’ mydb>select --->* --->from --->test; 1|1 2|2 3|3 3|3 mydb>
Output ke format CSV Kita telah mempersiapkan field a sebagai field auto-increment. Dengan tidak memasukkan nilai ke field a setiap kali melakukan insert, nilai data pada field a akan ditambahkan satu. Contoh: sqlite> insert into test6(b) values(1); sqlite> insert into test6(b) values(2); sqlite> insert into test6(b) values(3);
Berikut ini adalah isi table test6: select * from test6; 1|1 2|2 3|3
Proses penambahan ini akan berhenti apabila telah mencapai nilai 2147483647. Selanjutnya, nilai random yang akan dimasukkan.
Anda bisa membuka isi dari suatu tabel database sqlite di OpenOffice.org ataupun di Excel. Caranya adalah dengan membuat output program sqlite3 menjadi format CSV. Setiap record kemudian akan ditampilkan perbaris, dan setiap field akan ditampilkan dengan dipisahkan oleh koma. Berikut ini contohnya: $ sqlite3 test.db SQLite version 3.1.3 Enter “.help” for instructions sqlite> .mode csv sqlite> .output test.csv sqlite> select * from test; sqlite> .output stdout sqlite> .mode list sqlite> .exit
Berikut ini adalah isi file test.csv: 1,1 2,2 3,3 3,3
Mengubah prompt sqlite3 Secara default, prompt pada sqlite3 adalah sqlite> dan prompt untuk baris lanjutan
68
INFOLINUX 10/2005
Output ke format HTML Apabila isi table ingin ditampilkan di inter-
www.infolinux.web.id
net, maka format output bisa diganti ke format HTML. Berikut ini adalah contohnya: $ sqlite3 test.db SQLite version 3.1.3 Enter “.help” for instructions sqlite> .header on sqlite> .mode html sqlite> .output test.html sqlite> select * from test; sqlite> .output stdout; sqlite> .mode list sqlite> .header off sqlite> .exit
Berikut ini adalah isi test.html: a | b |
1 | 1 |
2 | 2 |
3 | 3 |
3 | 3 |
Sebagai catatan, perintah .header on berguna untuk meminta sqlite3 untuk menampilkan nama field setiap kali query dilakukan. Tentunya, kita tidak ingin tabel HTML yang dibuat tidak memiliki judul, bukan?
Output teks yang rapi Output pada sqlite3 memang tidak rapi. Apabila Anda menginginkannya untuk tampil rapi seperti psql misalnya, gantilah format output menjadi column, dan jangan lupa untuk mengatur lebar kolom data Anda. Berikut ini adalah contohnya: $ sqlite3 test.db SQLite version 3.1.3 Enter “.help” for instructions sqlite> .header on sqlite> .mode column sqlite> .width 20 20 sqlite> select * from test; a b --------------- --------------1 1 2 2
TUTORIAL
Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
SQLite
3 3 3 3 sqlite> .exit
buah HTML tunggal untuk semua tabel dan isinya. Berikut ini adalah source code shell script tersebut:
TABLE_CONTENTS=”$TABLE_ CONTENTS $TABLE_CONTENT” done
#!/bin/sh
Sebagai catatan, perintah .width dan parameter 20 20 dimaksudkan untuk mengubah lebar kolom pertama sebesar 20 karakter dan lebar kolom kedua sebesar 20 karakter. Dengan cara seperti ini, lebar kolom tertentu bisa diatur dengan fleksibel.
# (c) Noprianto # 20 June 2005
echo DONE. SQLITE=/usr/bin/sqlite3 OUT=$1.html
Vakum database Pada saat Anda menghapus banyak record dari database, ukuran file database umumnya tidak akan berkurang. Hal ini wajar karena ruang kosong (yang tadinya digunakan untuk menampung data sebelum dihapus) akan ditandai sebagai ruang kosong internal. Ruang kosong internal tersebut nantinya akan digunakan begitu ada data baru dimasukkan. Apabila Anda tidak senang dengan cara kerja demikian dan ingin mendapatkan pengurangan ukuran database begitu data dihapus (SQLite sebelum 3.1, karena pada 3.1, auto vacuum menjadi default), Anda bisa menggunakan perintah VACUUM. Perintah yang satu ini akan membangun ulang database dari awal. Hal ini akan sedikit memakan waktu dan space harddisk. Pada sistem dimana SQLite dibangun, vakum akan memakan waktu setengah detik untuk setiap MB data, dan akan memakan space dua kali ukuran database. Berikut ini adalah contoh penggunaan perintah vacuum: $ sqlite3 test.db SQLite version 3.1.3 Enter “.help” for instructions sqlite> vacuum; sqlite> .exit
HEADER=”<TITLE> SQLITE TO WEB: $1$1
” FOOTER=”
Generated by `basename $0` on `date`” LINKS=”” TABLE_CONTENTS=””
echo “sqlite_to_web.sh” echo “(c) Nop, 2005” #checking routine [ ! -x $SQLITE ] && echo “Sorry: SQLITE binary not found” && exit 1 [ -z $1 ] && echo “Sorry: I need one parameter, which is your database” && exit 2 [ ! -e $1 ] && echo “Sorry: Database file you specified cannot be found” && exit 3 [ ! -r $1 ] && echo “Sorry: Database file you specified cannot be read” && exit 4 #get table list TABLES=`$SQLITE $1 .tables`
Contoh aplikasi : iterasi tabel dan menampilkan hasilnya di web Pada contoh sebelumnya, kita telah melihat bagaimana mengubah format output dari perintah SQL yang dijalankan ke HTML. Ini berarti, kita dapat membukanya di web browser atau menampilkannya di Internet. Namun, bagaimana kalau kita ingin menampilkan semua tabel dan isinya ke internet dengan cara yang mudah? Untuk lebih mudahnya, kita bisa membangun shell script sederhana yang akan membuat se-
echo “$HEADER $LINKS
$TABLE_CONTENTS $FOOTER” > $OUT
#create table HTML code for i in $TABLES do LINK=”$i
” TABLE_CONTENT=”`$SQLITE -header -html $1 \”select * from $i\”;`
” LINKS=”$LINKS $LINK”
www.infolinux.web.id
Catatan program Untuk secara otomatis menampilkan header, berikanlah parameter -header pada program sqlite3 Dan, untuk secara mengotomatis mengubah format output ke HTML, berikan parameter -html. Cara kerja program: Pertama-tama, script akan memeriksa apakah binary SQLITE tersedia atau tidak. Pengguna dapat mengubah lokasi pencarian dengan mengubah path ke binary SQLITE pada variabel $SQLITE. Setelah itu, pemeriksaan akan dilanjutkan kepada pemeriksaan parameter pertama (apakah pengguna memasukkan parameter pertama atau tidak). Kemudian, dilanjutkan dengan memeriksa ketersediaan database di filesystem (apakah file ditemukan). Dan pemeriksaan diakhiri dengan memeriksa apakah database dapat dibaca atau tidak (pemeriksaan filesistem semata, karena database sqlite disimpan sebagai file biasa). Daftar table pun kemudian didapat dengan memanggil binary SQLITE diikuti dengan perintah .tables (merupakan perintah terpisah). Berdasarkan daftar table yang didapat, kita pun membuat link dan table isi table database. Akhirnya, semua variabel yang didapatkan kita tuliskan di HTML output. Selanjutnya, script tersebut bisa digunakan untuk menampilkan keseluruhan isi semua table di dalam database SQLite Anda. Dan, dengan script tersebut pulalah, kita menutup artikel ini. Sampai di sini dulu perkenalan kita dengan database SQLite. Selamat mencoba! Noprianto ([email protected])
INFOLINUX 10/2005
69
TUTORIAL
Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
LIDS
Mengamankan Server Linux dengan LIDS Bagian 2 dari 2 Artikel Jika Anda tidak menemui kendala mengikuti artikel bagian satu, Anda akan berada pada shell dengan kernel yang baru. Bagian dua ini mengonfigurasikan ACLs LIDS pada sistem, yang menentukan dalam melindungi sistem Anda.
S
ebelumnya mari kita bahas terlebih dahulu langkah yang kita lakukan sebelumnya. Pada bagian pertama kita melakukan dua langkah. Langkah pertama adalah patching terhadap kernel dengan menggunakan LIDS dan mengaktifkan fungsi-fungsi keamanan pada saat konfigurasi kernel. Lalu pada langkah kedua yang telah kita lakukan adalah menginstal lidstools, yaitu tools yang digunakan untuk melakukan administrasi terhadap lids serta mengatur ACLs pada LIDS. Lidstools terdiri atas dua aplikasi, yaitu lidsadm dan lidsconf. Lidsadm digunakan untuk melakukan administrasi kemampuan (capability) dari LIDS, sedangkan lidsconf digunakan untuk membuat ACLs pada sistem. Filefile konfigurasi berada pada direktori /etc/lids. Bagi Anda yang telah familiar dengan sintaks iptables maka tidak akan kesulitan untuk membuat ACLs LIDS. Pada LIDS yang menjadi subjek adalah semua program yang bisa berjalan pada Linux seperti binary file, shell script, sedangkan yang menjadi objek adalah apa saja yang ingin diakses oleh subjek termasuk file, direktori, capability, dan lainnya.
3. Konfigurasi ACLs LIDS Berikut contoh penulisan sintaks dari lidadm dan lidsconf. Untuk perintah lidsadm: # lidsadm -[S|I] -- [+|-] [LIDS_FLAG] [...] # lidsadm -h
LIDS_FLAG pada perintah pertama merupakan capability yang dapat dilihat
70
INFOLINUX 10/2005
pada bagian Lampiran atau pada perintah kedua seperti di atas. Untuk perintah lidsconf: # lidsconf -A [-s subject] -o object [-d] [-t from-to] [-i level] -j ACTION
Keterangan parameter dari perintah di atas dapat dilihat dengan menjalankan perintah berikut ini: # lidsconf -h
Baiklah, selanjutnya kita akan melakukan konfigurasi dasar untuk ACLs. Ketikkan perintah di bawah ini langsung pada shell atau masukkan ke dalam sebuah file script. /sbin/lidsconf -A -j READONLY /sbin/lidsconf -A -j READONLY /sbin/lidsconf -A -j READONLY /sbin/lidsconf -A -j READONLY /sbin/lidsconf -A -j READONLY /sbin/lidsconf -A -j READONLY /sbin/lidsconf -A -j READONLY /sbin/lidsconf -A etc -j READONLY /sbin/lidsconf -A -j DENY /sbin/lidsconf -A conf -j DENY
-o /sbin -o /bin -o /usr -o /usr/local -o /lib -o /opt -o /etc -o /usr/local/ -o /etc/shadow -o /etc/lilo.
www.infolinux.web.id
/sbin/lidsconf -A -s /bin/login -o /etc/shadow -j READONLY /sbin/lidsconf -A -s /usr/bin/ vlock -o /etc/shadow -j READONLY /sbin/lidsconf -A -s /bin/su -o /etc/shadow -j READONLY /sbin/lidsconf -A -s /bin/su -o CAP_SETUID -j GRANT /sbin/lidsconf -A -s /bin/su -o CAP_SETGID -j GRANT /sbin/lidsconf -A -o /boot -j READONLY /sbin/lidsconf -A -o /root -j READONLY /sbin/lidsconf -A -s /bin/bash -o /root/.bash_history -j WRITE /sbin/lidsconf -A -o /var/log -j APPEND /sbin/lidsconf -A -s /bin/login -o /var/log/wtmp -j WRITE /sbin/lidsconf -A -s /bin/login -o /var/log/lastlog -j WRITE /sbin/lidsconf -A -s /sbin/init -o /var/log/wtmp -j WRITE /sbin/lidsconf -A -s /sbin/init -o /var/log/lastlog -j WRITE /sbin/lidsconf -A -s /sbin/halt -o /var/log/wtmp -j WRITE /sbin/lidsconf -A -s /sbin/halt -o /var/log/lastlog -j WRITE /sbin/lidsconf -A -s /etc/rc.d/
TUTORIAL
Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
LIDS
rc.sysinit \ -o /var/log/wtmp -i 1 -j WRITE /sbin/lidsconf -A -s /etc/rc.d/ rc.sysinit \ -o /var/log/lastlog -i 1 -j WRITE /sbin/lidsconf -A -s /sbin/ hwclock -o /etc/adjtime -j WRITE /sbin/lidsconf -A -s /sbin/init -o CAP_INIT_KILL -j GRANT /sbin/lidsconf -A -s /sbin/init -o CAP_KILL -j GRANT /sbin/lidsconf -A -s /etc/rc.d/ init.d/halt \ -o CAP_INIT_KILL -i 1 -j GRANT /sbin/lidsconf -A -s /etc/rc.d/ init.d/halt \ -o CAP_KILL -i 1 -j GRANT /sbin/lidsconf -A -s /etc/rc.d/ init.d/halt \ -o CAP_NET_ADMIN -i 1 -j GRANT /sbin/lidsconf -A -s /etc/rc.d/ init.d/halt \ -o CAP_SYS_ADMIN -i 1 -j GRANT /sbin/lidsconf -A -s /sbin/ update -o CAP_SYS_ADMIN -j GRANT
Setelah ACLs dasar tersebut telah dibuat selanjutnya kita lakukan pengetesan terhadap sistem yang telah dilindungi oleh LIDS, dengan cara menonaktifkan “capabilty” dari ACL_DISCOVERY dengan perintah berikut: #lidsadm -S -- -ACL_DISCOVERY
Masukkan password, lalu dengan menggunakan account root, cobalah untuk membuat sebuah file kosong pada direktori home root. Sampai di sini kita telah mengonfigurasikan LIDS untuk kebutuhan dasar sistem. ACLs tersebut dapat ditambahkan sesuai kebutuhan dengan sintaks yang sama, namun menggunakan paramater yang berbeda sesuai kebutuhan.
4. Kesimpulan Account root pada sistem operasi *NIX dan variannya ternyata memiliki masalah yang sangat besar. Dengan kemampuannya untuk melakukan apa saja terhadap sistem, menjadi target yang banyak dicari oleh para intruder. Untuk itu, diperlukan sebuah aturan yang dapat membatasi root. Sehingga, sekalipun intruder mendapatkan account root terhadap sistem, ia tidak dapat melakukan apapun. LIDS (Linux Intrusion Detection System) merupakan patch keamanan pada kernel Linux, yang memiliki kemampuan untuk melindungi sistem, bahkan dari account root sekalipun.
Namun LIDS bukanlah segalanya. Perlindungan terhadap sistem tidaklah cukup dengan hanya melakukan patch terhadap kernel, sebab keamanan adalah sebuah proses. Tidak ada sistem di dunia ini yang 100% aman. Selama sistem itu dibuat oleh manusia masih banyak cara untuk menyusupinya sekali pun kemungkinan itu sangat kecil. Untuk itu, menjaga keamanan sebuah sistem bukanlah bergantung pada sebuah patch, tools, dan lainnya, tetapi bergantung pada user yang menggunakan sistem tersebut. Pepatah terkenal menyatakan, “It’s not about the gun, but the man behind the gun.” Irvan ([email protected])
LIDS CAPABILITY ### 0: In a system with the _POSIX_CHOWN_RESTRICTED option defined, this overrides the restriction ### 0: of changing file ownership and group ownership. # +0:CAP_CHOWN ### 1: Override all DAC access, including ACL execute access if _POSIX_ACL is defined. Excluding ### 1: DAC access covered by CAP_LINUX_IMMUTABLE. # +1:CAP_DAC_OVERRIDE ### 2: Overrides all DAC restrictions regarding read and search on files and directories, including ### 2: ACL restrictions if _POSIX_ACL is defined. Excluding DAC access covered by ### 2: CAP_LINUX_IMMUTABLE. # +2:CAP_DAC_READ_SEARCH ### 3: Overrides all restrictions about allowed operations on files, where file owner ID must be equal ### 3: to the user ID, except where CAP_FSETID is applicable. It doesn’t override MAC and DAC
www.infolinux.web.id
### 3: restrictions. # +3:CAP_FOWNER ### 4: Overrides the following restrictions that the effective user ID shall match the file owner ID ### 4: when setting the S_ISUID and S_ISGID bits on that file; that the effective group ID (or one of ### 4: the supplementary group IDs) shall match the file owner ID when setting the S_ISGID bit on ### 4: that file; that the S_ISUID and S_ISGID bits are cleared on successful return from chown(2) ### 4: (not implemented). # +4:CAP_FSETID ### 5: Overrides the restriction that the real or effective user ID of a process sending a signal must ### 5: match the real or effective user ID of the process receiving the signal. # +5:CAP_KILL ### 6: - Allows setgid(2)
INFOLINUX 10/2005
71
TUTORIAL
Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
LIDS
LIDS CAPABILITY (Sambungan) manipulation ### 6: - Allows setgroups(2) ### 6: - Allows forged gids on socket credentials passing. # +6:CAP_SETGID ### 7: - Allows set*uid(2) manipulation (including fsuid). ### 7: - Allows forged pids on socket credentials passing. # +7:CAP_SETUID ### 8: Transfer any capability in your permitted set to any pid, remove any capability in your ### 8: permitted set from any pid. # -8:CAP_SETPCAP ### 9: Allow modification of S_IMMUTABLE and S_APPEND file attributes. # +9:CAP_LINUX_IMMUTABLE ### 10: Allows binding to TCP/ UDP sockets below 1024. +10:CAP_NET_BIND_SERVICE ### 11: Allow broadcasting, listen to multicast. +11:CAP_NET_BROADCAST ### 12: - Allow interface configuration ### 12: - Allow administration of IP firewall, masquerading and accounting ### 12: - Allow setting debug option on sockets ### 12: - Allow modification of routing tables ### 12: - Allow setting arbitrary process / process group ownership on sockets ### 12: - Allow binding to any address for transparent proxying ### 12: - Allow setting TOS
72
INFOLINUX 10/2005
(type of service) ### 12: - Allow setting promiscuous mode ### 12: - Allow clearing driver statistics ### 12: - Allow multicasting ### 12: - Allow read/write of device-specific registers +12:CAP_NET_ADMIN ### 13: - Allow use of RAW sockets ### 13: - Allow use of PACKET sockets +13:CAP_NET_RAW ### 14: - Allow locking of shared memory segments ### 14: - Allow mlock and mlockall (which doesn’t really have anything to do with IPC) +14:CAP_IPC_LOCK ### 15: Override IPC ownership checks. +15:CAP_IPC_OWNER ### 16: Insert and remove kernel modules. -16:CAP_SYS_MODULE ### 17: - Allow ioperm/iopl and /dev/port access ### 17: - Allow /dev/mem and /dev/kmem acess ### 17: - Allow raw block devices (/dev/[sh]d??) acess +17:CAP_SYS_RAWIO ### 18: Allow use of chroot() +18:CAP_SYS_CHROOT ### 19: Allow ptrace() of any process +19:CAP_SYS_PTRACE ### 20: Allow configuration of process accounting +20:CAP_SYS_PACCT ### 21:
www.infolinux.web.id
### 21: - Allow configuration of the secure attention key ### 21: - Allow administration of the random device ### 21: - Allow device administration (mknod) ### 21: - Allow examination and configuration of disk quotas ### 21: - Allow configuring the kernel’s syslog (printk behaviour) ### 21: - Allow setting the domainname ### 21: - Allow setting the hostname ### 21: - Allow calling bdflush() ### 21: - Allow mount() and umount(), setting up new smb connection ### 21: - Allow some autofs root ioctls ### 21: - Allow nfsservctl ### 21: - Allow VM86_REQUEST_IRQ ### 21: - Allow to read/write pci config on alpha ### 21: - Allow irix_prctl on mips (setstacksize) ### 21: - Allow flushing all cache on m68k (sys_cacheflush) ### 21: - Allow removing semaphores ### 21: - Used instead of CAP_CHOWN to “chown” IPC message queues, semaphores and shared memory ### 21: - Allow locking/ unlocking of shared memory segment ### 21: - Allow turning swap on/off ### 21: - Allow forged pids on socket credentials passing ### 21: - Allow setting readahead and flushing buffers on block devices ### 21: - Allow setting geometry in floppy driver ### 21: - Allow turning DMA on/ off in xd driver ### 21: - Allow administration of md devices (mostly the above,
Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
TUTORIAL LIDS
LIDS CAPABILITY (Sambungan) but some extra ioctls) ### 21: - Allow tuning the ide driver ### 21: - Allow access to the nvram device ### 21: - Allow administration of apm_bios, serial and bttv (TV) device ### 21: - Allow manufacturer commands in isdn CAPI support driver ### 21: - Allow reading nonstandardized portions of pci configuration space ### 21: - Allow DDI debug ioctl on sbpcd driver ### 21: - Allow setting up serial ports ### 21: - Allow sending raw qic-117 commands ### 21: - Allow enabling/ disabling tagged queuing on SCSI controllers and sending arbitrary SCSI commands ### 21: - Allow setting encryption key on loopback filesystem # +21:CAP_SYS_ADMIN ### 22: Allow use of reboot() # +22:CAP_SYS_BOOT ### 23: - Allow raising priority and setting priority on other (different UID) processes ### 23: - Allow use of FIFO and round-robin (realtime) scheduling on own processes and setting ### 23: the scheduling algorithm used by another process. # +23:CAP_SYS_NICE Override resource limits. Set resource limits. ### 24: - Override quota limits. ### 24: - Override reserved space on ext2 filesystem
### 24: NOTE: ext2 honors fsuid when checking for resource overrides, so you can override ### 24: using fsuid too ### 24: - Override size restrictions on IPC message queues ### 24: - Allow more than 64hz interrupts from the real-time clock ### 24: - Override max number of consoles on console allocation ### 24: - Override max number of keymaps # +24:CAP_SYS_RESOURCE ### 25: - Allow manipulation of system clock ### 25: - Allow irix_stime on mips ### 25: - Allow setting the real-time clock # +25:CAP_SYS_TIME ### 26: - Allow configuration of tty devices ### 26: - Allow vhangup() of tty # +26:CAP_SYS_TTY_CONFIG ### 27: Allow the privileged aspects of mknod() ### +27:CAP_MKNOD ### 28:Allow taking of leases on files */ ### +28:CAP_LEASE
### 29: Restricts viewable processes by a user. # +29:CAP_HIDDEN ### 30: Allow killing protected processes. # -30:CAP_KILL_PROTECTED
www.infolinux.web.id
INFOLINUX 10/2005
73
TUTORIAL
Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
SSH
Mengenal SSH Lebih Lanjut SSH tidak hanya sekadar dapat digunakan untuk menjalankan perintah di komputer lain dalam lingkungan kerja yang aman. SSH sendiri memiliki banyak sekali fungsi, dan dengan mengenal SSH lebih baik, kita bisa lebih memanfaatkannya untuk menjaga sistem kita dari pihak yang tidak bertanggung jawab, ataupun untuk dapat bekerja lebih mudah.
S
ecure shell saat ini merupakan program standar untuk menjalankan perintah di komputer lain dengan aman. Hampir semua distro Linux telah memaketkan SSH ke dalam distronya. Dan, umumnya, SSH Daemon pun telah dijalankan pada saat booting. Dengan demikian, pengguna di komputer lain dapat terhubung ke suatu komputer lainnya dengan mudah, tanpa harus menjalankan service tambahan. Apabila distro Anda masih belum memaketkan SSH, download-lah di website OpenSSH di www.openssh.com. SSH dibangun untuk mengatasi kelemahan aplikasi semacam telnet yang mengirimkan data dalam plain-text, sehingga dapat disniff oleh pihak yang tidak bertanggungjawab. Pada kenyataannya, tidak hanya telnet yang digantikan oleh SSH. Namun, juga termasuk rlogin, rsh, rexec, dan ftp. Hari demi hari, SSH juga kian bertumbuh semakin lengkap. Saat ini, banyak sekali service di Linux yang mengirimkan data menggunakan bantuan SSH. Melihat sebentar ke belakang, SSH. com memulai pengembangan SSH original dan melisensikannya di bawah lisensi open source. SSH kemudian menuai sukses dibandingkan dengan deslogin ataupun telnet-ssl (telnet yang melewati koneksi aman) karena kecanggihan dan kemudahan penggunaannya. Sayangnya, beberapa tahun kemudian, SSH.com membangun SSH2 dan melisensikannya di bawah lisensi yang berbeda. Lisensi yang hanya mengizinkan penggunaan bebas untuk lingkungan kerja non komersial. SSH2 ini sebenarnya sangat baik karena dibangun ulang mulai dari level protokol. Source code-nya pun ditulis ulang. Tidak puas dengan kondisi lisensi demikian, orang-orang di belakang Open-
74
INFOLINUX 10/2005
BSD kemudian mengambil kode SSH1 dan mengimplementasikan semua fitur SSH2 dan melisensikannya di bawah lisensi open source, dan menyebutnya sebagai OpenSSH. OpenSSH inilah yang kita pakai di Linux. Sebenarnya, selain Linux, berbagai sistem operasi juga telah memasukkan OpenSSH ke dalam instalasi default, seperti *BSD, Solaris dan MacOS. Satu hal yang perlu dicatat di sini adalah SSH sendiri merupakan protokol yang memiliki banyak implementasi. Ada implementasi yang proprietary dan implementasi yang free. Masing-masing memiliki kelebihan dan kekurangannya sendiri. Bagaimana SSH bekerja? Setiap koneksi akan dienkrip dengan session key yang akan berubah secara periodik. Beberapa pendekatan kriptografi dilakukan untuk memastikan bahwa kita benar-benar terhubung ke server yang diinginkan dan tidak ada orang ditengah-tengah yang mencuri data. Setiap server memiliki pasangan key public/private dan setiap kali koneksi, client akan memeriksa apakah key dari server telah berubah atau tidak. Apabila berubah, client akan menolak untuk melakukan koneksi karena ada kemungkinan percobaan tindak kejahatan. Lebih lanjut, berikut ini, kita akan membahas beberapa isu yang cukup menarik seputar penggunaan SSH.
SSH1 versi 1 Saat ini, SSH2 sudah cukup banyak digunakan. OpenSSH yang terinstal di sistem umumnya mendukung kedua versi SSH tersebut, namun beberapa implementasi secara default akan berbicara menggunakan protokol versi 2. Berikut ini, kita akan membahas sedikit seputar protokol versi 1. Sebelum pembicaraan terjadi, SSH client dan server harus memulai koneksi yang
www.infolinux.web.id
aman. Dalam proses ini, ada proses pertukaran key, password, dan data lainnya. Berikut ini adalah proses-proses bagaimana koneksi aman dilakukan pada SSH1: Client menghubungi server. Ini adalah proses yang sangat sederhana, di mana client mengirimkan request ke port 22 (port standar SSH) milik server. Client dan server saling melihat protokol yang digunakan. Protokol direpresentasikan dalam karakter ASCII. Untuk melihat versi protokol yang digunakan, Anda juga bisa memanfaatkan telnet ke port 22. Client dan server kemudian menggunakan protokol berbasis paket (packetbased protocol). Data di-transport dalam protokol TCP. Server memberikan informasi dirinya kepada client dan menyediakan beberapa parameter session. Lebih detail, server akan mengirim informasi berikut ini dalam kondisi tidak terenkripsi: Host key server, untuk membuktikan identitas host server. Server key server, untuk membantu membuat koneksi aman. Urutan 8 byte random, yang disebut check bytes, Client harus mengikutsertakan check bytes ini pada respon berikutnya, atau server akan menolak respon dari client. Daftar enkripsi, kompresi dan metode authentikasi yang didukung oleh server. Client mengirimkan secret key ke server. Secret key ini juga merupakan session key pertama. Di sini, akan terdapat enkripsi ganda untuk memastikan hanya server yang dituju yang dapat membaca apa yang dikirimkan. Kedua pihak, client dan server akan
TUTORIAL
Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
SSH
memulai proses enkripsi dan mulai menyelesaikan proses authentikasi. Koneksi aman terbentuk.
File konfigurasi yang digunakan SSH server akan membaca file konfigurasi server global yang umumnya disimpan di /etc/ssh/sshd_config. Tanpa file ini, SSH server tidak akan berjalan. SSH client akan membaca file konfigurasi client global yang umumnya disimpan di /etc/ssh/ssh_config. Konfigurasi per user akan disimpan di dalam ~/.ssh/config.
Kompresi Koneksi SSH mendukung fitur kompresi, yang akan mengompres data sebelum dikirim sehingga akan memperkecil ukuran data yang dikirim. Ini sangat berguna ketika Anda mengirimkan data memanfaatkan dialup, misalnya. Untuk mengaktifkan kompresi, berikan opsi -C, sebagai contoh: $ ssh -C [email protected] ls /opt Password: MozillaFirefox OpenOffice.org gnome kde3 ltsp
Kompresi mencakup semua data. Mulai dari stdin, stdout, stderr dan semua data lainnya. Kompresi yang digunakan adalah kompresi yang sama dengan yang digunakan oleh gzip. Seperti disebutkan sebelumnya, pada koneksi yang lambat, kompresi akan sangat membantu. Namun, pada jaringan yang cepat, kompresi bisa saja memperlambat.
komputer B ingin melakukan koneksi kembali ke komputer A, maka pesan peringatan akan ditampilkan, dan ssh akan menolak melakukan koneksi. Program ssh akan memberitahu bahwa kemungkinan akan ada usaha untuk menyerang sistem (manin-the-middle attack). Hal ini adalah wajar karena komputer baru yang menggantikan posisi A memiliki informasi IP yang dimiliki oleh komputer yang digantikan, sementara key-nya berbeda. Apabila Anda yakin bahwa hal tersebut bukan kesalahan, maka Anda bisa menghapus file ~/.ssh/known_hosts ataupun menghapus entri host komputer A (192.168.0.1) di file tersebut. Contoh file ~/.ssh/known_hosts: 192.168.0.1 ssh-rsa AAAAB3NzaC1y c2EAAAABIwAAAIEAv6kCmEtZ0x6cuuC+ Ld0FKSUv3+o+8hiI9Nloy8p65o6EQK+Y C0aPw2/ANd6UMSJAzHdKlbvDHXm2i7Um j0cRFh+TjXgvzE5SQSYjxFrGo4RB 1LGzAa3kRow4d/givET8X1soARtrWvFz gXYwwZ9coAZnYsPB0RUd1orG3ElpZ40= 192.168.0.28 ssh-rsa AAAAB3NzaC1 yc2EAAAABIwAAAIEA5s+zA5NPBcspMP KN4+tswkFbPJVJq4symo9EmcP7HWDBRG jarepNawV+KIDkfK7wWYjegkpVbc8GRZ T3IcfXfB4D2/8GqPS2obpC3knHEC aJVKbCakk1yp4iWUyoR72mT+KWbbaEH
6E2ZmPWCQ96P0mZKGM9QqSYu2n67Sr 7UU=
Contoh pesan kesalahan: ssh [email protected] @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@ IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! Someone could be eavesdropping on you right now (man-in-themiddle attack)! It is also possible that the RSA host key has just been changed. The fingerprint for the RSA key sent by the remote host is 61:43:82:c6:45:87:6a:9a:0a:d8: 6a:41:21:1a:af:42. Please contact your system administrator. Add correct host key in /home/ nop/.ssh/known_hosts to get rid of this message. Offending key in /home/nop/.ssh/ known_hosts:1 RSA host key for 192.168.0.1 has changed and you have requested
Masalah known host Pertama kali Anda mencoba melakukan koneksi ke suatu host, informasi host yang Anda kunjungi akan disimpan ke dalam file ~/.ssh/known_hosts. Daftar host yang dikenali juga bisa disimpan di dalam /etc/ssh/ known_hosts (oleh sysadmin Anda). Sebagai contoh, komputer B (192.168.0.110) melakukan koneksi ke Komputer A (192.168.0.1). Komputer A kemudian akan disimpan sebagai known host komputer B. Suatu hari, komputer A rusak dan digantikan dengan komputer baru, masih menggunakan IP 192.168.0.1. Ketika
Situs Resmi OpenSSH.
www.infolinux.web.id
INFOLINUX 10/2005
75
TUTORIAL
Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
SSH
strict checking. Host key verification failed.
Program yang datang bersama SSH Berikut ini adalah program yang datang bersama paket openssh: scp, untuk melakukan pengopian file antar host dengan aman. Sftp, sebagai ftp client yang aman. Slogin, program untuk melakukan remote login. Program ini ditujukan untuk menggantikan rlogin. Ssh, program secure shell, berguna untuk menjalankan perintah di host lain dengan aman. Ssh-add, program yang berguna untuk menambahkan identitas RSA dan DSA kepada agen authentikasi, ssh-agent. Ssh-agent, program yang berguna untuk menjaga private key yang digunakan untuk authentikasi menggunakan public key. Ssh-copy-id, berguna untuk menginstal identity.pub ke authorized_keys komputer lain. Ssh-keyconverter, berguna untuk mengkonversi public dan private key RSA yang digunakan pada SSH1 ke format yang digunakan oleh SSH2. Ssh-keygen, program untuk membuat key authentikasi dan melakukan pengaturan lebih lanjut. Ssh-keyscan, program yang berguna untuk mendapatkan public ssh host key host-host lain. Sshd, ssh server. Sftp-server, subsystem ssh yang berfungsi sebagai sftp server. Program ini tidak ditujukan untuk dipanggil langsung, melainkan sebagai subsystem sshd. Dengan satu paket OpenSSH, Anda sudah dapat melakukan berbagai pekerjaan remote dengan cara yang sangat mudah dan sekaligus aman. Menjalankan perintah secara remote, meng-copy file antar-host dan melakukan manajemen sistem lanjutan dapat dilakukan dengan hati tenang. Berikut ini adalah contoh penggunaan scp dan sftp, sebagai cara untuk transfer file yang aman.
SCP Program ini berguna untuk meng-copy file
76
INFOLINUX 10/2005
antar host. Kita dapat mengopi dari lokal ke remote ataupun remote ke lokal. Contoh pengopian file lokal ke remote: $ scp -r a [email protected]:/tmp/ Password:
Contoh pengopian file remote ke lokal: $ scp -r [email protected]:/tmp/a . Password:
Sebagai catatan, opsi -r digunakan untuk pengopian secara rekursif.
SFTP SFTP adalah program yang berfungsi sebagai ftp client yang secure. Cara penggunaannya sama seperti halnya dengan penggunaan ftp client biasa. Sebagai contoh: sftp [email protected] Connecting to 192.168.0.1... Password: sftp> ls -l -rwxr--r-1 mei users 32814 Jul 8 19:36 0300469981. jpg drwxr-xr-x 2 nop users 80 Jan 15 2005 Documents drwxr-xr-x 5 nop users 120 Apr 22 22:58 GNUstep lrwxrwxrwx 1 nop users 24 Jan 3 2005 KEANTSYSTEMS drwxr-xr-x 5 nop users 416 May 1 01:27 OpenOffice. org1.1 -rwxr--r-1 nop users 600 Jan 21 09:20 PUTTY.RND drwxr-xr-x 2 nop users 48 Jan 3 2005 bin drwx--x--x 13 nop users 488 Jan 21 17:27 profile drwxr-xr-x 2 nop users 80 Jan 3 2005 public_html sftp> bye
Sebagai catatan, sftp menyediakan perintah dasar untuk bekerja dengan file. Perintahnya tidak akan selengkap ftp client konvensional.
X over SSH Istilah lain yang umum digunakan adalah SSH X forwarding. Seperti diketahui, X adalah sistem kompleks yang mengizin-
www.infolinux.web.id
kan remote display dari komputer satu ke komputer lain melewati jaringan secara transparan. Sayangnya, X sendiri cukup terbuka untuk diserang oleh kalangan penjahat cyber. Di sinilah peran SSH. Setiap data yang melewati SSH akan dienkrip sebelum dikirimkan. Bagaimana X forwarding bekerja? Sebuah ssh client meminta X forwarding pada saat terhubung ke SSH server (diasumsikan X forwarding telah diaktifkan di client). Apabila server mengizinkan X forwarding pada koneksi tersebut, maka proses login akan berjalan normal. Server akan mengatur beberapa langkah tambahan yang transparan bagi user. Sebagai tambahan dalam menangani sesi terminal, server akan mengatur dirinya sebagai X proxy server yang berjalan pada mesin remote dan akan mengatur variabel DISPLAY di remote shell yang mengacu kepada proxy X tersebut. Secara sederhana, SSH server kemudian akan berpura-pura sebagai X server. Pada saat Anda menjalankan X client, client tersebut akan terhubung ke X proxy. Proxy kemudian akan bertindak seolah-olah seperti X server yang sesungguhnya dan akan meminta kepada SSH client untuk bertindak sebagai client X proxy untuk kemudian akan melakukan koneksi ke X server. Client dan server SSH kemudian akan bekerjasama untuk melewatkan informasi protokol X bolak balik melalui SSH di antara dua sesi X. Sebagai catatan, untuk mengaktifkan X forwarding pada client, editlah file /etc/ssh/ ssh_config dan berikan nilai Yes untuk opsi ForwardX11. Bagi Anda yang lebih suka menggunakan VNC daripada X, maka seperti halnya X forwarding, kita juga bisa menerapkan hal yang sama, koneksi melalui SSH. Beberapa pihak memiliki argumen yang mengatakan bahwa VNC forwarding masih lebih aman dibandingkan dengan X forwarding. Satu catatan, selalu gunakan VNC forwarding apabila Anda harus membuka data rahasia lewat jaringan. Informasi mengenai VNC bisa didapatkan di realvnc.com. Pembahasan mengenai SSH X forwarding akan dilakukan secara terpisah.
Verbose untuk informasi lebih lanjut Apabila Anda membutuhkan informasi
Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
TUTORIAL SSH
lebih lanjut tentang apa yang terjadi ketika suatu aksi dilakukan, Anda bisa meminta SSH untuk menampilkan informasi secara lebih verbose. Cukup berikan opsi -v pada saat menjalankan SSH. Pemberikan -vv dan -vvv akan meningkatkan tingkat verbositas. Sebagai contoh, berikut ini adalah penggunaan opsi -v pada saat penggunaan SSH: nop@nop:/home/DATA/NOP/home> ssh -v [email protected] OpenSSH_3.9p1, OpenSSL 0.9.7e 25 Oct 2004 debug1: Reading configuration data /etc/ssh/ssh_config debug1: Applying options for * debug1: Connecting to 192.168.0.110 [192.168.0.110] port 22. debug1: Connection established. debug1: identity file /home/ nop/.ssh/identity type -1 debug1: identity file /home/ nop/.ssh/id_rsa type -1 debug1: identity file /home/ nop/.ssh/id_dsa type 2
debug1: expecting SSH2_MSG_KEX_ DH_GEX_REPLY debug1: Host ‘192.168.0.110’ is known and matches the RSA host key. debug1: Found key in /home/nop/ .ssh/known_hosts:3 debug1: ssh_rsa_verify: signature correct debug1: SSH2_MSG_NEWKEYS sent debug1: expecting SSH2_MSG_ NEWKEYS debug1: SSH2_MSG_NEWKEYS received debug1: SSH2_MSG_SERVICE_REQUEST sent debug1: SSH2_MSG_SERVICE_ACCEPT received [...DIPOTONG...] debug1: Authentications that can continue: publickey,keyboardinteractive debug1: Next authentication method: keyboard-interactive Password:
www.infolinux.web.id
debug1: Authentication succeeded (keyboard-interactive). debug1: channel 0: new [clientsession] debug1: Entering interactive session. debug1: Sending environment. debug1: Sending env LANG = en_US.UTF-8 Last login: Mon Jul 18 15:20:36 2005 from nop.keant.com Have a lot of fun... nop@nop:~> ls bin Documents GNUstep OpenOffice.org1.1.4 public_html temp TransGaming_Drive nop@nop:~>
SSH adalah sistem yang sangat kompleks. Pembahasan kali ini hanya menyentuh sangat sangat kecil bagian dari SSH. Tapi, di luar itu, SSH adalah sistem yang sangat menarik. Berbagai solusi bisa dibangun memanfaatkan SSH. Selamat mencoba! Noprianto ([email protected])
INFOLINUX 10/2005
77