28
INFOLINUX 06/2005 50 TUTORIAL Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial www.infolinux.web.id sudo D i Linux, pengaturan keamanan multiuser berdasarkan adanya pembagian root dan user biasa memang membantu mengurangi banyak gangguan keamanan. Bahwa setiap user disarankan untuk login sebagai user biasa sehingga kalaupun terjadi gangguan ke- amanan, yang terkena efeknya hanya user tersebut, memang harus diakui lebih unggul dibandingkan dengan Windows XP misal- nya, yang mana sebagian besar pengguna login sebagai anggota group Administra- tors. Hal ini pulalah yang membantu Linux lebih tahan terhadap serangan virus dan gangguan keamanan lain. Namun, sistem seperti ini harus diakui juga memiliki keterbatasan, atau lebih te- patnya, lebih kaku. Di Windows, apabila ingin membakar CD misalnya, setelah meng- instal program yang dibutuhkan, user bisa langsung membakar CD tersebut. Begitu- pun dengan instalasi program. User bahkan bisa melakukan instalasi program tanpa masalah berarti. Tentu saja ini terlepas dari akibat instalasi software sembarangan yang berakibat pada gangguan stabilitas dan ke- amanan sistem. Bandingkan dengan kondisi di Linux. Untuk menjalankan program cdrecord saja, root harus campur tangan. User biasa mau meminta bantuan root untuk hal demikian. Begitupun juga dengan instalasi program. Hanya root yang bisa. Tugas root menjadi begitu rumit. Semua harus root. Untunglah, semua kekakuan tersebut menjadi tidak berlaku lagi semenjak hadir- nya sudo di dunia UNIX/Linux. Dengan adanya sudo, kita bisa mendelegasikan se- bagian fungsi administrasi sistem kepada user biasa. Jadi, andaikata kita memiliki 10 user dan dua di antaranya bisa dipercaya menjadi admin untuk tugas tertentu, Anda bisa mendelegasikan tugas instalasi pro- gram kepada user pertama, dan tugas lain kepada user kedua misalnya. Anda juga bisa memberikan hak untuk mengakses program cdrecord (dan device CD writer) kepada se- tiap user biasa. sudo Sebenarnya, apakah sudo dan apa saja fitur yang ditawarkan? Kata sudo berasal dari singkatan superuser do, dan merupakan program yang mengizinkan system admi- nistrator (sysadmin) untuk memberikan hak tertentu kepada satu atau lebih user (atau group) untuk menjalankan sebagian (atau semua) perintah sebagai root (atau- pun user lain apabila diinginkan). Tentu saja, untuk tetap menjaga keamanan, semua aktivitas ketika user menjadi root akan di- log. sudo bekerja pada basis per perintah. Bahkan, termasuk argumen dan opsi yang diizinkan untuk perintah tersebut. Berikut ini adalah rangkuman fitur-fitur sudo: Kemampuan untuk membatasi perintah apa saja yang boleh dilakukan, per host. sudo akan merekam semua aktivitas dalam file log, sehingga nantinya akan memudahkan audit. sudo mempergunakan sistem tiket un- tuk izin menjalankan perintah sebagai root. Pada saat user menjalankan sudo dan memasukkan password yang benar, waktu 5 menit (bisa diubah) akan diberi- kan kepada user tersebut untuk menjadi root. Setiap perintah sebagai root yang dijalankan oleh user akan memperba- harui waktu 5 menit tersebut. Dengan demikian, diharapkan tidak akan ada user yang ‘lupa logout’ ketika sedang be- rada dalam sesi sudo. sudo datang dengan file konfigurasi, ya- itu file /etc/sudoers yang dapat diguna- kan untuk mengontrol semua hak yang diberikan. Kenapa harus sudo? Dengan adanya mekanisme seperti ini, se- tiap user bisa dibatasi, administrasi sistem bisa didelegasikan, dan kita tidak harus memberikan password root kita kepada rekan kerja hanya karena kita tidak berada di tempat dan hak root dibutuhkan pada saat itu (pernah Anda alami?). Dengan fasilitas logging dan hak akses yang dibuat sedemikian teliti, sebenarnya tidak ada lagi alasan untuk tidak menjalankan sudo di lingkungan komputasi besar yang melibat- kan banyak user dan admin. Dengan sudo pula, kita bisa mengimple- mentasikan group semacam PowerUsers di Windows yang dapat memiliki hak ad- ministratif tertentu. Kita bisa membuat group semacam itu di mana semua anggota group tersebut bisa menginstal program, shutdown dan melakukan satu dua hal lain, misalnya. Konsekuensi menggunakan sudo Ketika kita menggunakan sudo yang telah dikonfigurasi dengan benar, user dapat menjadi root (atau user lain sesuai konfi- gurasi) dan menjalankan berbagai program dengan memberikan pola perintah seperti berikut ini: $ sudo <perintah_yang_ membutuhkan_hak_root> [parameter] Memberi Hak Root ke User dengan sudo Di Linux, sebagai root, Anda bisa memberikan sebagian hak Anda kepada user biasa. De- ngan demikian, user biasa tersebut bisa menjalankan perintah yang diizinkan sebagai root. Memudahkan delegasi tugas dan meningkatkan keamanan!

sudo Memberi Hak Root ke User dengan sudoftp.gunadarma.ac.id/pub/linux/magazine/infolinux/Tahun 2005/PDF... · gangguan keamanan. Bahwa setiap user disarankan untuk login sebagai

  • Upload
    lecong

  • View
    227

  • Download
    0

Embed Size (px)

Citation preview

Page 1: sudo Memberi Hak Root ke User dengan sudoftp.gunadarma.ac.id/pub/linux/magazine/infolinux/Tahun 2005/PDF... · gangguan keamanan. Bahwa setiap user disarankan untuk login sebagai

INFOLINUX 06/200550

TUTORIAL Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial

www.infolinux.web.id

sudo

Di Linux, pengaturan keamanan

multiuser berdasarkan adanya

pembagian root dan user biasa

memang membantu mengurangi banyak

gangguan keamanan. Bahwa setiap user

disarankan untuk login sebagai user biasa

sehingga kalaupun terjadi gangguan ke-

amanan, yang terkena efeknya hanya user

tersebut, memang harus diakui lebih unggul

dibandingkan dengan Windows XP misal-

nya, yang mana sebagian besar pengguna

login sebagai anggota group Administra-

tors. Hal ini pulalah yang membantu Linux

lebih tahan terhadap serangan virus dan

gangguan keamanan lain.

Namun, sistem seperti ini harus diakui

juga memiliki keterbatasan, atau lebih te-

patnya, lebih kaku. Di Windows, apabila

ingin membakar CD misalnya, setelah meng-

instal program yang dibutuhkan, user bisa

langsung membakar CD tersebut. Begitu-

pun dengan instalasi program. User bahkan

bisa melakukan instalasi program tanpa

masalah berarti. Tentu saja ini terlepas dari

akibat instalasi software sembarangan yang

berakibat pada gangguan stabilitas dan ke-

amanan sistem.

Bandingkan dengan kondisi di Linux.

Untuk menjalankan program cdrecord saja,

root harus campur tangan. User biasa mau

meminta bantuan root untuk hal demikian.

Begitupun juga dengan instalasi program.

Hanya root yang bisa. Tugas root menjadi

begitu rumit. Semua harus root.

Untunglah, semua kekakuan tersebut

menjadi tidak berlaku lagi semenjak hadir-

nya sudo di dunia UNIX/Linux. Dengan

adanya sudo, kita bisa mendelegasikan se-

bagian fungsi administrasi sistem kepada

user biasa. Jadi, andaikata kita memiliki 10

user dan dua di antaranya bisa dipercaya

menjadi admin untuk tugas tertentu, Anda

bisa mendelegasikan tugas instalasi pro-

gram kepada user pertama, dan tugas lain

kepada user kedua misalnya. Anda juga bisa

memberikan hak untuk mengakses program

cdrecord (dan device CD writer) kepada se-

tiap user biasa.

sudoSebenarnya, apakah sudo dan apa saja fi tur

yang ditawarkan? Kata sudo berasal dari

singkatan superuser do, dan merupakan

program yang mengizinkan system admi-

nistrator (sysadmin) untuk memberikan

hak tertentu kepada satu atau lebih user

(atau group) untuk menjalankan sebagian

(atau semua) perintah sebagai root (atau-

pun user lain apabila diinginkan). Tentu

saja, untuk tetap menjaga keamanan, semua

aktivitas ketika user menjadi root akan di-

log. sudo bekerja pada basis per perintah.

Bahkan, termasuk argumen dan opsi yang

diizinkan untuk perintah tersebut.

Berikut ini adalah rangkuman fi tur-fi tur

sudo:

� Kemampuan untuk membatasi perintah

apa saja yang boleh dilakukan, per host.

� sudo akan merekam semua aktivitas

dalam fi le log, sehingga nantinya akan

memudahkan audit.

� sudo mempergunakan sistem tiket un-

tuk izin menjalankan perintah sebagai

root. Pada saat user menjalankan sudo

dan memasukkan password yang benar,

waktu 5 menit (bisa diubah) akan diberi-

kan kepada user tersebut untuk menjadi

root. Setiap perintah sebagai root yang

dijalankan oleh user akan memperba-

harui waktu 5 menit tersebut. Dengan

demikian, diharapkan tidak akan ada

user yang ‘lupa logout’ ketika sedang be-

rada dalam sesi sudo.

� sudo datang dengan fi le konfi gurasi, ya-

itu fi le /etc/sudoers yang dapat diguna-

kan untuk mengontrol semua hak yang

diberikan.

Kenapa harus sudo?Dengan adanya mekanisme seperti ini, se-

tiap user bisa dibatasi, administrasi sistem

bisa didelegasikan, dan kita tidak harus

memberikan password root kita kepada

rekan kerja hanya karena kita tidak berada

di tempat dan hak root dibutuhkan pada

saat itu (pernah Anda alami?). Dengan

fasilitas logging dan hak akses yang dibuat

sedemikian teliti, sebenarnya tidak ada lagi

alasan untuk tidak menjalankan sudo di

lingkungan komputasi besar yang melibat-

kan banyak user dan admin.

Dengan sudo pula, kita bisa mengimple-

mentasikan group semacam Power Users

di Windows yang dapat memiliki hak ad-

ministratif tertentu. Kita bisa membuat

group semacam itu di mana semua anggota

group tersebut bisa menginstal program,

shutdown dan melakukan satu dua hal lain,

misalnya.

Konsekuensi menggunakan sudoKetika kita menggunakan sudo yang telah

dikonfi gurasi dengan benar, user dapat

menjadi root (atau user lain sesuai konfi -

gurasi) dan menjalankan berbagai program

dengan memberikan pola perintah seperti

berikut ini:

$ sudo <perintah_yang_membutuhkan_hak_root> [parameter]

Memberi Hak Root ke Userdengan sudoDi Linux, sebagai root, Anda bisa memberikan sebagian hak Anda kepada user biasa. De-ngan demikian, user biasa tersebut bisa menjalankan perintah yang diizinkan sebagai root. Memudahkan delegasi tugas dan meningkatkan keamanan!

Page 2: sudo Memberi Hak Root ke User dengan sudoftp.gunadarma.ac.id/pub/linux/magazine/infolinux/Tahun 2005/PDF... · gangguan keamanan. Bahwa setiap user disarankan untuk login sebagai

INFOLINUX 06/2005 51

TUTORIALBerita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial

www.infolinux.web.id

sudo

Konsekuensi sebenarnya dari meng-

gunakan sudo adalah audit. Mau tidak

mau, Anda harus membuat script untuk

memudahkan auditing di syslog Anda,

misalnya.

Ketika user menggunakan sudo, di sys-

log akan terdapat entri yang mirip-mirip de-

ngan contoh berikut:

Feb 9 18:02:50 koljeng sudo: koljeng : TTY=pts/25 ; PWD=/home/koljeng ; USER=root ; COMMAND=/sbin/yast -i

Password yang dimasukkan ketika menjalan sudoKetika user menjalankan perintah meng-

gunakan sudo, user akan diminta untuk

memasukkan password. Anda memiliki dua

pilihan untuk masalah password ini. Yang

pertama adalah mengizinkan user untuk

memasukkan password dirinya sendiri,

dan apabila sukses, maka sudo akan men-

jalankan perintah yang diinginkan. Cara

yang kedua adalah dengan meminta user

untuk memasukkan password user yang

ingin digunakan (dalam hal ini, karena

ingin menjadi root, maka harus mema-

sukkan password root). Yang lebih sering

digunakan adalah cara yang pertama, wa-

lau Anda bebas untuk menggunakan cara

kedua.

Proyek sejenisSudo bukanlah satu-satunya program yang

digunakan untuk kebutuhan delegasi ad-

ministrasi sistem seperti ini. Berikut ini

adalah beberapa program free lain yang

fungsinya mirip dengan sudo:

� SUS (http://pdg.uow.edu.au/sus).

� Super (ftp://ftp.ucolick.org/pub/users/will/).

� runas, bagian dari proyek Titan (http://

www.fi sh.com/titan).

� Erni (http://www.brandxdev.net/), turun-

an dari runas

� priv (http://www.usenix.org/publications/

library/proceedings/lisa96/full_papers/

bchill/bchill.txt).

� calife (http://frmug.org/mutt/calife/).

� osh (http://www.engarde.com/~mcn/osh.

html).

� ssu (http://www.usenix.org/publications/

library/proceedings/lisa98/full_papers/

thorpe/thorpe_html/thorpe.html).

� su1 (http://www.pcug.org.au/~dbell).

Walau demikian, di dunia Linux, sudo

adalah salah satu (dan mungkin satu-satu-

nya) yang paling banyak digunakan.

Integrasi LDAPSeperti telah disinggung sebelumnya bahwa

/etc/sudoers memungkinkan pemberian

hak untuk beberapa host secara tersentral,

fasilitas ini dari hari ke hari semakin kurang

populer karena fungsi tersebut bisa dita-

ngani oleh LDAP, yang sepertinya memang

lebih cocok untuk kebutuhan tersebut. Tu-

lisan ini tidak akan membahas penggunaan

LDAP.

Beberapa contoh penggunaanBerikut ini, kita akan membahas beberapa

contoh penggunaan paket sudo.

Yang pertama adalah mengedit fi le

/etc/sudoers. Anda tidak disarankan untuk

mengedit langsung fi le ini. Sebagai ganti nya,

gunakanlah program visudo yang datang

bersama paket sudo. Program ini harus di-

jalankan oleh root. Contoh:

# visudo

Apabila Anda tidak melakukan peruba-

han, maka setelah keluar, Anda akan men-

jumpai pesan berikut ini:

# visudovisudo: sudoers file unchanged.

Yang kedua, kita akan memahami for-

mat fi le sudoers. FOrmat fi le ini tidak se-

sederhana apa yang terlihat. Apabila mem-

baca dokumentasi sudoers(5), Anda bisa me-

nemukan betapa rumit dan fl eksiblenya fi le

ini. Namun, kita akan membuatnya terlihat

lebih sederhana. Berikut ini adalah format

umum konfi gurasi sudoers:

usernames/group servername = (usernames command can be run as) command

Dengan demikian, apabila Anda ingin

memberikan user koljeng seperti ilustrasi

sebelumnya sehingga bisa menjalankan

/sbin/yast -i, berikanlah baris seperti ini:

koljeng ALL=(root) /sbin/yast -i

Anda dapat menambahkan perintah

yang diizinkan dengan dipisahkan oleh

tanda koma. Contoh berikut akan memper-

lihatkan bagaimana memberikan hak untuk

melakukan shutdown kepada setiap user

yang menjadi anggota group users:

%users localhost=/sbin/shutdown -h now

Apabila ingin memberikan hak kepada

user koljeng dan group users, maka Anda

juga bisa menambahkan pada bagian per-

tama, usernames/group dipisahkan oleh

koma, seperti contoh berikut:

koljeng,%users ALL=(root) /sbin/yast -i

Contoh lain yang mungkin berguna

adalah memberikan hak kepada user untuk

melakukan mount/unmount cdrom seperti

contoh berikut:

%users ALL=/sbin/mount /cdrom,/sbin/umount /cdrom

Di dalam fi le ini, Anda juga bisa mem-

berikan alias untuk perintah, user, dan lain

sebagainya. Contoh yang paling baik adalah

ketika Anda mengizinkan user tertentu un-

tuk menjalankan beberapa modul YaST,

atau memberikan hak untuk menjalankan

semua shell. Tentu saja, daripada menulis-

kan satu per satu perintah YaST lengkap,

Anda dapat membuat alias. User juga dapat

dituliskan menggunakan alias.

Sebagai contoh:

Cmnd_Alias SHELLS = /usr/bin/ sh, /usr/bin/csh, \ /usr/bin/ksh, /usr/ local/bin/tcsh, \ /usr/bin/rsh, /usr/ local/bin/zsh

User_Alias ADMINS = koljeng, %admin

Untuk lebih jelas tentang alias, Anda

selalu bisa merujuk ke halaman manual

sudoers.

Setelah fi le sudoers selesai didefi nisikan,

user segera dapat memanfaatkan sudo se-

suai hak yang diberikan.

Dengan berakhirnya pembahasan ten-

tang memahami format sudoers ini, ber-

akhir pula artikel ini. Selamat mencoba dan

menerapkan sudo!

Noprianto ([email protected])

Page 3: sudo Memberi Hak Root ke User dengan sudoftp.gunadarma.ac.id/pub/linux/magazine/infolinux/Tahun 2005/PDF... · gangguan keamanan. Bahwa setiap user disarankan untuk login sebagai

INFOLINUX 06/200552

TUTORIAL Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial

www.infolinux.web.id

Wx

Setelah membahas tentang bagaimana

menyajikan berbagai bahasa dalam

satu program, kita akan melanjutkan

dengan bagaimana menyediakan tip of the

day pada program Anda, serta bagaimana

memanfaatkan form MDI. Sebagian contoh

program yang dipergunakan akan merujuk

kepada contoh program sebelumnya (yang

mungkin telah Anda modifi kasi).

Tip of the dayBanyak aplikasi ini hadir dengan tip peng-

gunaan yang umum disebut sebagai tip of

the day. Bahwa tip ini dibaca atau tidak oleh

user, harus diakui bahwa penggunaan tip ini

sudah merupakan kelengkapan dari sebuah

aplikasi yang memperhatikan kemudahan

penggunaan oleh user.

Bagi Anda yang memiliki waktu dan

i ngin melakukannya, tip of the day tentu sa-

ja dapat dengan mudah diimplementasikan

menggunakan satu form, satu text control

dan beberapa button. Dengan mengguna kan

double linked list, kita dapat mengimple-

mentasikan penampilan tip-tipnya.

Namun, apabila Anda mempergunakan

Wx, maka pengimplementasian sendiri su-

dah tidak diperlukan lagi karena tip of the

day juga telah disediakan oleh Wx. Luar bi-

asa sekali bukan? Cara penggunaannya juga

sangat mudah.

Kita akan melengkapi aplikasi helloworld

sebelumnya dengan implementasi tip of the

day.

Langkah 1: mempersiapkan tip Buatlah sebuah fi le text dan simpanlah se-

bagai tips.txt. Di dalam fi le ini, kita akan

menuliskan masing-masing tip secara baris

per baris. Berikut ini adalah contoh tips.txt

penulis:

ini adalah tip pertamaini adalah tip keduaini adalah tip ketigaini adalah tip keempatini adalah tip kelima

Langkah 2: memodifikasi helloword.cppSetelah fi le tip kita miliki, kita akan meng-

ubah helloword.cpp untuk mengimplemen-

tasikan tip of the day. Penambahan kode

akan disajikan dalam huruf tebal.

#include <wx/wx.h>#include <wx/tipdlg.h>#include “helloworld.h”#include “MainFrame.h”

IMPLEMENT_APP (wxHelloWorld)

bool wxHelloWorld :: OnInit (){

const wxString langs[] = { _(“(System default)”), _(“Bahasa Indonesia”), };

SetExitOnFrameDelete(FALSE); int lng = wxGetSingleChoiceIndex(_(“Please choose language:”), _(“Language”), WXSIZEOF(langs), langs); SetExitOnFrameDelete(TRUE);

switch (lng) { case 0: locale.Init(wxLANGUAGE_DEFAULT); break; case 1: locale.Init(wxLANGUAGE_INDONESIAN); break; };

locale.AddCatalog(_(“helloworld”));

wxMainFrame *frame = new wxMainFrame (_(“Hello World”), wxPoint (50,50), wxSize (200,200), locale);

frame -> Show (TRUE); SetTopWindow (frame);

wxTipProvider *tip = wxCreateFileTipProvider (_(“tips.txt”), 0); bool showStart = wxShowTip (frame, tip); delete tip;

return TRUE;};

Penjelasan:dengan menambahkan penggunaan header

tipdlg.h, kita sudah bisa membuat tip of the

day dengan mudah (class wxTipProvider).

Dalam penggunaan tip of the day, kita

juga dapat mempergunakan internationali-

zation. Namun, hal ini membutuhkan ba-

nyak usaha dalam penyajian konten. Dari

Wx dan Perancangan User InterfaceBagian 2 dari 2 Artikel

Pada bagian 1 yang lalu, kita telah membahas tentang i18n pada Wx. Di edisi lanjutan ini, kita akan membahas pembuatan tip of the day dan penggunaan form MDI.

Page 4: sudo Memberi Hak Root ke User dengan sudoftp.gunadarma.ac.id/pub/linux/magazine/infolinux/Tahun 2005/PDF... · gangguan keamanan. Bahwa setiap user disarankan untuk login sebagai

INFOLINUX 06/2005 53

TUTORIALBerita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial

www.infolinux.web.id

Wx

sisi pemrograman, cara yang digunakan

tidak banyak berbeda dengan contoh sebe-

lumnya.

Form MDIPemilihan penampilan window juga meru-

pakan hal yang penting dalam perancangan

user interface. Apabila program kita memiliki

kemampuan untuk menampilkan berbagai

dokumen sekaligus, kita harus memperha-

tikan cara penampilannya. Apakah masing-

masing dokumen dibuka dalam window

terpisah, atau menggunakan pendekatan

Multiple Document Interface (MDI).

Terkadang, apabila jumlah window

yang dibuka terlalu banyak, user bisa saja

menganggap suatu program kompleks dan

membingungkan. Namun, penggunaan

MDI juga terkadang memiliki isu soal mu-

dahnya switching antardokumen (maka,

sediakanlah shortcut yang memudahkan.

Shortcut default seringkali menyebalkan).

Masalah ini bukanlah hal sepele. Pemiki-

ran akan penyajian sistem penampilan do-

kumen ini juga merupakan salah satu alasan

hadirnya tab browsing. Dulu, untuk mem-

buka satu halaman web, kita akan membuka

window baru. Namun, karena jumlah win-

dow yang dibuka bisa saja menjadi sangat

banyak, maka desktop akan terlihat sangat

tidak rapi. Terutama apabila Anda melaku-

kan browsing sambil bekerja. Switch antar-

aplikasi juga akan menjadi susah. Dengan

adanya tab browsing, maka desktop akan

terlihat lebih rapi.

Ketika Anda memutuskan akan mem-

pergunakan MDI, perhatikan juga konten

yang akan ditampilkan. Apabila konten

terlalu berat, usahakan untuk tidak mem-

pergunakan MDI. Bisa-bisa, aplikasi tidak

mampu. Ketika diseparasi dalam aplikasi

terpisah (bukan sekadar group proses),

maka risiko crash karena tidak mampu akan

lebih kecil.

Menggunakan wx, form MDI dapat

diterapkan dengan cepat. Contoh aplikasi

kita kali ini adalah aplikasi sederhana satu

form, dengan sebuah menu, sebuah text

control dan sebuah status bar. Ketika user

memilih untuk membuat window baru

dengan mengakses menu yang bersesuaian,

maka window baru akan ditampilkan. Pada

saat window baru dibuat, sebuah menu

baru khusus untuk penanganan child win-

dow akan ditambahkan. Pengguna selan-

jutnya dapat pula mengubah title window

baru ataupun menutup window baru terse-

but. Program ini masih belum lengkap dan

hanya menunjukkan kemampuan wx untuk

bekerja dengan MDI.

Aplikasi kita, sebut saja hello world MDI,

akan terdiri dari fi le-fi le sebagai berikut ini:

� helloword.cpp sebagai tubuh class dari

aplikasi.

� helloword.h sebagai deklarasi class dari

aplikasi.

� MainFrame.cpp sebagai tubuh class

frame utama.

� MainFrame.h sebagai deklarasi class

frame utama.

� ChildFrame.cpp sebagai tubuh class win-

dow anak.

� ChildFrame.h sebagai deklarasi class

window anak.

� makefi le.unx sebagai makefi le.

Berikut ini adalah isi dari helloword.h:

#ifndef HelloWorld_H#define HelloWorld_H

class wxHelloWorld : public wxApp{public: virtual bool OnInit ();

protected: wxLocale locale;

};

DECLARE_APP (wxHelloWorld)

#endif // HelloWorld_H

Berikut ini adalah isi dari helloword.

cpp:

#include <wx/wx.h>#include “helloworld.h”#include “MainFrame.h”

IMPLEMENT_APP (wxHelloWorld)

bool wxHelloWorld :: OnInit ()

Page 5: sudo Memberi Hak Root ke User dengan sudoftp.gunadarma.ac.id/pub/linux/magazine/infolinux/Tahun 2005/PDF... · gangguan keamanan. Bahwa setiap user disarankan untuk login sebagai

INFOLINUX 06/200554

TUTORIAL Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial

www.infolinux.web.id

Wx

{

wxMainFrame * frame = new wxMainFrame ( _(“Hello World MDI”), wxPoint (50,50), wxSize (200,200), locale);

frame -> Show (TRUE); SetTopWindow (frame);

return TRUE;};

Berikut ini adalah isi dari MainFrame.h:

#ifndef MainFrame_H#define MainFrame_H

enum{ MENU_ABOUT = 100, MENU_NEW_WIN, MENU_QUIT,};

class wxMainFrame : public wxMDIParentFrame{public: wxMainFrame (const wxString &title, const wxPoint &pos, const wxSize &size, wxLocale &locale); void OnQuit (wxCommandEvent &event); void OnAbout

(wxCommandEvent &event); void OnNew (wxCommandEvent &event); wxLocale &locale;

protected: DECLARE_EVENT_TABLE ();

private: wxMenuBar *menubar; wxMenu *FileMenu; wxMenu *ChildMenu;

};

#endif// MainFrame_H

Berikut ini adalah isi dari MainFrame.

cpp:

#include <wx/wx.h>#include <wx/mdi.h>#include “MainFrame.h”#include “ChildFrame.h”

BEGIN_EVENT_TABLE (wxMainFrame, wxMDIParentFrame) EVT_MENU (MENU_QUIT, wxMainFrame::OnQuit) EVT_MENU (MENU_ABOUT, wxMainFrame::OnAbout) EVT_MENU (MENU_NEW_WIN, wxMainFrame::OnNew)END_EVENT_TABLE ()

wxMainFrame *frame = (wxMainFrame *) NULL;

wxMainFrame :: wxMainFrame (const wxString &title, const wxPoint &pos, const wxSize &size, wxLocale &l): wxMDIParentFrame ( (wxWindow *) NULL, -1, title, pos, size), locale (l){ CreateStatusBar (2); SetStatusText (_(“Hello World MDI”));

menubar = new wxMenuBar;

FileMenu = new wxMenu; FileMenu -> Append (MENU_ABOUT, _(“&About”), _(“Show about info...”)); FileMenu -> AppendSeparator (); FileMenu -> Append (MENU_NEW_WIN, _(“&New”), _(“New window”)); FileMenu -> AppendSeparator (); FileMenu -> Append (MENU_QUIT, _(“&Quit”), _(“Quit from application...”));

menubar -> Append (FileMenu, _(“&File”));

SetMenuBar (menubar);

Contoh tip of the day pada GIMP. Contoh MDI pada Firefox.

Page 6: sudo Memberi Hak Root ke User dengan sudoftp.gunadarma.ac.id/pub/linux/magazine/infolinux/Tahun 2005/PDF... · gangguan keamanan. Bahwa setiap user disarankan untuk login sebagai

INFOLINUX 06/2005 55

TUTORIALBerita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial

www.infolinux.web.id

Wx

Connect (MENU_QUIT, wxEVT_COMMAND_MENU_SELECTED, (wxObjectEventFunction) &wxMainFrame :: OnQuit); Connect (MENU_NEW_WIN, wxEVT_COMMAND_MENU_SELECTED, (wxObjectEventFunction) &wxMainFrame :: OnNew); Connect (MENU_ABOUT, wxEVT_COMMAND_MENU_SELECTED, (wxObjectEventFunction) &wxMainFrame :: OnAbout);

frame = this;};

void wxMainFrame :: OnQuit (wxCommandEvent &event){ Close (TRUE);};

void wxMainFrame :: OnAbout (wxCommandEvent &event){ wxMessageBox (_(“Hello World MDI Example v0.1”), _(“About Hello World MDI”), wxOK | wxICON_INFORMATION, this);};

void wxMainFrame :: OnNew (wxCommandEvent &event){ wxChildFrame *child = new wxChildFrame( frame , _(“untitled”),wxDefaultPosition, wxDefaultSize, wxDEFAULT_FRAME_STYLE, locale);

};

Berikut ini adalah isi dari ChildFrame.h:

#ifndef ChildFrame_H#define ChildFrame_H

enum{ CHILD_QUIT = 200, CHILD_CHANGE_TITLE,};class wxChildFrame : public wxMDIChildFrame

{public: wxChildFrame (wxMDIParentFrame *parent, const wxString &title, const wxPoint &pos, const wxSize &size, const long style, wxLocale &locale); void OnQuit (wxCommandEvent &event); void OnChangeTitle (wxCommandEvent &event); wxLocale &locale;

protected: DECLARE_EVENT_TABLE ();

private: wxTextCtrl *textctrl; wxMenuBar *menubar; wxMenu *FileMenu; wxMenu *ChildMenu;};

#endif// ChildFrame_H

Berikut ini adalah isi dari ChildFrame.

cpp:

#include <wx/wx.h>#include <wx/mdi.h>#include “ChildFrame.h”#include “MainFrame.h”

BEGIN_EVENT_TABLE (wxChildFrame, wxMDIChildFrame) EVT_MENU (CHILD_QUIT, wxChildFrame :: OnQuit) EVT_MENU (CHILD_CHANGE_TITLE, wxChildFrame :: OnChangeTitle)END_EVENT_TABLE ()

wxChildFrame :: wxChildFrame (wxMDIParentFrame *parent, const wxString &title, const wxPoint &pos, const wxSize &size, const long style, wxLocale &l): wxMDIChildFrame ( parent, -1, title, pos, size, style), locale (l){ CreateStatusBar (2);

Page 7: sudo Memberi Hak Root ke User dengan sudoftp.gunadarma.ac.id/pub/linux/magazine/infolinux/Tahun 2005/PDF... · gangguan keamanan. Bahwa setiap user disarankan untuk login sebagai

INFOLINUX 06/200556

TUTORIAL Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial

www.infolinux.web.id

wxEVT_COMMAND_MENU_SELECTED, (wxObjectEventFunction) &wxChildFrame :: OnQuit); Connect (CHILD_CHANGE_TITLE, wxEVT_COMMAND_MENU_SELECTED, (wxObjectEventFunction) &wxChildFrame :: OnChangeTitle);};

void wxChildFrame :: OnQuit (wxCommandEvent &event){ Close(TRUE);};

void wxChildFrame :: OnChangeTitle (wxCommandEvent &event){ static wxString s_title = _(“untitled”);

wxString title = wxGetTextFromUser(_(“Enter new title”), _(“Change title”), s_title, GetParent()->GetParent()); if ( !title ) return; s_title = title; SetTitle(s_title);};

Berikut ini adalah isi dari makefi le.unx:

CXX = $(shell wx-config --cxx)

PROGRAM = helloworld

OBJECTS = helloworld.o MainFrame.o ChildFrame.o

# implementation

.SUFFIXES: .o .cpp

.cpp.o : $(CXX) -c `wx-config --cxxflags` -o $@ $<

all: $(PROGRAM)

$(PROGRAM): $(OBJECTS) $(CXX) -o $(PROGRAM) $(OBJECTS) `wx-config --libs`

clean: rm -f *.o $(PROGRAM)

Penjelasan:� Class wxMainFrame kini diturunkan

dari class wxMDIParentFrame, semen-

tara class wxChildFrame diturunkan dari

class wx MDIChildFrame. Hal ini telah

disediakan oleh Wx.

� Class wxChildFrame memiliki atribut

FileMenu dan ChildMenu bertipe wx-

Menu. Pada saat child window dibuat

(constructor), kita membuat ulang menu

bar. Dalam pembuatan ulang tersebut,

kita juga membuat menu ChildMenu.

Dengan adanya proses berat di construc-

tor wxChildFrame, maka pembuatan

window baru dari class wxMainFrame

akan terlihat sangat sederhana. Bagus

untuk information hiding.

� Perhatikan konstanta yang digunakan

untuk menu, dalam masing-masing

header, enumerasi kini dimulai dari bi-

langan tertentu. Hal ini untuk mencegah

tumpang tindih hasil enumerasi.

� Sampai saat ini, program ini masih me-

miliki kekurangan. Yang pertama adalah

menu Quit yang hanya berfungsi untuk

menutup child window. Harusnya, diim-

plementasikan untuk menutup aplikasi.

Yang kedua, ketika kita klik pada tombol

close title bar, aplikasi segera menutup

walaupun masih ada child window yang

terbuka. Yang seharusnya adalah men-

gonfi rmasikan kepada user bahwa masih

ada window yang terbuka. Yang ketiga,

kita sebenarnya tidak mendaftar anak-

anak window kita dengan benar. Pada

aplikasi sesungguhnya, semua anak ha-

rus terdaftar dengan baik.

Demikianlah pembahasan kita tentang

perancangan user interface menggunakan

Wx. Tentu saja, artikel ini hanya membahas

sedikit sekali dari aspek perancangan user in-

terface dalam pembuatan aplikasi. Namun,

mulai sekarang dan seterusnya, rasa-rasanya

kita perlu banyak memperhatikan masalah

user interface agar program yang kita hasil-

nya juga dapat dinikmati oleh banyak pihak.

Canggih dan aman juga harus mudah dan

enak digunakan. Ini penting sekali.

Noprianto ([email protected])

Wx

SetStatusText (_(“Hello World MDI”));

textctrl = new wxTextCtrl (this, -1, wxString (_(“Halo”)), wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE);

menubar = new wxMenuBar;

FileMenu = new wxMenu; FileMenu -> Append (MENU_ABOUT, _(“&About”), _(“Show about info...”)); FileMenu -> AppendSeparator (); FileMenu -> Append (MENU_NEW_WIN, _(“&New”), _(“New window”)); FileMenu -> AppendSeparator (); FileMenu -> Append (MENU_QUIT, _(“&Quit”), _(“Quit from application...”));

ChildMenu = new wxMenu; ChildMenu -> Append (CHILD_QUIT, _(“&Close”), _(“Close child”)); ChildMenu -> Append (CHILD_CHANGE_TITLE, _(“C&hange title”), _(“Change title...”));

menubar -> Append (FileMenu, _(“&File”)); menubar -> Append (ChildMenu, _(“&Child”));

SetMenuBar (menubar);

Connect (MENU_QUIT, wxEVT_COMMAND_MENU_SELECTED, (wxObjectEventFunction) &wxMainFrame :: OnQuit); Connect (MENU_NEW_WIN, wxEVT_COMMAND_MENU_SELECTED, (wxObjectEventFunction) &wxMainFrame :: OnNew); Connect (MENU_ABOUT, wxEVT_COMMAND_MENU_SELECTED, (wxObjectEventFunction) &wxMainFrame :: OnAbout);

Connect (CHILD_QUIT,

Page 8: sudo Memberi Hak Root ke User dengan sudoftp.gunadarma.ac.id/pub/linux/magazine/infolinux/Tahun 2005/PDF... · gangguan keamanan. Bahwa setiap user disarankan untuk login sebagai
Page 9: sudo Memberi Hak Root ke User dengan sudoftp.gunadarma.ac.id/pub/linux/magazine/infolinux/Tahun 2005/PDF... · gangguan keamanan. Bahwa setiap user disarankan untuk login sebagai

INFOLINUX 06/200558

TUTORIAL Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial

www.infolinux.web.id

Monitoring server menjadi pen-

ting, misalnya bila tiba-tiba

anda akan melakukan back-up

data tiap akhir bulan dan koneksi Inter-

net Anda putus. Metode yang akan penulis

terangkan tidak hanya terbatas untuk yang

terkoneksi ke Internet, tetapi juga untuk

jaringan LAN. Dalam hal ini yang terpen-

ting adalah:

1. SMS gateway (Kannel).

2. Library browser perl (Perl-libwww).

3. Bash shell scripting.

4. Crontab.

Prinsip untuk memonitor server ini

adalah sebagai berikut:

� Server akan mengirimkan perintah ping

ke suatu server, kemudian dari hasil res-

pon tersebut dapat dianalisis bahwa ser-

ver tersebut masih tersambung de ngan

Internet atau tidak.

� Pengetesan dan analisis dilakukan de-

ngan bash script.

� Untuk melakukan pengecekan tiap waktu

menggunakan task scheduler (crontab)

yang telah dibahas pada InfoLINUX edisi

Juli 2004.

Instalasi SMS gateway kannelMengapa kannel? Karena kannel adalah SMS

gateway yang free dan kompatibel dengan

ponsel phase 2+ dan juga GSM modem.

Cara instalasi:1. Cari tempat download source atau

paket. Penginstalan menggunakan source (versi

CVS). Versi CVS adalah versi yang ter-

baru. Versi CVS dan versi yang stabil

dapat di-download dari www.kannel.org.

Pertama, buat direktori gateway untuk

menampung hasil download:

root]# mkdir gateway

2. Buatlah bash script kannel.sh dengan

perintah cat atau teks editor kesukaan

Anda. Script ini untuk men-download

paket dari server CVS.

root]# cat > kannel.sh#!/bin/shcvs -d:pserver:[email protected]:/home/cvs logincvs -d:pserver:[email protected]:/home/cvs co gateway[Ctrl] [D]root]#

Catatan: Tekan Ctrl-D itu untuk menga-

kiran pengetikan dan menyimpan men-

jadi fi le kannel.sh.

3. Ubah mode atau atribut fi le kannel.sh

agar dapat dieksekusi dengan memberi

+x.

root]# chmod +x kannel.sh

4. Mulai download dengan menjalankan

program kannel.sh. Asumsinya, konfi -

gurasi server sudah terhubung ke jari-

ngan dan dapat mengakses server CVS di

Internet.

root]# ./kannel.sh

Tunggu sampai selesai download. Hasil

download ada di direktori gateway yang

telah Anda buat di komputer yang akan

menjadi gateway. Karena kannel dalam

hal ini hanya digunakan sebagai moni-

toring server, Kannel hanya untuk mengi-

rimkan SMS. Jadi penggunaan kannel

tidak dioptimalkan untuk selain itu.

5. Masuk direktori gateway tersebut, lalu

jalankan konfi gurasi dan instalasi.

root]# cd gateway gateway]# ./configure –enable-start-stop-daemongateway]# touch .dependgateway]# make dependgateway]# makegateway]# make install

6. Buat fi le-fi le konfi gurasi. Dalam contoh

ini penulis menggunakan nama fi le sms.

conf, modems.conf, smsbox.conf, dan

sendsms.conf. Simpan fi le-fi le tersebut

pada direktori /etc/kannel/.

Contoh fi le sms.conf:group = coreadmin-port = 13000smsbox-port = 13001admin-password = barstatus-password = foo#admin-deny-ip = “”#admin-allow-ip = “”log-file = “/var/log/kannel/bearerbox.log”log-level = 0access-log = “/var/log/kannel/bearerbox_access.log”store-file = “/var/log/kannel/kannel.store”box-allow-ip = “127.0.0.1;192.168.*.*”box-deny-ip = “*.*.*.*”

# SMSC CONNECTIONSgroup = smscsmsc = at

SMS Gateway

Memonitor Koneksi Server dengan SMS GatewayBila Anda seorang admin atau pengelola server, tentunya ingin selalu memonitor koneksi server. Misalnya, apakah dalam keadaan terhubung ke Internet atau tidak. Dengan SMS gateway, Anda dapat menerima laporan status koneksi itu melalui SMS.

Page 10: sudo Memberi Hak Root ke User dengan sudoftp.gunadarma.ac.id/pub/linux/magazine/infolinux/Tahun 2005/PDF... · gangguan keamanan. Bahwa setiap user disarankan untuk login sebagai

INFOLINUX 06/2005 59

TUTORIALBerita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial

www.infolinux.web.id

smsc-id = GSMModemmodemtype = iTegno#modemtype = ME45#modemtype = ericsson_t68#modemtype = siemens_c60device = /dev/ttyUSB0#device = /dev/ttyS0speed = 115200#speed = 96000sim-buffering = truemy-number = +62817777777validityperiod = 168

# MODEMinclude = “modems.conf”

# SMSBOX SETUPinclude = “smsbox.conf”

# SEND-SMS USERSinclude = “sendsms.conf”

Contoh fi le modem.conf:group = modemsid = iTegnodetect-string = “WAVECOM”detect-string2 = “MODEM”speed = 115200need-sleep = truesendline-sleep = 10message-storage = “SM”#enable-mms = true#no-pin = true#no-smsc = true

group = modemsid = ME45need-sleep = falsesendline-sleep = 1000message-storage = “MT”#enable-mms = true

group = modemsid = ericsson_t68name = “Ericsson T68”detect-string = “T68”init-string = “ATQ0E1V1”keepalive-cmd = “AT+CBC;+CSQ”broken = true#message-storage= “ME”#no-smsc = true#if you want direct message indication instead of sim buffering

#init-string = “AT+CNMI=3,3”

group = modemsid = siemens_c60name = “Siemens C60”init-string = “AT+CSMS=1+CNMI=1,2,0,0,1”enable-hwhs = “AT\Q3”need-sleep = true

Contoh fi le smsbox.conf:group = smsboxbearerbox-host = localhostsmsbox-id = SMSboxsendsms-port = 13013#global-sender = 13013#sendsms-chars = “0123456789 +-”log-file = “/var/log/kannel/smsbox.log”log-level = 2access-log = “/var/log/kannel/smsbox_access.log”

Contoh fi le sendsms.conf:group = sendsms-userusername = testerpassword = foobarname = SMSThrowerconcatenation = truemax-messages = 99user-deny-ip = “*.*.*.*”user-allow-ip = “127.0.0.1;192.168.*.*”#faked-sender = “+62817309405”

7. Buat direktori /var/log/kannel un-

tuk menyimpan log dari sms gateway.

Dalam contoh ini penulis memberikan

contoh konfi gurasi untuk ponsel Sonny

Ericsson T68/T68i, Siemens C60, Sie-

mens ME45, dan modem GSM Itegno.

Perhatikan sms.conf, bagian SMSC

CONNECTIONS, yang menunjukkan

penulis menggunakan modem GSM

iTegno.

root]# mkdir /var/log/kannel

8. Jalankan program daemon.

root]# cd /usr/local/sbinsbin]#./start-stop-daemon --start --exec bearerbox sms.conf &sbin]#./start-stop-daemon --

start --exec smsbox sms.conf &

Install modul atau paket perl-libwwwModul ini membantu kita untuk berinter-

aksi dengan suatu website melalui konsol.

Dalam hal ini diasumsikan Perl sudah ter-

install. Penulis menggunakan distro Man-

drake 10 Powerpack yang sudah menyer-

takan modul ini. Cara mengetes apakah

sudah terinstal, yaitu:

root]# GET -e ‘www.google.com’Cache-Control: privateConnection: closeDate: Mon, 28 Jun 2004 18:22:11 GMTServer: GWS/2.1Content-Length: 2017Content-Type: text/htmlContent-Type: text/html; charset=ISO-8859-1Client-Date: Mon, 28 Jun 2004 18:22:39 GMTClient-Peer: 216.239.57.99:80Client-Response-Num: 1<....dipotong....>

Script di atas menunjukkan perl-libwww

sudah terinstal. Bila belum terinstal dan

distro Linux yang Anda gunakan belum me-

nyertakan dalam CD-nya, maka Anda dapat

download paket perl-libwww dari Internet.

Berikut ini perintah menginstal paket RPM

untuk Mandrake:

root]# rpm -ivh perl-libwww-perl-5.76-3mdk.noarch.rpm

Kemudian test dengan user tester dan

pass foobar.

# GET -e ‘http://

SMS Gateway

Komputer SMS gateway dan modem gsm iTegno.

Page 11: sudo Memberi Hak Root ke User dengan sudoftp.gunadarma.ac.id/pub/linux/magazine/infolinux/Tahun 2005/PDF... · gangguan keamanan. Bahwa setiap user disarankan untuk login sebagai

INFOLINUX 06/200560

TUTORIAL Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial

www.infolinux.web.id

localhost:13013/cgi-bin/sendsms?user=tester&pass=foobar&from=somebody&to=%2b6281999&text=hello%20world’

Perintah di atas akan mengirim SMS

ke nomor 6281999, dengan pesan “hello

world”. Jika nomor HP tersebut menerima

SMS, berarti konfi guasi Kannel dan perl-

libwww berhasil.

Membuat program analisisUntuk menentukan koneksi Internet kita

terputus atau tidak, kita akan membuat

Bash script pod.sh . Penulis menggunakan

methode ping. File ini agak panjang, se-

hingga agar mudah gunakan teks editor,

misalnya vi. Untuk menyimpan pengetikan

dengan vi, tekan ESC:wq.

root]# cd /usr/local/sbin/sbin]# vi pod.sh#!/bin/shecho ‘tunggu sebentar....’hasil=$(ping -c 1 $1|head -n 2|tail -n 1)hasil=${hasil:0:2}if [ “$hasil” != “64” ]then idup=$(cat urip.txt) if [ “$idup” = 1 ] then echo 0 > urip.txt echo ‘servernya nggak konek’ jam=$(date +”%H:%M:%S”) echo $jam #GET -e “http://localhost:13013/cgi-bin/sendsms?user=tester&pass=foobar&from=somebody&to=%2b62817309405&text=Servernya%20nggak%20konek%20boz%20pada%20$jam” else echo ‘Servernya tetep nggak konek boz’ fielse idup=$(cat urip.txt) if [ “$idup” = 0 ] then echo 1 > urip.txt echo ‘horeeee hidup lagi’ #GET -e ‘http://localhost:13013/cgi-bin/sendsms?user=tester&pass=foobar&from=som

ebody&to=%2b62817309405&text=Servernya%20konek%20lagi%20boz’ else echo ‘servernya tetep ok’ fifi

Ubah menjadi fi le yang dapat dieksekusi:

sbin]# chmod +x pod.shsbin]# touch urip.txt

Untuk melakukan test pada skrip ini tu-

liskan perintah berikut:

#/usr/local/sbin/pod.sh 10.2.6.228 tunggu sebentar.... servernya tetep ok

Host 10.2.6.228 di atas merupakan

contoh dari penulis. Kondisi awal dari

komputer yang dimonitor adalah hidup,

yaitu dengan nilai 1 pada berkas /usr/local/

sbin/urip.txt. Skrip pod.sh akan me ngirim

SMS ke no 6281999 apabila terjadi peruba-

han status keadaan komputer yang dimo-

nitoring. Skrip tersebut akan melakukan

ping terhadap komputer 10.2.6.228, apa-

bila komputer dalam keadaan hidup maka

akan membalas perintah ping dan tidak

me ngubah status, sehingga tidak mengi-

rimkan SMS.

Potongan skrip tentang ping di atas

adalah:

hasil=$(ping -c 1 $1|head -n 2|tail -n 1)

Perintah ping dengan 1 paket data dan

hasilnya diambil pada perintah baris kedua:

hasil=${hasil:0:2}

Skrip di atas berarti mengambil huruf

ke-0 sebanyak 2 untuk dianalisis. Apabila

komputer tetap hidup jawabannya adalah:

64 bytes from 10.2.6.228: icmp_seq=1 ttl=64 time=0.140 ms

Skrip di atas mengambil sebanyak 2 dari

huruf ke-0 yaitu 64 ini berarti komputer

tersebut hidup. Sedangkan bila komputer

tersebut mati, hasilnya adalah:

From 10.2.6.5 icmp_seq=1 Destination Host Unreachable

Skrip di atas mengambil sebanyak 2 huruf

mulai huruf ke-0 yaitu Fr. Perubahan status

akan ditulis dalam berkas bernama urip.txt

pada direktori /usr/local/sbin/. Apabila ter-

jadi perubahan status, maka secara otomatis

melakukan pengiriman ke no 6281999. Jika

perubahan dari status 0 (terputus) ke status

1 (terhubung) akan mengirimkan pesan

“Servernya konek lagi boz”. Sedangkan bila

perubahan dari status 1 (terhubung) ke sta-

tus 0 (terputus) akan mengirimkan pesan

“Servernya nggak konek boz pada $jam”.

$jam di sini sesuai dengan jam komputer

SMS gateway.

Mengatur jadwal pengecekan den-gan crontabUntuk menjalankan skrip ini bisa sebagai

user biasa (bukan root).

$ crontab -e

Tekan tombol [i] atau [insert], kemu-

dian isi sebagai berikut:

5 * * * /usr/local/sbin/pod.sh 10.2.6.228 >/dev/null

Simpan dengan menekan ESC:wq.

Artinya tiap 5 menit akan mengecek

koneksi ke alamat ip 10.2.6.228, dan me-

ngirim hasilnya ke SMS, tanpa memberikan

laporan ke e-mail account crontab Anda.

Anda bisa mengubah alamat IP dan me-

ngubah delay waktu tersebut.

Sebelum Anda meninggalkan server

gateway, pastikan bahwa program daemon

crond sudah diatur menyala pada saat boot-

ing. Sebagian besar distro Linux memiliki

direktori /etc/rcX.d/ untuk mengatur pro-

gram (service) apa saja yang dijalankan saat

booting. X adalah nomor init, yang nilainya

antara 0 hingga 6. Nomor init untuk boot-

ing dicantumkan dalam fi le /etc/inittab pada

baris id:X:initdefault:. Jadi, jika X adalah 3,

lihat direktori /etc/rc3.d/ dan pastikan huruf

paling depan fi le xyzcrond adalah S, misal-

nya S60crond. Jika masih K60crond, rename

dengan perintah mv K60crond S60crond.

Setelah crontab terpasang, maka se-

tiap 5 menit komputer gerbang SMS akan

memonitor komputer yang beralamat

10.2.6.228. Skrip pod.sh di atas bisa dikem-

bangkan dengan metode yang lebih akurat

misalnya dengan mengamati port dengan

nmap. Selamat berkreasi!

Ryan Fabella ([email protected])

SMS Gateway

Page 12: sudo Memberi Hak Root ke User dengan sudoftp.gunadarma.ac.id/pub/linux/magazine/infolinux/Tahun 2005/PDF... · gangguan keamanan. Bahwa setiap user disarankan untuk login sebagai

INFOLINUX 06/2005 61

TUTORIALBerita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial

www.infolinux.web.id

checkinstall

Dalam penggunaan sistem Linux

sehari-hari, terkadang kita diha-

dapkan pada masalah manajemen

software yang kita kompilasi dan instalasi

dari source. Jika software tersebut menye-

diakan rule “uninstall” dalam fi le Make-

fi le-nya maka beruntunglah kita, karena

kita dapat meng-uninstall program software

tersebut dengan menggunakan perintah

make uninstall.

Namun, agar dapat menggunakan pe-

rintah tersebut kita harus memiliki direk-

tori tempat kita mengompilasi software

tersebut. Dalam sistem saya, setelah berhasil

menginstalasi sebuah software dari tarball-

nya, saya selalu menghapus direktori tempat

pembuatan software tersebut, demi penghe-

matan ruang harddisk. Celakalah saya bila

demikian, karena sulit menggunakan make

uninstall.

Untunglah masalah ini ternyata ti-

dak hanya dialami oleh saya seorang. Dan

beruntungnya lagi telah ada solusi untuk

masalah ini, yaitu software checkinstall

yang dikembangkan oleh Felipe Eduardo Sanchez Diaz Duran (izto at asic-linux.com.

mx). Hebatnya lagi checkinstall mendu-

kung paket software RPM, DEB, dan TGZ

milik Slackware.

Tanpa berpanjang lebar lagi, mari kita

mulai menggunakan checkinstall dengan

terlebih dulu menginstalasinya.

Instalasi checkinstall Software checkinstall dapat diperoleh di

http://asic-linux.com.mx/~izto/checkinstall/.

Versi terakhir saat artikel ini ditulis adalah

1.6.0beta4. (Saat Anda membaca artikel ini

kemungkinan besar versi 1.6.0 telah terse-

dia).

Setelah berhasil men-download-nya,

ikutilah panduan berikut ini untuk mengin-

stalasi checkinstall:

� Mengekstraksi tarball checkinstall.

$ tar xvzpf checkinstall-1.6.0beta4.tgz

� Pindah ke direktori checkinstall.

$ cd checkinstall-1.6.0beta4/

� Kompilasi checkinstall.

$ make

Berikut ini adalah prosesnya:

make -C installwatch-0.7.0beta4make[1]: Entering directory `/home/tedi/checkinstall-1.6.0beta4/installwatch-0.7.0beta4’./create-localdeclsChecking truncate argument type... off_tChecking libc version... libc.so.6Checking glibc subversion... Treated as glibc >= 2.1 (finger crossed)gcc -Wall -c -D_GNU_SOURCE -DPIC -fPIC -D_REENTRANT -DVERSION=\”0.7.0beta3\” installwatch.c

ld -shared -o installwatch.so installwatch.o -ldl -lcmake[1]: Leaving directory `/home/tedi/checkinstall-1.6.0beta4/installwatch-0.7.0beta4’

� Instalasi checkinstall. Bila tidak ada ke-

salahan dalam proses kompilasi, kita

dapat menginstalasi checkinstall dengan

cara :

$ su# make install

Proses instalasinya adalah sebagai beri-

kut:

make -C installwatch-0.7.0beta4make[1]: Entering directory `/home/tedi/checkinstall-1.6.0beta4/installwatch-0.7.0beta4’./create-localdeclsChecking truncate argument type... off_tChecking libc version... libc.so.6Checking glibc subversion... Treated as glibc >= 2.1 (finger crossed)gcc -Wall -c -D_GNU_SOURCE -DPIC -fPIC -D_REENTRANT -DVERSION=\”0.7.0beta3\” installwatch.cld -shared -o installwatch.so installwatch.o -ldl -lc

checkinstall: Memanajemen Software di Sistem dengan MudahKita kadang perlu mengompilasi dan menginstalasi software dari source. Lalu timbul ma-salah bila kita ingin menghapus software tersebut dari sistem kita, yaitu bagaimana cara menghapusnya. Ingin tahu jawabannya? Baca terus artikel ini.

Page 13: sudo Memberi Hak Root ke User dengan sudoftp.gunadarma.ac.id/pub/linux/magazine/infolinux/Tahun 2005/PDF... · gangguan keamanan. Bahwa setiap user disarankan untuk login sebagai

INFOLINUX 06/200562

TUTORIAL Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial

www.infolinux.web.id

checkinstall

make[1]: Leaving directory `/home/tedi/checkinstall-1.6.0beta4/installwatch-0.7.0beta4’tedi@suse:~/checkinstall-1.6.0beta4> suPassword:suse:/home/tedi/checkinstall-1.6.0beta4 # make installmake -C installwatch-0.7.0beta4make[1]: Entering directory `/home/tedi/checkinstall-1.6.0beta4/installwatch-0.7.0beta4’make[1]: Nothing to be done for `all’.make[1]: Leaving directory `/home/tedi/checkinstall-1.6.0beta4/installwatch-0.7.0beta4’cp checkinstall makepak /usr/local/sbinmake -C installwatch-0.7.0beta4 install

make[1]: Entering directory `/home/tedi/checkinstall-1.6.0beta4/installwatch-0.7.0beta4’if [ -r /usr/local/lib/installwatch.so ]; then rm -f /usr/local/lib/installwatch.so;cp installwatch.so /usr/local/lib; else cp installwatch.so /usr/local/lib;fised -e “s|#PREFIX#|/usr/local|” < installwatch > /usr/local/bin/installwatchchmod 755 /usr/local/bin/installwatchmake[1]: Leaving directory `/home/tedi/checkinstall-1.6.0beta4/installwatch-0.7.0beta4’mkdir -p /usr/local/lib/checkinstall/localemkdir -p /usr/local/lib/checkinstall/locale/es/LC_MESSAGEScp locale/checkinstall-es.mo /usr/local/lib/checkinstall/locale/es/LC_MESSAGES/

checkinstall.mocp checkinstallrc-dist /usr/local/lib/checkinstallif ! [ -f /usr/local/lib/checkinstall/checkinstallrc ]; then cp /usr/local/lib/checkinstall/checkinstallrc-dist /usr/local/lib/checkinstall/checkinstallrc; else echo; echo -e “\n===================================\n\nAn existing checkinstallrc file has been found.\nThe one from this distribution can be found at:\n\n\t/usr/local/lib/checkinstall/checkinstallrc-dist\n\n====================================\n\n”;echo ;fi

=============================An existing checkinstallrc file has been found.The one from this distribution can be found at:

/usr/local/lib/checkinstall/checkinstallrc-dist

=============================

Ya, Anda mungkin akan memprotes,

mengapa kita masih menggunakan make

install? Karena checkinstall belum terin-

stalasi di sistem kita.

Selanjutnya kita akan menjalankan

checkinstall untuk menginstalasi check-

install:

� Jalankan checkinstall.

# ./checkinstall

checkinstall 1.6.0beta4, Copyright 2002 Felipe Eduardo Sanchez Diaz Duran This software is released under the GNU GPL.

Please choose the packaging method you want to use.Slackware [S], RPM [R] or Debian [D]? R

********************************* RPM package creation selected ********************************This package will be built according to these values:1 - Summary: [ CheckInstall installations tracker, version 1.6.0beta4 ]2 - Name: [ checkinstall ]3 - Version: [ 1.6.0beta4 ]4 - Release: [ 1 ]5 - License: [ GPL ]6 - Group: [ Applications/System ]7 - Architecture: [ i386 ]8 - Source location: [ checkinstall-1.6.0beta4 ]9 - Alternate source location: [ ]10 - Provides: [ checkinstall ]11 - Requires: [ ]Enter a number to change any of them or press ENTER to continue:

Installing with make install...

==== Installation results ====make -C installwatch-0.7.0beta4

...

Copying files to the temporary directory...OKStriping ELF binaries and libraries...OKCompressing man pages...OKBuilding file list...OKBuilding RPM package...OKNOTE: The package will not be installedErasing temporary files...OKWriting backup package...OKDeleting temp dir...OK

*****************************

Done. The new package has been saved to

Page 14: sudo Memberi Hak Root ke User dengan sudoftp.gunadarma.ac.id/pub/linux/magazine/infolinux/Tahun 2005/PDF... · gangguan keamanan. Bahwa setiap user disarankan untuk login sebagai

INFOLINUX 06/2005 63

TUTORIALBerita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial

www.infolinux.web.id

checkinstall

/usr/src/packages/RPMS/i386/checkinstall-1.6.0beta4-1.i386.rpm You can install it in your system anytime using:

rpm -i checkinstall-1.6.0beta4-1.i386.rpm*****************************

� Instalasi checkinstall versi RPM.

# rpm -ivh /usr/src/packages/RPMS/i386/checkinstall-1.6.0beta4-1.i386.rpmPreparing... ############################## [100%] 1:checkinstall ############################## [100%]

� Telah terinstalasi? Mari kita coba lihat

apakah checkinstall telah terinstalasi, di

sini kita akan menggunakan program

rpm:

$ rpm -qi checkinstall

Keluaran dari perintah ini dapat dilihat

pada pada box 1.

Yes, checkinstall telah berhasil terinsta-

lasi di sistem kita.

Selanjutnya kita akan menggunakan

checkinstall untuk menginstalasi soft-

ware xine-lib. Anda dapat saja menggu-

nakan software lainnya.

Membuat RPM dengan checkinstall Berikut ini adalah langkah-langkah yang

kita lakukan untuk membuat RPM xine-lib

dengan menggunakan checkinstall:

� Download software xine-lib dari Website

Xine (http://www.xinehq.de).

� Ektraksi tarball xine-lib.

tar xvzpf xine-lib-1.0.tar.gz

� Konfi gurasi xine-lib.

cd xine-lib-1.0./configure --prefix=/usr

Opsi -prefi x akan membuat xine-lib di-

instalasi pada direktori /usr.

Tunggulah beberapa saat sementara

proses konfi gurasi berjalan. Setelah

proses konfi gurasi selesai, kita lanjutkan

dengan mengompilasi xine-lib.

Berikut ini adalah hasil konfi gurasi xine-

lib di sistem saya:

...

* post effect plugins: * planar video effects: - invert - expand - eq - eq2 - boxblur - denoise3d - unsharp - tvtime * SFX: - goom - oscope - fftscope - mosaico

* video driver plugins: - XShm (X11 shared memory) - Xv (XVideo *static*) - fb (Linux framebuffer device) - dxr3 (Hollywood+ and Creative dxr3, mpeg video only) - vidix (X11 and framebuffer support)

* audio driver plugins: - oss (Open Sound System)

� Kompilasi xine-lib.

make

Jika dalam proses kompilasi ini tidak ada

kesalahan, pada akhir proses akan tam-

pak tampilan sebagai berikut:

Making all in includemake[3]: Entering directory `/home/tedi/xine-lib-1.0/win32/include’make[3]: Nothing to be done for `all’.make[3]: Leaving directory `/home/tedi/xine-lib-1.0/win32/include’make[3]: Entering directory `/home/tedi/xine-lib-1.0/win32’make[3]: Nothing to be done for `all-am’.make[3]: Leaving directory `/home/tedi/xine-lib-1.0/win32’make[2]: Leaving directory `/home/tedi/xine-lib-1.0/win32’make[2]: Entering directory `/home/tedi/xine-lib-1.0’make[2]: Leaving directory `/home/tedi/xine-lib-1.0’

Selanjutnya bila checkinstall telah terinstalasi dengan benar, maka akan muncul informasi

sebagai berikut:

Name : checkinstall Relocations: (not relocatable)Version : 1.6.0beta4 Vendor: (none)Release : 1 Build Date: Fri 07 Jan 2005 09:55:47 PM WITInstall date: Fri 07 Jan 2005 09:56:12 PM WIT Build Host: (none)Group : Applications/System Source RPM: checkinstall-1.6.0beta4-1.src.rpmSize : 263973 License: GPLSignature : (none)Packager : checkinstall-1.6.0beta4Summary : CheckInstall installations tracker, version 1.6.0beta4Description :CheckInstall installations tracker, version 1.6.0beta4

CheckInstall keeps track of all the files created or modified by your installation script (“make install” “make install_modules”, “setup”, etc), builds a standard binary package and installs it in your system giving you the ability to uninstall it with yourdistribution’s standard package management utilities. Distribution: (none)

Box 1. Hasil keluaran perintah: $ rpm -qi checkinstall.

Page 15: sudo Memberi Hak Root ke User dengan sudoftp.gunadarma.ac.id/pub/linux/magazine/infolinux/Tahun 2005/PDF... · gangguan keamanan. Bahwa setiap user disarankan untuk login sebagai

INFOLINUX 06/200564

TUTORIAL Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial

www.infolinux.web.id

make[1]: Leaving directory `/home/tedi/xine-lib-1.0

� (Opsional) Melakukan tes terhadap hasil

kompilasi.

make check

� Instalasi menggunakan checkinstall.

$ suPassword:# /usr/local/sbin/checkinstall

Berikut ini adalah prosesnya:

checkinstall 1.6.0beta4, Copyright 2002 Felipe Eduardo Sanchez Diaz Duran This software is released under the GNU GPL.

The package documentation directory ./doc-pak does not exist.Should I create a default set of package docs? [y]: y

Preparing package documentation...OK

Please choose the packaging method you want to use.Slackware [S], RPM [R] or

Debian [D]? R

Please write a description for the package.End your description with an empty line or EOF.>> xine-lib >>

********************************* RPM package creation selected ********************************

This package will be built according to these values:

1 - Summary: [ xine-lib ]2 - Name: [ xine-lib ]3 - Version: [ 1.0 ]4 - Release: [ 1 ]5 - License: [ GPL ]6 - Group: [ Applications/ System ]7 - Architecture: [ i386 ]8 - Source location: [ xine- lib-1.0 ]9 - Alternate source location: [ ]10 - Provides: [ xine-lib ]11 - Requires: [ ]

Enter a number to change any of them or press ENTER to continue:

Kita ingin mengubah “Summary”-nya

karena kurang deskriptif:

Enter a number to change any of them or press ENTER to continue: 1Enter new summary:>> a free multimedia engine

This package will be built according to these values:

1 - Summary: [ a free multimedia engine ]2 - Name: [ xine-lib ]3 - Version: [ 1.0 ]4 - Release: [ 1 ]5 - License: [ GPL ]6 - Group: [ Applications/ System ]7 - Architecture: [ i386 ]8 - Source location: [ xine- lib-1.0 ]9 - Alternate source location: [ ]10 - Provides: [ xine-lib ]11 - Requires: [ ]

Enter a number to change any of them or press ENTER to continue:

Tampaknya tidak ada permasalahan lagi,

kita lanjutkan dengan menekan tombol

ENTER untuk membuat paket RPM.

Jika tidak ada masalah, di akhir proses

akan tampak sebagai berikut:

...

NOTE: The package will not be installed

Erasing temporary files...OK

Deleting doc-pak directory...OK

Writing backup package...OK

Deleting temp dir...OK

checkinstall

Website checkinstall.

Page 16: sudo Memberi Hak Root ke User dengan sudoftp.gunadarma.ac.id/pub/linux/magazine/infolinux/Tahun 2005/PDF... · gangguan keamanan. Bahwa setiap user disarankan untuk login sebagai

INFOLINUX 06/2005 65

TUTORIALBerita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial

www.infolinux.web.id

*****************************

Done. The new package has been saved to

/usr/src/packages/RPMS/i386/xine-lib-1.0-1.i386.rpm You can install it in your system anytime using:

rpm -i xine-lib-1.0-1.i386.rpm

*****************************

Dari informasi di atas, paket xine-lib-

1.0-1.i386.rpm terdapat di dalam direktori /

usr/src/packages/RPMS/i386/. Dalam sistem

Anda mungkin akan sedikit berbeda.

Untuk menginstalasi paket tersebut,

dapat dilakukan dengan :

rpm -i xine-lib-1.0-1.i386.rpm

Bagaimana? Mudah, bukan?

Mengustomisasi checkinstall Untuk mengustomisasi checkinstall dapat

dilakukan dengan mengubah beberapa vari-

abel yang disediakan di dalam fi le konfi gu-

rasi checkinstall:

/usr/local/lib/checkinstall/checkinstallrc

Menentukan jenis paket default Bila kita tidak ingin ditanya tentang jenis

paket yang ingin dibuat setiap kali meng-

gunakan checkinstall, ubahlah variabel IN-

STYPE menjadi:

INSTYPE=”R”

Menentukan arsitektur mesin default Untuk menentukan arsitektur mesin secara

default, misalnya jika mesin Anda adalah

AMD Athlon 64bit, maka rasanya tidak

pantas bila menset mesin ke “i386”. Oleh

karena itu, ubahlah variabel ARCHITEC-

TURE menjadi:

ARCHITECTURE=”athlon”

Perubahan arsitektur mesin ini menye-

checkinstall

babkan paket RPM yang dihasilkan ditaruh

dalam direktori /usr/src/packages/RPMS/

athlon/.

Jika ingin mengustomisasi lebih jauh, si-

lakan melihat dokumentasi yang disertakan

dalam software checkinstall.

Penutup Pekerjaan manajemen software yang kita

kompilasi dan instalasi dari source ter-

kadang membuat kita pusing tujuh keliling.

Karena bila tidak dikelola dengan baik, akan

membuat sistem kita menjadi berantakan.

Untunglah telah ada program bantu un-

tuk mengelola software yang dikompilasi

dan diinstalasi dari source, yaitu checkin-

stall. Dengan checkinstall, kita dapat mem-

buatkan paket dari software tersebut, dan de-

ngan menggunakan program paket manajer

yang telah disediakan oleh distro kita, kita

dapat memanipulasi paket software terse-

but. Dengan demikian pengelolaan software

yang dikompilasi dan diinstalasi dari source

menjadi lebih mudah.

Tedi Heriyanto ([email protected])

Page 17: sudo Memberi Hak Root ke User dengan sudoftp.gunadarma.ac.id/pub/linux/magazine/infolinux/Tahun 2005/PDF... · gangguan keamanan. Bahwa setiap user disarankan untuk login sebagai

INFOLINUX 06/200566

TUTORIAL Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial

www.infolinux.web.id

unison

Mr. X adalah seorang pembunuh

bayaran yang sangat laris. Ke-

betulan, beliau termasuk pem-

bunuh bayaran yang cukup banyak meng-

gunakan TI. Begini cara kerjanya. Ketika

ada tawaran, Mr. X akan mengamati calon

korbannya, lengkap dengan informasi ke-

biasaan calon korban, foto, dan hal-hal yang

berhubungan dengan calon korban tersebut.

Mr. X sering bekerja mobile dan mencatat

semua informasi ke dalam notebook yang

beliau miliki. Notebook beliau terinstall

dengan sistem operasi MS Windows XP.

Sampai di kantor rahasianya, Mr. X selalu

meng-copy-kan kembali semua informasi

yang berhasil dikumpulkan dalam satu hari

ke server kantor rahasianya tersebut.

Mr. X tidak harus selalu keluar kantor

dalam mengamati calon korbannya. Ter-

kadang, informasi datang begitu saja dari

pihak yang memberi kerja. Terkadang, Mr.

X juga membuat perubahan langsung ke

server kantor rahasianya. Setiap hari seperti

ini. Sampai suatu hari.

Mr. X telah membuat perubahan kecil

yang cukup detail dan penting dalam arsip

calon korban ketika bekerja di kantor. Ke-

tika berada di luar kantor untuk mengamati

lagi calon korbannya, Mr. X kehilangan pe-

rubahan yang dibuat di server kantornya,

karena tidak dikopikan ke dalam notebook.

Perubahan tersebut sebenarnya cukup pen-

ting. Apa boleh buat, Mr. X pun melupakan

sejenak dan mengumpulkan informasi lain.

Setibanya di kantor, Mr. X seperti biasa,

mengopikan hasil kerjaan di notebooknya

kembali ke server kantornya. Sayangnya,

perubahan yang dibuat di server telah hi-

lang tertimpa oleh data yang baru di-copy

dari notebook. Mr. X sangat kesal.

Suatu, hari, Mr. X membeli buku Win-

dows dan mempelajari tentang adanya fasi-

litas Briefcase yang dapat digunakan untuk

kegiatan sinkronisasi fi le yang sering sekali

beliau lakukan. Setelah dicoba-coba, Mr. X

kemudian dapat memanfaatkan fasilitas ini

dan sejak itu, tidak ada lagi informasi yang

tidak tersinkron. Mr. X pun kembali bekerja

dengan rapi, siap memburu calon korban-

nya. Dengan adanya briefcase di Windows,

sinkronisasi fi le dapat dilakukan dan Win-

dows akan menampilkan konfi rmasi ketika

sinkronisasi dilakukan. Mr. X dapat me-

milih untuk meng-copy-kan perubahan ke

server, dari server, menghapus yang tidak

tersimpan di server, dan lain sebagainya.

Seiring dengan selesainya masalah sin-

kronisasi fi le Mr. X, cerita tentang Mr. X pun

selesai. Apakah Anda pernah mengalami

apa yang dialami oleh Mr. X ketika melaku-

kan sinkronisasi fi le? Kita bisa saja lupa

dan mengikuti kegiatan rutin untuk selalu

meng opikan fi le ke komputer server, pada-

hal kita mungkin telah membuat perubahan

di komputer server tersebut. Urusan sepele

seperti sinkronisasi fi le bisa menyebabkan

kita kehilangan data apabila tidak ditangani

dengan baik.

Terlepas dari tepat atau tidaknya peng-

gunaan briefcase di Windows, harus kita

akui bahwa fasilitas yang satu ini sangat

berguna. User interfacenya juga sangat me-

narik. Sayangnya, fasilitas briefcase ini tidak

terdapat di Linux. Kita perlu mempergu-

nakan program lain untuk mendapatkan

fasilitas serupa. Walau, sebenarnya, apabila

Anda menggunakan KDE misalnya, Anda

bisa memanfaatkan KFS untuk sinkronisasi

fi le. Atau, dengan sedikit kompromi, Anda

bisa memanfaatkan rsync.

UnisonApabila Anda tidak menggunakan KDE

atau rsync terasa kurang cocok bagi Anda,

maka Anda bisa mencoba tool yang satu

ini: unison. Namanya jelas tidak mencer-

minkan fungsinya. Tapi, fi turnya luar biasa

dalam menangani masalah sinkronisasi fi le.

User interface-nya juga bisa seramah Win-

dows. Selain itu, unison juga dapat bekerja

di Windows, Linux dan beberapa unix lain-

nya. Di Artikel kali ini, kita akan membahas

tentang unison, fi tur dan berbagai contoh

penggunaan.

unison adalah tool untuk menangani

masalah sinkronisasi fi le di platform UNIX

dan Windows. unison mengizinkan dua en-

titi yang akan disinkronisasi satu sama lain

tersimpan di host yang berbeda, atau di host

yang sama, untuk dapat tersinkronisasi satu

sama lainnya. Harus diakui, unison memin-

jam cukup banyak konsep dan fi tur dari

berbagai aplikasi lain seperti CVS, CODA

distributed fi lesystem, RSYNC, dan lain se-

bagainya. Tentang RSYNC, developer Uni-

son bahkan membaca thesis Andrew Tridgel (samba, rsync, kini di OSDL) tentang rsync

dalam mengimplementasikan tool ini. uni-

son juga merupakan program yang berjalan

di modus user (user mode), sehingga dapat

dijalankan oleh siapa saja dan tidak ada

hubungan dengan sistem operasi.

Salah satu fasilitas yang cukup membuat

tenang hati adalah kemampuan unison

Sinkronisasi File dengan unisonSinkronisasi adalah kegiatan yang mungkin sering Anda lakukan apabila Anda sering bekerja mobile, atau bekerja pada beberapa tempat. Di Linux, terdapat tool sinkronisasi yang hebat dan mudah untuk digunakan: unison. Di artikel kali ini, kita akan membahas unison dan contoh-contoh penggunaannya.

Page 18: sudo Memberi Hak Root ke User dengan sudoftp.gunadarma.ac.id/pub/linux/magazine/infolinux/Tahun 2005/PDF... · gangguan keamanan. Bahwa setiap user disarankan untuk login sebagai

INFOLINUX 06/2005 67

TUTORIALBerita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial

www.infolinux.web.id

unison

yang tinggi dalam menangani perubahan

dan konfl ik. unison akan sangat berhati-

hati dalam menangani proses sinkronisasi,

termasuk terhadap kegagalan koneksi atau

sumber daya listrik.

Konsep dasar unisonUntuk memahami unison lebih dalam sebe-

lum mencoba, kita akan membahas tentang

konsep dasar dari aplikasi ini.

� Pertama, kita mengenal istilah replica di

unison. Replica di sini adalah entiti yang

akan disinkronisasi dengan entiti lain.

Replica mengandung informasi pro-

tokol komunikasi, host, user, dan path.

Untuk protokol komunikasi, unison bi-

sa bekerja dengan fi le lokal, socket, ssh,

atau rsh.

� Kedua, Kita mengenal unison server dan

client.

� Ketiga, masalah update. Unison akan

mencatat informasi setiap path yang

sukses disinkronisasi, sehingga apabila

terjadi perubahan, unison dapat dengan

cepat memberikan anjuran aksi yang

akan dilakukan. Untuk masalah konfl ik

dan resolusi konfl ik, unison akan mem-

berikan anjuran, namun user bebas me-

nentukan aksi yang ingin dilakukan.

� Keempat, dukungan profi le. Apabila

memiliki banyak replica yang harus

disinkronisasi, Anda bisa membuatnya

dalam beberapa profi le terpisah. Dengan

demikian, Anda tidak harus selalu me-

nyebutkan nama replice yang mungkin

akan panjang dan susah diingat. Anda

cukup menyebutkan nama profi le-nya

saja.

User interface unisonUnison datang dengan kemampuan un-

tuk bekerja pada user interface berbasis

teks ataupun user interface berbasis GUI.

U mumnya, untuk GUI, widget set GTK+

yang akan digunakan. User interface berba-

sis teks umumnya digunakan untuk bekerja

sama dengan shell script, untuk otomatisasi

sinkronisasi dua replica yang besar dan ti-

dak membutuhkan campur tangan user.

InstalasiInstalasi unison dapat dengan mudah digu-

nakan. Carilah terlebih dahulu paket untuk

distro Anda. Apabila tidak terdapat juga,

Anda bisa membangun sendiri unison dari

source code. Untuk kompilasi tanpa melibat-

kan GUI, proses kompilasi dapat dilakukan

dengan sangat mudah. Untuk mendapatkan

fasilitas GUI, pastikan Anda memiliki head-

er yang dibutuhkan dalam proses kompilasi

seperti header gtk.

Contoh-contoh penggunaanKita akan membahas beberapa contoh

penggunaan yang umum. Kita akan mem-

bahas terlebih dahulu contoh penggunaan

dalam modus teks, dan setelah itu, kita

akan melanjutkan ke penggunaan unison di

modus grafi k. Pembuatan dan bagaimana

bekerja dengan profi le juga akan disertakan

dalam contoh.

� Lokal ke lokal Pertama-tama, kita akan bekerja dari lokal

ke lokal, dan melakukan sinkronisasi antar

dua direktori. Sediakan dua direktori de-

ngan nama a dan b, di mana a memiliki isi

sebagai berikut:

aa/aa/ba/ca/d

a/ea/fa/dir1/a/dir1/aa/dir1/b

Sementara, direktori b masih kosong.

Untuk menyinkronisasi a dan b, beri-

kanlah perintah berikut ini:

$ unison a b -ui textContacting server...Looking for changes dir1Reconciling changes

a b new file ----> a [f] >new file ----> b [f] >new file ----> c [f] >new file ----> d [f] >new dir ----> dir1 [f] >new file ----> e [f] >new file ----> f [f] >

Proceed with propagating updates? [] yPropagating updates

Tampilan awal unison.

Page 19: sudo Memberi Hak Root ke User dengan sudoftp.gunadarma.ac.id/pub/linux/magazine/infolinux/Tahun 2005/PDF... · gangguan keamanan. Bahwa setiap user disarankan untuk login sebagai

INFOLINUX 06/200568

TUTORIAL Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial

www.infolinux.web.id

unison

UNISON started propagating changes at 15:35:27 on 09 Feb 2005[BGN] Copying a from /home/koljeng/Documents/unison/sampaj/a to /home/koljeng/Documents/unison/sampaj/b[BGN] Copying b from /home/koljeng/Documents/unison/sampaj/a to /home/koljeng/Documents/unison/sampaj/b[BGN] Copying c from /home/koljeng/Documents/unison/sampaj/a to /home/koljeng/Documents/unison/sampaj/b[BGN] Copying d from /home/koljeng/Documents/unison/sampaj/a to /home/koljeng/Documents/unison/sampaj/b[BGN] Copying dir1 from /home/koljeng/Documents/unison/sampaj/a to /home/koljeng/Documents/unison/sampaj/b[BGN] Copying e from /home/koljeng/Documents/unison/sampaj/a to /home/koljeng/Documents/unison/sampaj/b[BGN] Copying f from /home/koljeng/Documents/unison/sampaj/a to /home/koljeng/Documents/unison/sampaj/b dir1/a dir1/b[END] Copying a[END] Copying b[END] Copying c[END] Copying d[END] Copying e[END] Copying f[END] Copying dir1UNISON finished propagating changes at 15:35:27 on 09 Feb 2005

Saving synchronizer stateSynchronization complete

Pada saat memeriksa perubahan di an-

tara kedua tree, unison akan memberikan

kita pilihan untuk aksi yang akan dilaku-

kan. Anda bisa memilih untuk menekan <,

atau >, atau / sesuai dengan arah perubahan

yang Anda lakukan. Arah > berarti dari a ke

b, dalam contoh kita. Arah < berarti dari b

ke a, dalam contoh kita. Sementara, / berarti

tidak melakukan apa-apa.

Dalam contoh tersebut, apabila Anda

memberikan aksi <, maka isi dari direk-

tori a akan menjadi kosong, sama seperti

b. Sementara, apabila Anda hanya ingin

me ngambil fi le a dan b dari a, maka untuk

c,d,e,f dan dir1, Anda harus menekan tom-

bol /. Contoh:

$ unison a b -ui textContacting server...Looking for changes dir1Reconciling changes

a b new file ----> a [f] >new file ----> b [f] >new file <=?=> c [f] /new file <=?=> d [f] /new dir <=?=> dir1 [f] /new file <=?=> e [f] /new file <=?=> f [f] /

Proceed with propagating updates? [] yPropagating updates

UNISON started propagating changes at 15:40:51 on 09 Feb 2005[BGN] Copying a from /home/koljeng/Documents/unison/sampaj/a to /home/koljeng/Documents/unison/sampaj/b[BGN] Copying b from /home/koljeng/Documents/unison/sampaj/a to /home/koljeng/Documents/unison/sampaj/b[CONFLICT] Skipping c[CONFLICT] Skipping d[CONFLICT] Skipping dir1[CONFLICT] Skipping e[CONFLICT] Skipping f

[END] Copying a[END] Copying bUNISON finished propagating changes at 15:40:51 on 09 Feb 2005

Saving synchronizer stateSynchronization complete

Dengan contoh tersebut, maka hanya fi le

a dan b yang di-copy-kan ke direktori b.

Kita akan melanjutkan. File b/a akan di-

ubah dan kita ingin, fi le a/a dan fi le b/a be-

rada dalam kondisi tersinkronisasi. Setelah

mengubah fi le b/a, berikanlah perintah se-

perti ini:

$ unison a b -ui textContacting server...Looking for changes dir1Reconciling changes

a b <---- changed a [f] <new file <=?=> c [f] /new file <=?=> d [f] /new dir <=?=> dir1 [f] /new file <=?=> e [f] /new file <=?=> f [f] /

Proceed with propagating updates? [] yPropagating updates

UNISON started propagating changes at 15:43:23 on 09 Feb 2005[BGN] Updating file a from /home/koljeng/Documents/unison/sampaj/b to /home/koljeng/Documents/unison/sampaj/a[CONFLICT] Skipping c[CONFLICT] Skipping d[CONFLICT] Skipping dir1[CONFLICT] Skipping e[CONFLICT] Skipping f[END] Updating file aUNISON finished propagating changes at 15:43:23 on 09 Feb 2005

Page 20: sudo Memberi Hak Root ke User dengan sudoftp.gunadarma.ac.id/pub/linux/magazine/infolinux/Tahun 2005/PDF... · gangguan keamanan. Bahwa setiap user disarankan untuk login sebagai

INFOLINUX 06/2005 69

TUTORIALBerita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial

www.infolinux.web.id

unison

Saving synchronizer stateSynchronization complete

Pada contoh tersebut, tertulis bahwa

fi le b/a telah berubah dan disarankan un-

tuk mengubah ke arah kiri, di mana b akan

menjadi sumber. Apabila Anda tidak meng-

inginkan a/b disamakan isinya dengan b/a,

maka Anda bisa mengubah arah menjadi >

sehingga a/a yang akan menjadi sumber.

Apabila kedua replica yang tersinkron

ingin disinkronisasi lagi, maka unison akan

menampilkan bahwa tidak ada yang perlu

disinkronisasi seperti contoh berikut:

$ unison a b -ui textContacting server...Looking for changes dir1 dir1Reconciling changesNothing to do: replicas have not been changed since last sync.

Bagi Anda yang bekerja dengan script,

tentunya akan lebih mudah kalau Anda me-

nerima saran yang diberikan oleh unison.

Untuk itu, Anda bisa memberikan opsi -

auto ketika menjalankan unison.

� Lokal ke remote/remote ke lokal. Setelah kita bekerja dari lokal ke lokal, maka

kita akan masuk ke dunia yang lebih nyata,

dengan bekerja antar-host. Pada prinsipnya,

cara kerjanya sama saja. Anda hanya perlu

mengubah protokol pada replica yang di-

inginkan. Dalam contoh ini, kita akan mem-

pergunakan ssh untuk bekerja antar-host.

Ada beberapa langkah yang harus dilakukan.

Pertama, pastikan host tertentu bisa

menjalankan unison. Berikan perintah beri-

kut ini untuk memastikan remote host bisa

menjalankan unison (tentunya pada host

tersebut harus telah terinstal unison, akan

lebih baik lagi apabila menjalankan versi

yang sama).

$ ssh 192.168.0.51 unison -versionPassword: unison version 2.9.1

Kedua, pastikan koneksi dapat terjadi.

Berikan opsi -testserver seperti contoh beri-

kut ini:

$ unison -testserver a ssh://[email protected]/a -ui textContacting server...Password: p = a; bn = a

Ketiga, Anda bisa segera bekerja karena

koneksi kedua pihak telah terjalin. Contoh:

$ unison a ssh://[email protected]/Documents/unison/sampaj/b -ui textContacting server...Password: Looking for changes dir1 Waiting for changes from serverReconciling changes

local koljeng ====> deleted a [f] > ====> deleted b [f] >new file ----> c [f] >new file ----> d [f] >new dir ----> dir1 [f] >new file ----> e [f] >new file ----> f [f] >

Proceed with propagating

updates? [] yPropagating updates

UNISON started propagating changes at 15:59:52 on 09 Feb 2005[BGN] Copying a from /home/koljeng/Documents/unison/sampaj/a to //koljeng//home/koljeng/Documents/unison/sampaj/b[BGN] Copying b from /home/koljeng/Documents/unison/sampaj/a to //koljeng//home/koljeng/Documents/unison/sampaj/b[BGN] Copying c from /home/koljeng/Documents/unison/sampaj/a to //koljeng//home/koljeng/Documents/unison/sampaj/b[BGN] Copying d from /home/koljeng/Documents/unison/sampaj/a to //koljeng//home/koljeng/Documents/unison/sampaj/b[BGN] Copying dir1 from /home/koljeng/Documents/

Layar utama unison.

Page 21: sudo Memberi Hak Root ke User dengan sudoftp.gunadarma.ac.id/pub/linux/magazine/infolinux/Tahun 2005/PDF... · gangguan keamanan. Bahwa setiap user disarankan untuk login sebagai

INFOLINUX 06/200570

TUTORIAL Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial

www.infolinux.web.id

bila Anda banyak melakukan sinkronisasi

dengan pasangan replica yang berbeda,

dengan alamat replica yang panjang, akan

lebih baik apabila Anda membuat profi le

untuk pasangan replica yang diinginkan.

Sebagai contoh, kita akan membuat pro-

fi le pasangan replica local a b dengan nama

local_ab.

Berikut ini adalah langkah-langkah

dalam membuat profi le local_ab.

Pertama, Masuklah ke direktori .unison

di home directory Anda. Setelah itu, buatlah

fi le dengan nama local_ab.prf dengan isi fi le

sebagai berikut:

root = /home/koljeng/Documents/unison/sampaj/aroot = /home/koljeng/Documents/unison/sampaj/b

path = apath = b

Kedua, Anda bisa segera menggunakan

profi le local_ab tersebut dengan perintah

berikut:

$ unison local_ab -ui textContacting server...Looking for changesReconciling changes

a b <---- changed a [f] <

Proceed with propagating updates? [] yPropagating updates

UNISON started propagating changes at 16:25:02 on 09 Feb 2005[BGN] Updating file a from /home/koljeng/Documents/unison/sampaj/b to /home/koljeng/Documents/unison/sampaj/a[END] Updating file aUNISON finished propagating changes at 16:25:02 on 09 Feb 2005

Saving synchronizer stateSynchronization complete

� Bekerja dengan GUI. Sejak contoh pertama, kita selalu meng-

gunakan opsi -ui text. Opsi -ui digunakan

untuk menentukan user interface yang akan

digunakan. Secara otomatis, unison akan

memeriksa apakah ui grafi k tersedia ketika

Anda berada pada X. Dengan demikian, ke-

tika berada di X dan menjalankan unison

tanpa opsi -ui, maka yang akan dijalankan

adalah unison pada modus GUI.

Bekerja dengan GUI membuat kita tidak

perlu mengingat berbagai perintah. Bah-

kan, Anda bisa langsung membuat profi le

dengan sangat mudah, tanpa harus repot-

repot mengedit fi le profi le sendiri.

Pada saat dijalankan, unison akan me-

nampilkan profile yang tersedia. Anda

bisa memilih untuk menjalankan pro-

file yang diinginkan. Anda bisa memilih

profile default, dan diikuti oleh tombol

OK. Setelah itu, Anda akan diminta un-

tuk memasukkan direktori lokal. Masuk-

kan direktori lokal dan tekanlah tombol

Continue. Setelah itu, dialog kedua akan

ditampilkan. Anda bisa memasukkan

replica kedua. Setelah semuanya selesai,

kliklah tombol Continue. Secara otomatis,

sin kronisasi akan dilakukan, dan unison

akan menampilkan konfirmasi aksi sin-

kronisasi untuk Anda.

Untuk membuat profi le, kliklah tombol

New profi le pada dialog pertama unison. An-

da akan diminta untuk memasukkan nama

profi le. Masukkan nama yang diinginkan,

dan kliklah tombol OK. Setelah itu, Anda

akan diminta untuk memasukkan pasangan

replica. Setelah itu, Anda pun selesai.

Pada saat konfi rmasi sinkronisasi di-

lakukan, Anda masih tetap dapat memi-

lih untuk ke arah kiri, kanan, atau tidak

melakukan perubahan. Jauh lebih mudah

dibandingkan dengan text user interface.

Hanya, script tidak akan dapat memanfaat-

kan fasilitas GUI ini.

Sampai di sinilah perkenalan kita de-

ngan unison. Apa yang kita bahas kali ini

hanya sedikit bagian dari fasilitas yang dise-

diakan unison. Unison adalah fi le synchro-

nization tool yang sangat luar biasa, kaya fi -

tur, namun tetap sangat mudah digunakan.

Selamat mencoba, dan pastikan Anda tidak

mengalami apa dialami oleh Mr. X, yaitu

kehilangan isi fi le yang penting.

Noprianto ([email protected])

unison

unison/sampaj/a to //koljeng//home/koljeng/Documents/unison/sampaj/b[BGN] Copying e from /home/koljeng/Documents/unison/sampaj/a to //koljeng//home/koljeng/Documents/unison/sampaj/b[BGN] Copying f from /home/koljeng/Documents/unison/sampaj/a to //koljeng//home/koljeng/Documents/unison/sampaj/b dir1/a dir1/b[END] Copying a[END] Copying b[END] Copying c[END] Copying d[END] Copying e[END] Copying f[END] Copying dir1UNISON finished propagating changes at 15:59:53 on 09 Feb 2005

Saving synchronizer stateSynchronization complete

Dalam contoh tersebut, kita bisa meli-

hat bahwa proses peng-copy-an ditandai

dengan (local dan koljeng, yang merupakan

nama server remote), serta pada proses per-

siapan pengopian, kita melihat bahwa nama

fi le di-copy-kan dari local ke remote.

Dalam contoh kali ini, kita memberikan

url ssh://[email protected]/Documents/

unison/sampaj/b sebagai replica kedua. Per-

hatikan notasi path yang digunakan yaitu

notasi / setelah nama server. Kita harus

memandang bahwa notasi / adalah bagian

dari server. Dengan demikian, direktori

setelah itu, Documents/unison/sampaj/b

adalah relatif terhadap home directory

user koljeng di host tersebut. Bagaimana

kalau kita ingin bekerja dengan path abso-

lut? Berikan saja dua url seperti ini: ssh://

[email protected]//path/absolut/ke/di-

rektori/yang/diinginkan. Kita akan meng-

gunakan dua tanda /.

� Bekerja dengan profile. Seperti telah disebutkan sebelumnya, apa-

Page 22: sudo Memberi Hak Root ke User dengan sudoftp.gunadarma.ac.id/pub/linux/magazine/infolinux/Tahun 2005/PDF... · gangguan keamanan. Bahwa setiap user disarankan untuk login sebagai

IKLAN

Page 23: sudo Memberi Hak Root ke User dengan sudoftp.gunadarma.ac.id/pub/linux/magazine/infolinux/Tahun 2005/PDF... · gangguan keamanan. Bahwa setiap user disarankan untuk login sebagai

INFOLINUX 06/200572

TUTORIAL Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial

www.infolinux.web.id

w3mir

Terkadang, kita menemukan infor-

masi yang begitu menarik di www,

namun tidak tersedia link untuk

men-download kumpulan informasi terse-

but. Lebih parah lagi apabila kumpulan

informasi tersebut tersebar dalam puluhan

fi le, dimana akan menyulitkan apabila ha-

rus disimpan satu per satu. Kalaupun ingin

menyimpannya, kita mungkin kehilangan

link yang menghubungkan fi le-fi le yang kita

download tersebut. Dalam kondisi demiki-

an, beberapa pihak akan memilih cara un-

tuk men-download keseluruhan kumpulan

informasi tersebut agar dapat dibaca lokal

dengan bantuan www mirroring tool.

Di dunia open source, kita mengenal

begitu banyak program seperti ini. Salah

satu dari tool tersebut yang cukup menarik

untuk digunakan adalah w3mir, sebuah

www mirroring tool yang cukup kaya fi tur.

W3mir dapat men-download keseluruhan

direktori ataupun sekadar fi le-fi le tertentu.

Selain itu, ketika men-download, w3mir

juga akan memperbaiki URL agar sesuai

dengan kondisi local copy Anda sehingga lo-

cal browsing tetap dapat dilakukan. W3mir

mendukung HTML4, CSS (partial support),

Java, ActiveX dan fi le-fi le PDF, di luar fi tur-

fi tur lainnya. Di artikel kali ini, kita akan

membahas cara-cara mirroring beserta tip

menggunakan w3mir.

W3mir dibangun dengan Perl sehingga

ANda akan membutuhkan Perl terinstal di-

sistem Anda (hampir semua distro umum

sudah melakukannya). Selain itu, beberapa

modul perl harus diinstal agar w3mir dapat

bekerja. Anda bisa mendapatkan perl-URI,

perl-libwww-perl, perl-HTML-parser di

CPAN atau di CDROM distro Anda. Pusta-

ka-pustaka tersebut cukup umum. Installah

dengan tool packaging distro Anda untuk

lebih mudahnya. Setelah semua kebutuhan

w3mir terpenuhi, Anda bisa men-down-

load tool ini di website-nya, http://langfeldt.

net/w3mir/.

Untuk menggunakan, Anda bisa mem-

pergunakan fi le konfi gurasi atau tidak sama

sekali. Apabila tidak mempergunakan fi le

konfi gurasi, Anda akan selalu memberi-

kan opsi tertentu ketika menjalankan pro-

gram ini. Untuk mudahnya, kita tidak akan

mempergunakan fi le konfi gurasi dalam

artikel ini. Apabila diinginkan, Anda bisa

meng-copy-kan contoh fi le konfi gurasi

yang datang bersama paket ini ke home di-

rectory Anda dengan nama .w3mir. Contoh

konfi gurasi tersebut sudah self-documented.

Untuk melihat opsi yang tersedia, seper-

ti biasa, berikan opsi -h pada saat menjalan-

kan w3mir. Penerapan opsi-opsi tersebut

akan kita bahas sama-sama dalam bagian

contoh. Untuk mencoba w3mir, alangkah

baiknya apabila Anda terhubung ke jari-

ngan lokal yang menyediakan fi le sharing

dari www, atau Anda dapat membangun

web server sederhana untuk mencoba.

Contoh-contoh penggunaan� Menampilkan daftar file yang akan di-

download, tanpa men-download terlebih dahulu.

Kadang-kadang, kita ingin mengetahui fi le-

fi le apa saja yang akan di-download dalam

proses mirroring. Beberapa pengguna yang

paranoia umumnya akan melakukan hal

ini. Berikan opsi -f untuk menampilkan

daftar fi le seperti contoh berikut:

$ w3mir -f http://192.168.0.1/pub/w3mir: http://192.168.0.1/robots.txtw3mir: index.html, got and forgot it.w3mir: That’s all (2073+463 bytes of it).

Untuk lebih baik lagi dalam menampil-

kan URL, Anda dapat mengombinasikan-

nya dengan opsi -l, seperti contoh berikut:

$ w3mir -l -f http://192.168.0.1/pub/w3mir: http://192.168.0.1/robots.txtw3mir: index.html, got and forgot it....w3mir: That’s all (2073+463 bytes of it).

Sebagai catatan, Anda harus menulis-

kan opsi -l dan -f secara terpisah. w3mir

tidak mengenali -l dan -f sebagai -lf atau -fl .

Catatan berikutnya adalah, walaupun tidak

ada fi le yang akan di-download ketika Anda

membuat list seperti ini, fi le untuk kebutu-

han internal w3mir, yaitu .redirs dan .ref-

erers akan dibuat. Anda bisa mengabaikan

fi le ini.

Selain untuk kebutuhan audit ke-

amanan, daftar fi le ini sebenarnya cukup

berguna. Asumsikan Anda tidak memiliki

koneksi Internet, namun rekan Anda se-

lalu bersedia untuk men-download URL

pesanan Anda. Hanya, beliau tidak mau re-

WWW Mirroring dengan w3mirAnda mungkin menemukan website yang menarik dan tidak selalu bisa online untuk mem-baca isinya. Bagi Anda yang ingin membuat mirror atau local copy untuk dapat dibaca lo-kal, Anda bisa mempergunakan w3mir. W3mir adalah mirroring tool yang powerful, namun mudah digunakan.

Page 24: sudo Memberi Hak Root ke User dengan sudoftp.gunadarma.ac.id/pub/linux/magazine/infolinux/Tahun 2005/PDF... · gangguan keamanan. Bahwa setiap user disarankan untuk login sebagai

INFOLINUX 06/2005 73

TUTORIALBerita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial

www.infolinux.web.id

w3mir

pot-repot mencari URL apa yang Anda in-

ginkan di search engine. Beliau meminta list

URL agar dapat dilewatkan ke script untuk

men-download fi le-fi le yang bersangkutan.

Dalam hal ini, Anda bisa mempergunakan

w3mir untuk menghasilkan list (terutama

kalau Anda ingin men-download informasi

dari beberapa website sekaligus, dengan fi l-

ter fi le tertentu).

� Men-download file tunggal.Untuk men-download fi le tunggal dengan

w3mir, Anda tidak perlu memberikan opsi

apapun. Cukup sebutkan saja URLnya, se-

perti contoh berikut:

$ w3mir http://192.168.0.1/pub/OS/SUSE91/INSTALL/INDEX.gzw3mir: http://192.168.0.1/robots.txtw3mir: INDEX.gz: 34162 bytesw3mir: That’s all (35205+549 bytes of it).

� Menampilkan progress. Untuk fi le besar, terkadang kita ingin me-

lihat progress download yang kita laku-

kan. Sekadar untuk memastikan semuanya

bekerja dengan baik, misalnya. Anda bisa

memberikan opsi -c kepada w3mir dalam

menampilkan progress peng-copy-an fi le.

Sayangnya, opsi ini tidak terlalu bisa di-

andalkan. Terkadang opsi ini bekerja, ter-

kadang tidak bekerja. Jadi, hanya gunakan

kalau benar-benar perlu.

� Men-download direktori secara rekursif. Inilah yang umumnya kita inginkan. Untuk

mendapatkan fasilitas ini, di mana w3mir

akan mengambil semua fi le dalam direktori

yang kita minta, berikan saja opsi -r, dan se-

cara otomatis sebuah local copy akan terse-

dia di harddisk Anda. Contoh:

$ w3mir -r http://192.168.0.1/pub/Apps/Office/Kamus/KamusLain1/w3mir: http://192.168.0.1/robots.txtw3mir: index.html: 812 bytes......

w3mir: ?C=N: 812 bytesw3mir: That’s all (2159676+2439 bytes of it).

Setelah selesai download, perhatikanlah

direktori aktif Anda. File yang ada di dalam

direktori di server secara otomatis akan ter-

simpan.

� Mirror keseluruhan site. Untuk melakukan mirror keseluruhan

situs, cukup berikan saja opsi -r pada di-

rektori tertinggi dari site yang ingin Anda

mirror. Hanya, Anda perlu sedikit cermat

dalam melakukan hal seperti ini. Pertama,

Anda mungkin perlu membatasi kedala-

man rekursi ketika w3mir men-download.

Secara default, w3mir akan terus mengikuti

link apabila Anda memberikan opsi -r. Hal

ini bisa menjadi bermasalah ketika website

bersangkutan memasang perangkap. Anda

bisa mempergunakan fi le konfi gurasi de-

ngan direktif Ignore.

Sebagai contoh:

Ignore: /*/*/*/*/*/*/

Page 25: sudo Memberi Hak Root ke User dengan sudoftp.gunadarma.ac.id/pub/linux/magazine/infolinux/Tahun 2005/PDF... · gangguan keamanan. Bahwa setiap user disarankan untuk login sebagai

INFOLINUX 06/200574

TUTORIAL Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial

www.infolinux.web.id

w3mir

Direktif ini akan membatasi sampai ke-

dalaman 4 level (3 garis miring pertama un-

tuk internal w3mir apabila url yang diberi-

kan telah memiliki 3 garis miring pertama

seperti http://192.168.0.1/).

� Menampilkan isi file. Bagaimana kalau Anda ingin sekadar me-

nampilkan isi dari suatu fi le namun tidak

ingin menyimpan fi lenya ke harddisk Anda?

Ini mirip dengan perintah cat. Caranya,

berikan saja opsi -s (diikuti oleh nama fi le

lengkap) pada command line.

Isi dari fi le yang Anda tampilkan tersebut

akan tampil pada stdout. Dengan pemaha-

man tersebut, Anda bisa menyimpan isi fi le

yang ditampilkan tersebut ke fi le dengan

nama lain. Cukup arahkan stdout Anda ke

fi le lain seperti contoh berikut:

$ w3mir -s http://192.168.0.1/pub/ > a.htmlw3mir: http://192.168.0.1/robots.txtw3mir: index.htmlw3mir: That’s all (2073+463 bytes of it).

Apabila Anda buka fi le a.html tersebut,

maka isinya akan sama dengan apa yang

seharusnya Anda lihat ketika mengarahkan

browser ke alamat yang kita berikan kepada

w3mir.

� Berpura-pura sebagai agent lain. Setiap http agent yang kita miliki, entah web

browser, downloader, dan lain sebagainya

umumnya mengatur nama agent sesuai de-

ngan nama programnya. Ketika kita meng-

gunakan w3mir, nama agent yang dikirim

ke web server adalah w3mir/version-release-

date. Ketika kita ingin men-download webite

yang hanya menerima agent tertentu misal-

nya, kita perlu berpura-pura sebagai agent

yang diizinkan. Caranya adalah de ngan

memberikan opsi -agent dan menyebutkan

nama agent. Kita tentu bisa menuliskan apa

yang kita inginkan. Sebagai contoh:

$ w3mir -agent ‘Mozilla/8.1 (compatible; MSIE7.0; WIndows 2005)’ -f http://192.168.0.1/pub/

� Menampilkan URL yang tersimpan dalam dokumen.

W3mir dapat pula mengetahui URL apa

saja yang terdapat suatu dokumen. Anda

mungkin ingin menampilkannya. Untuk

itu, berikan opsi -l (L kecil) seperti contoh

berikut ini:

$ w3mir -l http://192.168.0.1/pub/Intermezzo/Interview/Fosdem\ 2002\ -\ report.htm w3mir: http://192.168.0.1/robots.txthttp://www.freehackers.org/ ... ... ...w3mir: That’s all (24460+561 bytes of it).

� Memproses file secara batch. Secara default, ketika men-download sebuah

fi le, w3mir akan mencari URL di dalam fi le

tersebut untuk proses download berikut-

nya. Dan, ini tidak hanya berlaku untuk fi le

HTML, namun juga fi le PDF. Tentunya,

proses seperti ini akan memakan waktu dan

terkadang tidak selalu diinginkan. Apa yang

Anda inginkan barangkali hanyalah men-

download sebuah fi le dan tidak peduli de-

ngan URL yang terdapat di dalamnya. Un-

tuk kebutuhan seperti ini, Anda bisa mem-

berikan opsi -B ketika men-download.

Harap diperhatikan bahwa opsi ini seha-

rusnya tidak dikombinasikan dengan opsi

-r yang akan menyebabkan w3mir men-

download secara rekursif. Apabila Anda

melakukannya, apa yang Anda download

tidak akan benar-benar dapat digunakan

sebagai mirror karena tidak ada URL yang

dimanipulasi.

� Menangani javascript. Bagaimana kalau HTML yang ingin di-

download berisikan javascript? W3mir akan

berusaha untuk tidak mengganggu script

tersebut. Namun, w3mir tidak akan dapat

benar-benar bekerja dengan java script

(dalam artian menjalankan javascript).

Dengan demikian, hasil download mungkin

tidak akan persis sama dengan yang tersim-

pan di server.

� Menangani CSS. W3mir dapat bekerja dengan CSS, namun

tidak mendukung sepenuhnya. Artinya, style

yang didefi nisikan dalam halaman HTML

akan di-download apa adanya. Begitupun

dengan fi le CSS eksternal. Yang tidak akan

dilakukan oleh w3mir adalah menganali-

sis dan men-download apa yang terdapat

dalam CSS (apabila ada).

� Menangani PDF. W3mir, seperti sempat disebutkan sebe-

lumnya, dapat pula bekerja dengan fi le

PDF. W3mir dapat meng-extract URL yang

tersimpan di dalam fi le PDF dan dapat men-

download URL tersebut apabila diinginkan.

Hanya, W3mir tidak dapat mengubah URL

di dalam fi le PDF tersebut agar sesuai den-

gan kondisi mirror. Hal ini cukup repot un-

tuk dilakukan dan bukan merupakan fungsi

utama program.

� Menangani CGI. W3mir tidak akan bisa men-download script

CGI apa adanya karena script CGI tersebut

akan dikerjakan dan hasilnyalah yang akan

didapat oleh web server untuk dikirimkan

ke client. Jadi, apa yang bisa Anda dapatkan

hanyalah hasil pemrosesannya saja. Meng-

gunakan W3Mir dengan protokol HTTP

tidak akan membuat kita bisa mendapatkan

semua fi le di web server.

� Bekerja dengan proxy server. Untuk bekerja dengan proxy server, Anda

dapat mempergunakan opsi -P ketika men-

jalankan w3mir. Berikut adalah contohnya:

$ w3mir -P proxy_server:8080 http://www.site.com/

Untuk proxy yang mewajibkan user-

name dan password, Anda dapat menspe-

sifi kasikan username dan password tersebut

di dalam fi le konfi gurasi. Berikut ini adalah

direktif yang digunakan dan contohnya:

HTTP-Proxy-user: proxy-usernameHTTP-Proxy-passwd: proxy-password

Di Internet, terutama soal TI, kita bisa

mendapatkan begitu banyak hal. Apabila

kita tidak memiliki koneksi 24/7, kita tentu

bisa mempergunakan program semacam

w3mir dalam mengambil informasi (teru-

tama secara berkala di kala koneksi sedang

cepat). Hanya, masalah legal juga harus di-

perhatikan. Demikianlah pembahasan kita

tentang w3mir. Selamat mencoba!

Noprianto ([email protected])

Page 26: sudo Memberi Hak Root ke User dengan sudoftp.gunadarma.ac.id/pub/linux/magazine/infolinux/Tahun 2005/PDF... · gangguan keamanan. Bahwa setiap user disarankan untuk login sebagai

IKLAN

Page 27: sudo Memberi Hak Root ke User dengan sudoftp.gunadarma.ac.id/pub/linux/magazine/infolinux/Tahun 2005/PDF... · gangguan keamanan. Bahwa setiap user disarankan untuk login sebagai

INFOLINUX 06/200576

TUTORIAL Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial

www.infolinux.web.id

NFS

Apabila Anda bekerja dalam satu

komputer, maka berbagi fi le tidak

akan menjadi isu penting. Namun,

di lingkungan jaringan kecil sampai di

lingkungan kerja besar, berbagi fi le adalah

hal yang penting. Terlepas dari kerugian-

kerugiannya, berbagi fi le juga memiliki

banyak keuntungan. Salah satunya adalah

user kemudian dapat bekerja di worksta-

tion manapun selama diatur untuk dapat

mengakses fi le server. Selain itu, back-up

juga senantiasa akan lebih mudah untuk

dilakukan.

Kita mengenal beberapa cara berbagi

fi le. Dua protokol yang sangat populer

adalah protokol SMB dan NFS. Keduanya

merupakan protokol yang matang dan

terus dikembangkan. SMB populer dikare-

nakan digunakan pada Windows (dengan

lebih dari 90% market share) dan beberapa

sistem operasi lain, sementara NFS populer

karena digunakan pada dunia UNIX. Na-

mun, kedua protokol tersebut sudah bukan

milik Windows lagi atau UNIX lagi. Imple-

mentasi SMB melalui proyek SAMBA di

Linux sudah cukup matang, dan di akhir

tulisan, kita juga akan membahas sedikit

tentang NFS di Windows.

Di artikel kali ini, kita akan membahas

langkah-langkah cepat untuk mengatur fi le

sharing menggunakan NFS. Distro yang

dipergunakan adalah SUSE 9.1, walaupun

tidak akan banyak perbedaan dengan dis-

tro lain. Bagi pengguna yang telah terbiasa

menginstal program di Linux, melakukan

konfi gurasi sederhana dan dapat melaku-

kan mounting partisi, maka konfi gurasi

NFS dapat dilakukan dengan sangat cepat.

Tutorial ini juga hanya akan memanfaat-

kan satu komputer, sehingga komputer

tersebut berfungsi sebagai server dan client

NFS.

Instalasi paketInstalasi paket NFS tidaklah rumit, bahkan

bagi Anda yang melakukan kompilasi dari

source. Paket NFS bukanlah paket dengan

banyak dependency yang menyebalkan.

Namun, sebelum kita melakukan instalasi,

ada baiknya apabila kita memperhatikan

tipe server NFS yang akan kita instal.

Kita mengenal dua implementasi server

NFS di Linux: Kernel space NFS server dan

User space NFS server. Sesuai namanya,

yang pertama akan berjalan dengan peran

kernel dan memiliki sejumlah kelebihan

seperti kecepatan yang lebih tinggi dan pri-

oritas yang lebih tinggi. Yang kedua adalah

aplikasi user space dan juga memiliki kele-

bihan seperti tidak akan mencampuri kerja

kernel. Umumnya, kernel space NFS server

lebih populer. Namun, User space NFS

server juga tak kalah banyak digunakan.

Walau sebenarnya, apapun yang Anda pi-

lih, tidak akan banyak mempengaruhi kon-

fi gurasi untuk berbagi fi lesistem.

Di distro SUSE, paket untuk Kernel

space NFS adalah nfs-utils, sementara pa ket

untuk User space NFS adalah nfs-ser ver.

Memang agak sedikit membingungkan.

Keduanya saling konfl ik, dengan demikian,

Anda harus memilih salah satunya. Bagi

Anda yang menggunakan distro lain, cari-

lah NFS di dalam CD/DVD distro Anda.

NFS telah dipaketkan ke dalam hampir

semua distro Linux. Bagi Anda yang ingin

melakukan kompilasi dari source (kurang

disarankan), Anda bisa men-download

kernel space NFS di http://nfs.sourceforge.

net. User space NFS server bisa di-down-

load di ftp://linux.mathematik.tu-darm-

stadt.de/pub/linux/people/okir.

Dalam tulisan ini, penulis akan mem-

pergunakan User space NFS. Dengan

demikian, paket yang akan penulis instal

adalah nfs-server. Berikut ini adalah perin-

tah untuk instalasi nfs-server:

# yast -i nfs-server

Setelah instalasi selesai, Anda pun siap

untuk mengonfi gurasi fi lesistem yang akan

Anda share.

KonfigurasiPada dasarnya, untuk berbagi fi lesistem

de ngan NFS, fi le yang perlu Anda edit ha-

nyalah /etc/exports. Di SUSE, fi le ini telah

terinstal dengan sendirinya apabila Anda

telah menginstal paket netcfg (yang umum-

nya akan terinstall otomatis). FIle-fi le lain

seperti /etc/hosts.allow dan /etc/hosts.deny

dapat Anda edit untuk meningkatkan ke-

amanan dengan proteksi host.

Setiap entri di /etc/exports menspesi-

fi kasikan volume yang akan dishare dan

bagaimana kita melakukan sharing. Format

setiap entri di /etc/exports cukuplah seder-

hana dengan sintak berikut ini:

<direktori> <mesin1>[(opsi1,opsi2,...,opsin)] [mesin2(opsi1,opsi2,...,opsin) ...]

Sebagai contoh, andaikata kita ingin

membagi /opt kepada host 192.168.0.51

dalam modus read-only, maka berikut ini

adalah entri pada /etc/exports:

/opt 192.168.0.51(ro)

Anda bisa mempergunakan penanda

network/netmask (sebagai contoh: 192.1

68.0.0/255.255.255.0) ataupun * (sebagai

contoh *.infolinux.co.id) untuk membagi

volu me secara lebih fl eksibel untuk jari-

ngan besar.

Setiap opsi, seperti pada rumus umum

sebelumnya, dipisahkan dengan tanda ko-

ma. Berikut ini adalah beberapa opsi yang

Berbagi File Lewat NFSAnda tidak harus selalu berbagi file dalam protokol SMB. Apabila lingkungan kerja Anda adalah UNIX, maka Anda selalu bisa mempergunakan NFS dalam berbagi file. Bahkan, de ngan beberapa pengaturan, Anda pun dapat mempergunakan NFS file sharing di lingku-ngan kerja Windows.

Page 28: sudo Memberi Hak Root ke User dengan sudoftp.gunadarma.ac.id/pub/linux/magazine/infolinux/Tahun 2005/PDF... · gangguan keamanan. Bahwa setiap user disarankan untuk login sebagai

INFOLINUX 06/2005 77

TUTORIALBerita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial

www.infolinux.web.id

NFS

mungkin akan sering digunakan:

� rw, melakukan sharing secara read-

write. Kita akan membahas isu ini secara

tersendiri, setelah ini.

� sync, berbagi secara sinkronous. Pada

NFS 2 (saat ini digunakan versi 3 dan

4), ini berarti request tidak akan selesai

sampai semua data telah ditulis ke disk.

Sementara, NFS 3 melengkapi informasi

request dengan status data sehingga cli-

ent dapat melakukan aksi untuk menu-

lis/mengabaikan perubahan sesuai sta-

tus. Saat ini, sync adalah opsi default.

� async, berbagi secara asinkronous. La-

wan dari sync. Aman digunakan untuk

NFS SWAP (swapfi le melalui NFS) dan

fi le-fi le read-only (seperti fi le-fi le yang

disimpan di CDROM).

� root_squash. Apabila user root dari cli-

ent mengakses volume yang dishare de-

ngan opsi ini, maka oleh server akan di-

belokkan menjadi user nobody sehingga

user root dari client tidak menjadi user

root pada volume yang di-share terse-

but. Opsi ini adalah opsi default. Anda

bisa men-disable opsi ini dengan opsi

no_root_squash. Apabila Anda ingin

menerapkan root_squash pada semua

user, maka gunakanlah opsi all_squash.

Dengan demikian, Anda segera bisa

menentukan volume fi lesystem mana saja

yang akan dishare di fi le /etc/exports ini.

Setelah selesai mengonfi gurasi, Anda bisa

segera menjalankan NFS server sehingga

client dapat segera mengakses volume yang

Anda share. Pada distro SUSE, berikan pe-

rintah berikut ini untuk menjalankan NFS

Server:

# rcnfsserver start

Mengakses dari clientClient kini dapat mengakses volume yang

Anda share dengan beberapa cara. Yang

pertama adalah dengan melakukan mount-

ing di command line mempergunakan pro-

gram mount dengan rumus umum seperti

berikut:

# mount -t nfs <server>:<volume> <mount_point>

Sebagai contoh, apabila server adalah

192.168.0.51 dan volume yang di-share

adalah /opt dan kita ingin melakukan

mounting ke /mnt, maka berikut ini adalah

perintah sebenarnya:

# mount -t nfs 192.168.0.51:/opt /mnt/

Dalam melakukan mounting, perhatikan

tanda titik dua yang memisahkan nama host

dan volume yang dishare.

Cara kedua yang bisa dilakukan adalah

dengan menyebutkan volume yang ingin

kita mount di /etc/fstab. Dengan demikian,

kita bisa menikmati volume yang akan ter-

mount otomatis begitu proses booting sele-

sai dilakukan, atau sekadar dapat melaku-

kan proses mounting dengan hanya menye-

butkan mount point-nya saja.

Berikut ini adalah entri dalam /etc/fstab

untuk server, volume dan mount point pada

cara sebelumnya:

192.168.0.51:/opt /mnt nfs defaults

User ID mappingSalah satu guna dari NFS adalah menye-

diakan sebuah server yang berisikan semua

home direktori user, yang bisa diakses dari

manapun dalam suatu jaringan, oleh user

dengan hak akses baca/tulis. Ini adalah

prinsip yang digunakan pada jaringan disk-

less seperti LTSP.

Ketika user di suatu client mengakses

volume yang di-share oleh NFS server, ma-

ka id user tersebut akan dikirimkan ke NFS

server. Apabila id user sama persis dengan id

user di server dan tidak ada opsi all_squash

yang diberikan, maka user tersebut dapat

mengakses semua fi le yang dimiliki sesuai

dengan haknya, seolah-olah user tersebut

mengakses secara lokal.

Masalahnya, kondisi ini tidak selalu

tercapai. Menggunakan /etc/passwd se-

bagai database password yang tidak me-

miliki fi tur untuk replikasi, akan sangat

report untuk selalu menyinkronisasi data-

base password antar-host. Bagi Anda yang

menghadapi kondisi seperti ini, NFS me-

nyediakan beberapa cara untuk melakukan

mapping user id dan group id secara dina-

mis: fi le statis, NIS, dan mempergunakan

program ugidd yang datang bersama paket

nfs-server. Opsi terakhir ini merupakan

opsi yang paling tidak aman karena siapa

saja bisa melakukan query ke client untuk

mendapatkan username yang valid. Apabi-

la Anda harus menggunakan cara ini, maka

Anda bisa mempergunakan opsi map_dae-

mon, dan rujuklah ke dokumentasi /etc/

exports untuk keterangan lebih lanjut.

Lingkungan WindowsNFS adalah teknologi yang lazim digunakan

di dunia UNIX. Namun, teknologi ini tidak

hanya bisa dinikmati oleh pengguna UNIX.

Pengguna Windows pun dapat bertindak

sebagai NFS server atau NFS client berkat

program Microsoft SFU yang disediakan

oleh Microsoft. Program tersebut dapat di-

download di http://www.microsoft.com/win-

dows/sfu/. Dengan memanfaatkan NFS di

Windows, kita, dalam banyak hal bisa me-

manfaatkan Windows seperti halnya server

UNIX.

Hanya, sebelum Anda memutuskan un-

tuk mengubah protokol fi le sharing di ling-

kungan kerja Anda, hitung-hitunglah dulu

apakah menggunakan NFS untuk jaringan

Windows tepat atau tidak. Sebagai contoh,

apabila terdapat 10 komputer dengan kom-

posisi 8 UNIX dan 2 Windows dilayani oleh

2 server UNIX, maka pilihan menggunakan

NFS mungkin baik apabila akan ada kecen-

derungan untuk bermigrasi ke UNIX secara

bertahap. Namun, apabila kecen derungan

OS client adalah Windows, maka menggu-

nakan NFS hanya menambah kerjaan saja.

Protokol SMB akan lebih cocok diterap-

kan.

NFS adalah teknologi yang sangat ber-

guna. Banyak pihak telah merasakan man-

faatnya. Apabila Anda menggunakan LTSP

misalnya, maka NFS berperan sangat besar.

Di lingkungan-lingkungan kerja berbasis

UNIX, NFS adalah kebutuhan sehari-hari.

Selamat mencoba!

Noprianto ([email protected])Situs NFS.