Screen multiuser

0

GNU screen, atau singkatnya disebut screen, adalah utilitas berbasis konsol (bukan GUI) untuk melakukan multipleksing terminal. Screen mengizinkan kita menjalankan beberapa terminal virtual (umumnya menjalankan shell interaktif) di bawah satu terminal “fisik”. Jadi, kita menjalankan screen lalu di “bawah”-nya dapat membuka lagi window-window terminal, dapat berpindah dari satu window ke window lain, dapat mengatur jalannya proses di dalam masing-masing window, dapat merangkai tampilan window secara vertikal atau horizontal, dsb. Singkatnya, bisa dibilang bahwa screen adalah window manager berbasis teks.

Kegunaan utama screen adalah untuk menyimpan sesi terminal kita, agar jika kita logout atau terputus dari terminal “fisik”, terminal-terminal yang kita buka di bawah screen masih dapat terus berjalan. Amat bermanfaat jika kita ingin menjaga sesi terminal di server remote, tapi koneksi internet kita sendiri buruk atau tidak 24-jam. Kegunaan lainnya misalnya untuk dapat menjalankan banyak terminal sekaligus, agar bisa mengunci terminal, agar bisa menyimpan output terminal atau melakukan kopi paste tanpa mouse, dll.

Screen juga memiliki fitur multiuser, agar lebih dari satu pemakai dapat berbagi sesi terminal secara bersama-sama. Artikel ini akan membahas fitur tersebut, dan beberapa aplikasi yang mungkin dibuat dengannya.

 

Sekilas dasar screen

Seingat saya, Infolinux pernah menyajikan tulisan tentang program screen ini, jadi saya tidak akan membahas dasarnya secara panjang lebar lagi di sini. Namun berikut ini dasar-dasar penggunaan screen:

Untuk mulai menjalankan screen, dari terminal/shell ketik:

% screen

screen akan menampilkan pesan selamat datang. Tekan Enter atau spasi. Maka Anda akan kembali ke prompt shell. Ini adalah sesi terminal baru di bawah screen. Anda dapat lanjut memakai shell, menjalankan program command-line lain, dll.

Bedanya setelah pakai screen apa? Anda dapat membuka lebih dari 1 terminal. Tekan Ctrl-a diikuti c. Maka Anda membuat 1 terminal baru lagi dan diberi prompt shell baru. Terminal Anda sebelumnya masih tetap ada. Tekan Ctrl-a diikuti n untuk kembali ke terminal kesatu. Tekan lagi Ctrl-a, n untuk berpindah ke terminal kedua. Berguna misalnya jika terminal 1 sedang sibuk menjalankan perintah dan Anda belum mendapat prompt shell lagi, maka Anda dapat berpindah dulu ke terminal 2, dst.

Jika Anda sedang login remote ke server dan tiba-tiba koneksi putus, jangan khawatir, screen akan otomatis menyelamatkan (autodetach) sesi-sesi terminal di bawah screen (yang saat ini jumlahnya 2) tersebut.

Sewaktu Anda login lagi ke server remote, ketik:

% screen -r

maka sesi terminal Anda akan direstore ke tampilan! “Ajaib,” begitu mungkin seru Anda jika baru pertama kali menyaksikan ini.

Silakan melihat-lihat manpage screen untuk berbagai opsi yang tersedia.

 

Screen multiuser

Screen memiliki fitur multiuser, namun defaultnya fitur ini dimatikan. Untuk menghidupkannya, di file ~/.screenrc milik Anda, tambahkan baris:

multiuser on

Program screen juga mungkin perlu diset dulu permission-nya agar dapat berjalan dengan mode multiuser. Di Debian atau Ubuntu, caranya:

# chmod u+s /usr/bin/screen
# chmod 755 /var/run/screen

Barulah kini jalankan screen baru (bukan hasil reattach dengan opsi -r). Aktifnya mode multiuser atau tidak dapat dilihat dengan perintah screen -ls:

% screen -ls
There is a screen on:
        8175.pts-6.builder      (Multi, attached)
1 Socket in /var/run/screen/S-steven.

Apa yang berbeda di screen dengan mode multiuser aktif? Sebuah screen yang multiuser dapat di-attach oleh lebih dari satu user pada saat yang bersamaan (termasuk oleh user Unix lain). Pada screen singleuser, screen hanya dapat di-attach oleh user yang sama, dan begitu di-attach di satu terminal, di terminal yang lain jika sedang di-attach otomatis akan ter-detach.

 

Memberi akses read-only pada user lain

Screen mengizinkan kita mengatur akses user lain terhadap window-window dalam screen milik kita dan bahkan untuk setiap perintah. Anda dapat melihat detilnya di manpage screen, perintah acladd, aclchg, dan acldel. Namun untuk sederhananya, mari kita mencoba memberi akses read only pada user lain.

Cobalah login sebagai user Unix lain, misalnya Budi, lalu attach-lah screen milik Steven:

% screen -r steven/

Mula-mula screen akan menolak, karena Steven belum memberikan permission apa-apa kepada budi. Dari screen steven, ketikkan Ctrl-a diikuti : (titik dua), lalu ketik:

aclchg budi -w

-w berarti kita tidak memberi Budi akses write.

Kini cobalah kembali, sebagai Budi, masuk ke screen milik Steven:

% screen -r steven/

maka tampilan screen milik Steven akan muncul di terminal Budi. Jika Steven mengetikkan sesuatu di screennya, maka tampilan Budi akan otomatis terupdate. Namun budi tidak dapat mengetikkan perintah screen apa-apa (Ctrl-a …) untuk mengubah atau merecoki sesi terminal Steven. Efeknya adalah, Budi dapat menonton namun tidak dapat ikut berpartisipasi.

Setting seperti ini cocok untuk aplikasi demo. Misalnya, kita sebagai guru/pelatih/pendemo memperlihatkan cara melakukan sesuatu di terminal dan satu atau lebih murid/pengamat, baik yang berada secara fisik di ruangan yang sama, ataupun jauh terpisah di belahan dunia lain dan login remote ke server yang sama, dapat menyaksikannya secara “siaran langsung”.

Aplikasi lain misalnya ujian (dalam konteks sekolah atau wawancara kerja). Orang yang diuji membuka sesi screen multiuser lalu mengizinkan pengujinya masuk. Penguji attach ke screen milik si teruji lalu mengamati yang terjadi sambil memberi penilaian.

Memberi akses read-write pada user lain

Selain hanya akses read (menonton), tentu kita juga dapat mengizinkan user lain akses read-write. Dari screen milik Steven, coba ketikkan Ctrl-a, : lalu

aclchg budi +rwx "#?"

Kini Budi akan dapat masuk ke screen dan juga mengetikkan perintah ke dalam screen. Apa yang diketik oleh Steven maupun Budi akan sama-sama dapat dirasakan efeknya oleh Budi dan Steven.

Si pemilik screen (Steven) dapat membatasi akses terhadap window atau perintah tertentu saja. Misalnya, agar Budi hanya memiliki akses terhadap window ke-0 saja:

Ctrl-a, :, acldel budi
Ctrl-a, :, aclchg budi +rwx "0,?"

Akses read-write bagi user lain dapat dipakai untuk chatting sederhana misalnya. Untuk ini, di screen Steven:

Ctrl-a, S
cat >/dev/null

di screen Budi:

Ctrl-a, S
Ctrl-a, [Tab]
Ctrl-a, c
cat >/dev/null

di screen Steven:

Ctrl-A, [Tab]
Ctrl-a, n
Ctrl-a, n
Ctrl-a, [Tab]

          Perintah Ctrl-a, S untuk melakukan split menjadi 2 region sehingga dua buah sesi akan tampak bersamaan atas-bawah. Steven lalu mengetikkan perintah shell cat >/dev/null agar bisa mengetik-ngetik tanpa harus men-save ke file. User budi melakukan hal yang sama, men-split tampilan screen-nya agar bisa menulis juga. Ctrl-A, [Tab] untuk berpindah-pindah antarregion. Kedua user saling menulis di shell masing-masing, dan bisa saling melihat. (Lihat Gambar 1).

Selain chatting, aplikasi lainnya adalah untuk asistansi. Steven dapat membantu Budi dengan mengamati apa yang Budi ketik, lalu nanti jika budi mengalami kesulitan, Steven dapat ikut membantu mengetikkan perintah yang dibutuhkan. Atau, sama seperti chatting, kedua user men-split tampilan masing-masing. Steven dapat mengetikkan sesuatu, lalu Budi mengikuti di terminal miliknya. Keduanya dapat saling melihat hasil perintah yang lainnya. Sehingga benar-benar bisa disebut belajar sambil praktik.

 

APLIKASI CLIENT-SERVER SEDERHANA PADA SUATU JARINGAN KOMPUTER

0

APLIKASI CLIENT-SERVER SEDERHANA PADA SUATU JARINGAN KOMPUTER

Apa yang tejadi jika kita hanya mempunyai 1 satu lisensi  Microsoft Office pada jaringan komputer kita, misalkan lisensi MS Office hanya untuk komputer SERVER. Sedangkan komputer CLIENT juga memerlukan aplikasi MS.WORD untuk mengolah kata.

Solusinya dengan men-sharing aplikasi MS WORD ke komputer CLIENT. Dengan kata lain aplikasi MS.WORD menjadi aplikasi CLIENT-SERVER, yaitu client memberdayakan sumberdaya yang dimiliki server; dalam hal ini aplikasi MS WORD.

Caranya sebagai berikut

1. Lakukan sharing folder Microsoft Office di komputeServer.
–>Klik kanan pada folder Microsoft Office kemudian klik Properties
–>Klik tab Sharing, klik Share this folder, kemudian klik Apply.
–>OK, folder Microsoft Office telah ter-sharing.

2. Selanjutnya pada komputer CLIENT
– Ke Windows Explorer.
– Klik My Network Places
– Klik Computer Near Me
– Klik LATIHAN (workgroup)
– Klik Server (computer name)
– klik pada folder ‘Microsoft Office’
– klik older ‘Office10’
– pilih ‘WINWORD.exe’
-Pilih file Winword.exe
3. OK, aplikasi MS.WORD telah di sharing ke komputer Client dan siap digunakan.
Lakukan hal yang sama pada setiap komputer Client.

4. Sekarang komputer CLIENT bisa menggunakan aplikasi MS Word. Tapi dengan catatan komputer SERVER harus dalam keadaan nyala.

5. Aplikasi  MS.WORD telah menjadi aplikasi client-server ?

 

Tags: , , , ,

 

 

 

 

 

CARA Nonaktifkan password penyimpanan di jaringan

Kajadian ini sering di alami oleh komputer yang terintegrasi di jaringan untuk sharing file atau printer, ada saat komputer di salah satu jaringan tidak bisa diakses atau ada prompt login yang meminta anda memasukan username dan password. Bagaimana agar sharing file/printer tanpa ada kendala “permission denied” meskipun file yang di sharing diberi otoritas full sharing. Ini solusinya :

Di windows XP ke “Control Panel > Administrative Tools” Double click “Local Security Policy” mmc snap-in Shortcut.

Lalau di “Local Security Policy” management console buka “Local Policies > Security Options” di sebelah kri anda.

Anda akamn melihat daftar ‘Policy’ di sebelah kanan. Browse ke bagian Policy “Network access: Do not allow storage of credentials or .NET Passports for network authentication”. Double klik, pilih enabled, klick Apply dan OK.

Reboot komputer anda

from: Microsoft

Tags: , , , , , , ,

 

 

cara mengetahui nya silahkan klik tulisan yang berwarna. . . . Okay!!!!!!

Kumpulan Raja Borbor

0

 

 

 

SI RAJA BORBOR Putra kedua dari Tuan Sariburaja, dilahirkan oleh Nai Margiring Laut. Semua keturunannya disebut Marga Borbor.Cucu Raja Borbor yang bernama Datu Taladibabana (generasi keenam) mempunyai 6 orang putra, yang menjadi asal-usul marga-marga berikut :

1. Datu Dalu (Sahangmaima).

2. Sipahutar, keturunannya bermarga Sipahutar.

3. Harahap, keturunannya bermarga Harahap.

4. Tanjung, keturunannya bermarga Tanjung.

5. Datu Pulungan, keturunannya bermarga Pulungan

6. Simargolang, keturunannya bermarga Imargolang.

Keturunan Datu Dalu melahirkan marga-marga berikut :

1. Pasaribu, Batubara, Habeahan, Bondar, Gorat.

2. Tinendang, Tangkar.

3. Matondang.

4. Saruksuk.

5. Tarihoran.

6. Parapat.

7. Rangkuti.

Keturunan Datu Pulungan melahirkan marga-marga Lubis dan Hutasuhut.Limbong Mulana dan marga-marga keturunannya Limbong Mulana adalah putra ketiga dari Guru Tatea Bulan. Keturunannya bermarga Limbong yang mempunyai dua orang putra, yaitu Palu Onggang, dan Langgat Limbong. Putra dari Langgat Limbong ada tiga orang. Keturunan dari putranya yang kedua kemudian bermarga Sihole, dan keturunan dari putranya yang ketiga kemudian bermarga Habeahan. Yang lainnya tetap memakai marga induk, yaitu Limbong.

SAGALA RAJA Putra keempat dari Guru Tatea Bulan. Sampai sekarang keturunannya tetap memakai marga Sagala.

SILAU RAJASilau Raja adalah putra kelima dari Guru Tatea Bulan yang mempunyai empat orang putra, yaitu:

1. Malau

2. Manik

3. Ambarita

4. Gurning

KMK

0

 

 

Saya juga mengikuti Organisasi lain di kampus,nama organisasi yang saya ikuti adalah Keluarga Mahasiswa Kristen!!!!!

saat saya mengikuti organisasi ini saya bertambah kenalan dan tahu bagaimana memiliki keluarga yang seiman dengan saya!!!!

 

Membuat Multi-user dalam CMS WordPress

0

Kebutuhan :  CMS WordPress (tutorial ini menggunakan wordpress 3.0.1)yang telah diinstal dalam server (untuk studi kasus ini wordpress diinstal pada localhost)

Mungkin kamu pernah melihat suatu blog yang ditulis oleh banyak penulis yang berbeda – beda. Blog seperti ini biasa disebut dengan collaboration blogg (blog kolaborasi). Sebagai contoh, situs ini (itx.web.id) adalah contoh dari blog kolaborasi, yang ditulis oleh banyak penulis lepas

Kita bisa melakukannya dengan CMS WordPress.

Berikut adalah langkah-langkahnya.

1. Login ke wordpress admin dengan username dan password anda.

2. Anda akan diarahkan ke halaman dashboard. Klik menu Users

 

3.  Maka akan ditampilkan daftar user – user yang telah terdaftar pada wordpress anda. Sebelum anda menambahkan user, biasanya hanya akan ada satu user saja (admin –> yaitu anda)

 

4. Untuk menambah user baru, klik button Add New.

5. Masukkan data – data user baru pada form yang muncul. Untuk role, maksudnya adalah posisi /  peran dari user yang akan dibuat. Berikut adalah keterangan dari masing – masing role yang ada.

a. Administrator : User yang memiliki kewenangan penuh terhadap sistem, termasuk membuat, mengubah dan menghapus user yang ada dalam sistem.

b. Editor : User editor memiliki kewenangan untuk membuat posting baru dan mengedit semua postingan oleh semua user yang ada.

c. Author : User author hanya memiliki kewenangan untuk membuat postingan baru dan hanya bisa mengedit postingannya sendiri.

d. Subscriber : User ini hanya bisa melihat postingan yang ada (mendapat update ketika ada posting baru)

Lihat gambar 3 dibawah sebagai contoh pengisian data user baru.

6. Klik button Add User untuk menyimpan user. Maka akan ditampilkan detail dari user baru yang baru saja dibuat.

Sekarang anda sudah bisa membuat sebuah collaboration blog sendiri

mengikuti Cifor

0

 

 

 

 

Disamping saya kuliah,saya mengikuti kegiatan community d’kampus yaitu CIFOR. . . .

Cifor dapat memberikan pelajaran tambahan buat saya,dimana saat saya kuliah pelajaran2 yang tidak saya dapat mengerti bisa saya mengerti dalam Community saya ikuti!!!!!!

dulu saya tidak tahu,menahu pelajaran Web. . . .tapi setelah saya ikuti yang nama na Community Family Of The Road saya dapat mengerti. . . .

semoga hal-hal baik yang saya ikuti slama ini bermanfaat untuk kedepan!!!dan saya bisa juga berbagi sesama saya!!!!!!!!

Kuliah

0

salah satu kegiatan saya saat ini adalah kuliah.

saya kuliah di Budidarma Medan,saya tingkat 3(Tiga), semester 5(Lima).

Sampai saat ini kuliah saya lancar2,slama saya masih diberikan Tuhan kesempatan!!!!

semoga Saya bisa membahagiakan orang-orang yang ada didekat saya saat ini!!!!!!!!!!

Jaringan Client Server

0

                       Jaringan Client Server

CLIENT SERVER

1.Pendahuluan

Pemanfaatan perangkat lunak berperan erat bagi perkembangan di semua lini, baik itu institusi pendidikan, lingkungan bisnis, maupun kalangan pribadi. Tentunya tidak berpulang dari penggunaan perangkat lunak tersebut, sampai sejauh mana fungsinya dapat diberdayakan dan seberapa besar biaya yang dibutuhkan untuk penerapannya. Pemilihan perangkat lunak yang sejalan dengan kebutuhan harus benar-benar diperhatikan, karena itu perencanan awal dimulai dengan mengindentifikasi kebutuhan di lingkungan yang ada. Setelah proses identifikasi kebutuhan didaftarkan, kita dapat memilih perangkat lunak seperti apa yang akan digunakan. Tulisan kali ini, memperkenalkan salah satu bentuk client/server dengan mengambil contoh penggunaan ”Web Server”, yang beroperasi di lingkungan GNU/Linux dan penggunaan aplikasi client browser. Pemilihan sengaja jatuh ke lingkungan tak berbayar untuk memamfaatkan perangkat lunak tersebut, alias proyek opensource.

Pemamfaatan web server menambah khazanah pengembangan aplikasi web, seperti

–       elearning,

–       egovernment,

–       ecommerce.

Pendistribusian informasi di satu layanan dan penggunaan aplikasi client yang sungguh sangat mudah – hampir di setiap perangkat keras (PC, PDA) sudah terdapat browser. Web server sebagai pemberi pelayanan membutuhkan sistem operasi untuk menjalankan fungsinya. Sehingga kemampuan sistem operasi menangani web server menjadi perhatiannya. Yang tentunya komunikasi antar sistem operasi dengan aplikasi web server harus dimengerti kedua unit. Semua itu tak terlepas dari pengembangan model OSI (Open Systems Interconnection Reference) dan TCP/IP (Transmission Control Protocol/Internet Protocol) yang memungkinkan komunikasi antar computer yang satu dengan lainnya, perangkat keras, perangkat lunak client/ server tentu menggunakan kaedah ini karena kaedah yang digunakan menjadi acuan para pengembang perangkat lunak maupun perangkat keras (vendor). Lebih jauh daripada itu, sistem operasi melakukan semua tugastugas penting dalam komputer, dan

menjamin aplikasiaplikasi yang berbeda dapat berjalan secara bersamaan dengan lancar.

Sistem Operasi menjamin aplikasi software lainnya dapat menggunakan memori, melakukan input dan output terhadap peralatan lain, dan memiliki akses kepada sistem file. Apabila beberapa aplikasi berjalan secara bersamaan, maka Sistem Operasi mengatur skedule yang tepat, sehingga sedapat mungkin semua proses yang berjalan mendapatkan waktu yang cukup untuk menggunakan prosesor (CPU) serta tidak saling mengganggu. Dalam banyak kasus, sistem operasi menyediakan suatu pustaka dari fungsi-fungsi standar, dimana aplikasi lain dapat memanggil fungsifungsi itu, sehingga dalam setiap pembuatan program baru, tidak perlu membuat fungsifungsi

tersebut dari awal.

Sistem Operasi secara umum terdiri dari beberapa bagian:

  1. 1.    Mekanisme Boot, yaitu meletakkan kernel ke dalam memory
  2. Kernel, yaitu inti dari sebuah Sistem Operasi
  3. Command Interpreter atau shell, yang bertugas membaca input dari pengguna
  4. Pustakapustaka, yaitu yang menyediakan kumpulan fungsi dasar dan standar yang
  5. dapat dipanggil oleh aplikasi lain
  6. Driver untuk berinteraksi dengan hardware eksternal, sekaligus untuk mengontrol mereka. Sebagian Sistem Operasi hanya mengizinkan satu aplikasi saja yang berjalan pada satu waktu, tetapi sebagian besar Sistem Operasi baru mengizinkan beberapa aplikasi berjalan secara simultan pada waktu yang bersamaan. Sistem Operasi seperti itu disebut sebagai Multitasking Operating System. Beberapa Sistem Operasi berukuran sangat besar dan kompleks, serta inputnya tergantung kepada input pengguna, sedangkan Sistem Operasi lainnya sangat kecil dan dibuat dengan asumsi bekerja tanpa intervensi manusia sama sekali. Tipe yang pertama sering disebut sebagai Desktop OS, sedangkan tipe kedua adalah RealTime OS. Apache Web server dapat berjalan di sistem operasi yang populer saat ini, seperti Windows, GNU, Unix maupun Mac OS. Pemilihan GNU sendiri berdasarkan beberapa pertimbangan pribadi seperti pengalaman dalam menggunakannya maupun keandalan dari sistem
  • operasinya. Dengan menggunakan komputer sekelas desktop, sistem operasi ini bisa berjalan dan berfungsi sebagai web server, dipermudah dengan proses instalasi dengan pemilihan paketpaket server yang diinginkan – web server.

Multi User 2

0

Pendahuluan

Biasanya, istilah Sistem Operasi sering ditujukan kepada semua perangkat lunak yang masuk dalam satu paket dengan sistem komputer sebelum aplikasi-aplikasi perangkat lunak terinstal. Sistem operasi adalah perangkat lunak sistem yang bertugas untuk melakukan kontrol dan manajemen perangkat keras serta operasi-operasi dasar sistem, termasuk menjalankan perangkat lunak aplikasi seperti program-program pengolah kata dan peramban web.

Secara umum, Sistem Operasi adalah perangkat lunak pada lapisan pertama yang ditempatkan pada memori komputer pada saat komputer dinyalakan. Sedangkan software-software lainnya dijalankan setelah Sistem Operasi berjalan, dan Sistem Operasi akan melakukan layanan inti umum untuk software-software itu. Layanan inti umum tersebut seperti akses ke disk, manajemen memori, skeduling task, dan antar-muka user. Sehingga masing-masing software tidak perlu lagi melakukan tugas-tugas inti umum tersebut, karena dapat dilayani dan dilakukan oleh Sistem Operasi. Bagian kode yang melakukan tugas-tugas inti dan umum tersebut dinamakan dengan “kernel” suatu Sistem Operasi

Kalau sistem komputer terbagi dalam lapisan-lapisan, maka Sistem Operasi adalah penghubung antara lapisan hardware dan lapisan software. Lebih jauh daripada itu, Sistem Operasi melakukan semua tugas-tugas penting dalam komputer, dan menjamin aplikasi-aplikasi yang berbeda dapat berjalan secara bersamaan dengan lancar. Sistem Operasi menjamin aplikasi software lainnya dapat menggunakan memori, melakukan input dan output terhadap peralatan lain, dan memiliki akses kepada sistem berkas. Apabila beberapa aplikasi berjalan secara bersamaan, maka Sistem Operasi mengatur schedule yang tepat, sehingga sedapat mungkin semua proses yang berjalan mendapatkan waktu yang cukup untuk menggunakan prosesor (CPU) serta tidak saling mengganggu.

Dalam banyak kasus, Sistem Operasi menyediakan suatu pustaka dari fungsi-fungsi standar, dimana aplikasi lain dapat memanggil fungsi-fungsi itu, sehingga dalam setiap pembuatan program baru, tidak perlu membuat fungsi-fungsi tersebut dari awal.

Sistem Operasi secara umum terdiri dari beberapa bagian:

  1. Mekanisme Boot, yaitu meletakkan kernel ke dalam memory
  2. Kernel, yaitu inti dari sebuah Sistem Operasi
  3. Command Interpreter atau shell, yang bertugas membaca input dari pengguna
  4. Pustaka-pustaka, yaitu yang menyediakan kumpulan fungsi dasar dan standar yang dapat dipanggil oleh aplikasi lain
  5. Driver untuk berinteraksi dengan hardware eksternal, sekaligus untuk mengontrol mereka.

Sebagian Sistem Operasi hanya mengizinkan satu aplikasi saja yang berjalan pada satu waktu (misalnya DOS), tetapi sebagian besar Sistem Operasi baru mengizinkan beberapa aplikasi berjalan secara simultan pada waktu yang bersamaan. Sistem Operasi seperti ini disebut sebagai Multi-tasking Operating System (misalnya keluarga sistem operasi UNIX). Beberapa Sistem Operasi berukuran sangat besar dan kompleks, serta inputnya tergantung kepada input pengguna, sedangkan Sistem Operasi lainnya sangat kecil dan dibuat dengan asumsi bekerja tanpa intervensi manusia sama sekali. Tipe yang pertama sering disebut sebagai Desktop OS, sedangkan tipe kedua adalah Real-Time OS, contohnya adalah Windows, Linux, Free BSD, Solaris, palm, symbian, dan sebagainya.

[sunting] Layanan inti umum

Seiring dengan berkembangnya Sistem Operasi, semakin banyak lagi layanan yang menjadi layanan inti umum. Kini, sebuah OS mungkin perlu menyediakan layanan network dan koneksitas internet, yang dulunya tidak menjadi layanan inti umum. Sistem Operasi juga perlu untuk menjaga kerusakan sistem komputer dari gangguan program perusak yang berasal dari komputer lainnya, seperti virus. Daftar layanan inti umum akan terus bertambah.

Program saling berkomunikasi antara satu dengan lainnya dengan Antarmuka Pemrograman Aplikasi, Application Programming Interface atau disingkat dengan API. Dengan API inilah program aplikasi dapat berkomunikasi dengan Sistem Operasi. Sebagaimana manusia berkomunikasi dengan komputer melalui Antarmuka User, program juga berkomunikasi dengan program lainnya melalui API.

Walaupun demikian API sebuah komputer tidaklah berpengaruh sepenuhnya pada program-program yang dijalankan diatas platform operasi tersebut. Contohnya bila program yang dibuat untuk windows 3.1 bila dijalankan pada windows 95 dan generasi setelahnya akan terlihat perbedaan yang mencolok antara window program tersebut dengan program yang lain.

[sunting] Sistem Operasi saat ini

Sistem operasi-sistem operasi utama yang digunakan komputer sistem umum (termasuk PC, komputer personal) terbagi menjadi 3 kelompok besar:

  1. Keluarga Microsoft Windows – yang antara lain terdiri dari Windows Desktop Environment (versi 1.x hingga versi 3.x), Windows 9x (Windows 95, 98, dan Windows ME), dan Windows NT (Windows NT 3.x, Windows NT 4.0, Windows 2000, Windows XP, Windows Server 2003, Windows Vista, Windows Server 2008, Windows 7 (Seven) yang dirilis pada tahun 2009, dan Windows 8 yang akan dirilis pada tahun 2012 atau lebih lambat)).
  2. Keluarga Unix yang menggunakan antarmuka sistem operasi POSIX, seperti SCO UNIX, keluarga BSD (Berkeley Software Distribution), GNU/Linux, MacOS/X (berbasis kernel BSD yang dimodifikasi, dan dikenal dengan nama Darwin) dan GNU/Hurd.
  3. Mac OS, adalah sistem operasi untuk komputer keluaran Apple yang biasa disebut Mac atau Macintosh. Sistem operasi yang terbaru adalah Mac OS X versi 10.6 (Snow Leopard). Musim panas 2011 direncanakan peluncuran versi 10.7 (Lion).

Sedangkan komputer Mainframe, dan Super komputer menggunakan banyak sekali sistem operasi yang berbeda-beda, umumnya merupakan turunan dari sistem operasi UNIX yang dikembangkan oleh vendor seperti IBM AIX, HP/UX, dll.

[sunting] Proses

Prosesor mengeksekusi program-program komputer. Prosesor adalah sebuah cip dalam sistem komputer yang menjalankan instruksi-instruksi program komputer. Dalam setiap detiknya prosesor dapat menjalankan jutaan instruksi.

Program adalah sederetan instruksi yang diberikan kepada suatu komputer. Sedangkan proses adalah suatu bagian dari program yang berada pada status tertentu dalam rangkaian eksekusinya. Di dalam bahasan Sistem Operasi, kita lebih sering membahas proses dibandingkan dengan program. Pada Sistem Operasi modern, pada satu saat tidak seluruh program dimuat dalam memori, tetapi hanya satu bagian saja dari program tersebut. Sedangkan bagian lain dari program tersebut tetap beristirahat di media penyimpan disk. Hanya pada saat dibutuhkan saja, bagian dari program tersebut dimuat di memory dan dieksekusi oleh prosesor. Hal ini sangat menghemat pemakaian memori.

Beberapa sistem hanya menjalankan satu proses tunggal dalam satu waktu, sedangkan yang lainnya menjalankan multi-proses dalam satu waktu. Padahal sebagian besar sistem komputer hanya memiliki satu prosesor, dan sebuah prosesor hanya dapat menjalankan satu instruksi dalam satu waktu. Maka bagaimana sebuah sistem prosesor tunggal dapat menjalankan multi-proses? Sesungguhnya pada granularity yang sangat kecil, prosesor hanya menjalankan satu proses dalam satu waktu, kemudian secara cepat ia berpindah menjalankan proses lainnya, dan seterusnya. Sehingga bagi penglihatan dan perasaan pengguna manusia, seakan-akan prosesor menjalankan beberapa proses secara bersamaan.

Setiap proses dalam sebuah sistem operasi mendapatkan sebuah PCB (Process Control Block) yang memuat informasi tentang proses tersebut, yaitu: sebuah tanda pengenal proses (Process ID) yang unik dan menjadi nomor identitas, status proses, prioritas eksekusi proses dan informasi lokasi proses dalam memori. Prioritas proses merupakan suatu nilai atau besaran yang menunjukkan seberapa sering proses harus dijalankan oleh prosesor. Proses yang memiliki prioritas lebih tinggi, akan dijalankan lebih sering atau dieksekusi lebih dulu dibandingkan dengan proses yang berprioritas lebih rendah. Suatu sistem operasi dapat saja menentukan semua proses dengan prioritas yang sama, sehingga setiap proses memiliki kesempatan yang sama. Suatu sistem operasi dapat juga mengubah nilai prioritas proses tertentu, agar proses tersebut akan dapat memiliki kesempatan lebih besar pada eksekusi berikutnya (misalnya: pada proses yang sudah sangat terlalu lama menunggu eksekusi, sistem operasi menaikkan nilai prioritasnya).

[sunting] Status Proses

Jenis status yang mungkin dapat disematkan pada suatu proses pada setiap sistem operasi dapat berbeda-beda. Tetapi paling tidak ada 3 macam status yang umum, yaitu:

  1. Ready, yaitu status dimana proses siap untuk dieksekusi pada giliran berikutnya
  2. Running, yaitu status dimana saat ini proses sedang dieksekusi oleh prosesor
  3. Blocked, yaitu status dimana proses tidak dapat dijalankan pada saat prosesor siap/bebas

Client Server

                                                CLIENT SERVER
Pengertian Client Server
Client-Server adalah arsitektur jaringan yang memisahkan client(biasanya aplikasi yang menggunakan GUI ) dengan server. Masing-masing client dapat meminta data atau informasi dari server.
Sistem client server didefinisikan sebagai sistem terdistribusi, tetapi ada beberapa perbedaan karakteristik yaitu :
1.Servis (layanan)
oHubungan antara proses yang berjalan pada mesin yang berbeda
oPemisahan fungsi berdasarkan ide layanannya.
oServer sebagai provider, client sebagai konsumen

2.Sharing resources (sumber daya)
oServer bisa melayani beberapa client pada waktu yang sama, dan meregulasi akses bersama untuk share sumber daya dalam menjamin konsistensinya.
3.Asymmetrical protocol (protokol yang tidak simetris )
Many-to-one relationship antara client dan server.Client selalu menginisiasikan dialog melalui layanan permintaan, dan server menunggu secara pasif request dari client.
4.Transparansi lokasi
Proses yang dilakukan server boleh terletak pada mesin yang sama atau pada mesin yang berbeda melalui jaringan.Lokasi server harus mudah diakses dari client.

5.Mix-and-Match
Perbedaan server client platforms
6.Pesan berbasiskan komunikasi
Interaksi server dan client melalui pengiriman pesan yang menyertakan permintaan dan jawaban.
7.Pemisahan interface dan implementasi
Server bisa diupgrade tanpa mempengaruhi client selama interface pesan yang diterbitkan tidak berubah.
Client Server System

Client / Server Application

                Perbedaan Tipe Client-Server
1.File Servers
oFile server vendors mengklaim bahwa mereka pertama menemukan istilah client-server.
oUntuk sharing file melalui jaringan

<img src="image/png;base64,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

Multi user

0

Unix Multiuser

Sebagian besar dari kita, apalagi para programer dan sysadmin Web Unix, pasti sudah cukup familiar dengan software ini. MySQL—yang pernah dibahas di edisi 4 mwmag—merupakan server RDBMS open source terpopuler, terutama untuk aplikasi Web. Artikel kali ini akan membahas isu-isu keamanan seputar menjalankan daemon MySQL di lingkungan multiuser, seperti di server shared hosting. Dalam lingkungan multiuser ada beberapa hal yang perlu diperhatikan, terutama yang berkaitan dengan isolasi user yang satu dengan user lain. Meskipun ada pula sebagian poin-poin yang diterangkan—seperti pengaturan permission MySQL—yang dapat diterapkan untuk Windows, namun jelas fokus artikel ini adalah pada lingkungan Unix/Linux.

Kita langsung mulai saja dengan tip yang pertama. Jika Anda punya budget cukup, pasanglah daemon MySQL (mysqld) di mesin terpisah. Cara ini adalah termasuk yang paling aman, karena mesin terpisah ini dapat kita taruh di belakang firewall sehingga tidak menerima koneksi dari Internet melainkan dari mesin-mesin tertentu saja di jaringan lokal. Juga, tiap user yang menggunakan database tidak perlu kita beri akses shell. Semua port dapat kita tutup kecuali port default mysqld saja (3306) yang kita buka. Tidak ada yang bisa menyentuh langsung file-file database maupun log kecuali user mysql di mesin database tersebut, dan juga admin mesin tersebut.

Meskipun MySQL merupakan database multiuser, tapi daemon mysqld hanya berjalan sebagai satu user Unix saja (defaultnya adalah mysql). Tidak ada wrapping seperti halnya pada Apache + suexec/cgiwrap. User Unix ini memiliki akses ke semua database di direktori data (defaultnya adalah /var/lib/mysql). Tentu saja MySQL memiliki sistem access privilege yang cukup mendetil untuk mengatur klien mana yang dapat mengakses tabel atau database mana. Namun bug pada kode mysqld atau miskonfigurasi sistem privilegenya bisa saja mengakibatkan sebuah database berisi data rahasia terbuka bagi user MySQL lain. Misalnya lewat LOAD DATA INFILE atau LOAD LOCAL DATA INFILE maupun lewat SELECT INTO OUTFILE, yang memungkinkan penyerang berpotensi menimpa file database milik user lain.

Jika Anda mempunyai sebuah database yang datanya sensitif atau harus benar-benar private, Anda bisa dapat menjalankan mysqld terpisah. Tiap mysqld berjalan sebagai user Unix yang berbeda, sehingga satu mysqld tidak dapat mengganggu mysqld yang lainnya. Bug pada mysqld yang satu tidak dapat mengganggu mysqld lainnya, karena masing-masing tidak bisa menyentuh direktori data daemon lain.

Contoh berikut adalah user steven yang menjalankan sendiri daemon MySQL pribadi, berjalan sebagai user steven dan port 3366. Daemon MySQL utama, sebagai user mysql, tidak dapat menyentuh database.

$ mkdir /home/steven/mysql
$ mysql_install_db --datadir=/home/steven/mysql
$ /usr/sbin/mysqld --datadir=/home/steven/mysql --port=3366 \
    --socket=/home/steven/mysql/mysql.sock &

Anda dapat mengganti port 3366 dengan port kesukaan sendiri. Sebelum memakai, Anda perlu memberi password pada user MySQL root tentunya:

$ mysqladmin -u root -S /home/steven/mysql/mysql.sock password RAHASIA

Ganti RAHASIA dengan password sebenarnya. Selanjutnya nanti sewaktu melakukan koneksi ke mysqld ini dengan command line client mysql misalnya, Anda perlu menyebutkan opsi -h (host) dan -P (port) atau -S (socket). Misalnya, koneksi via soket Unix:

$ mysql -u root -S /home/steven/mysql/mysql.sock

Atau koneksi via TCP:

$ mysql -u root -h 127.0.0.1 -P 3366

Tapi, lagi-lagi, jika jumlah user banyak dan masing-masing ingin menjalankan mysqld-nya masing-masing, tentu saja overheadnya besar.

Sebagai seorang admin database, mau tidak mau hal yang satu ini harus dikuasai baik-baik. Sistem Access Privilege adalah cara utama MySQL dalam membatasi user dan host mana saja yang bisa melakukan koneksi, menyimpan password masing-masing user, dan membatasi kemampuan user dalam memanipulasi database (apakah hanya bisa melakukan SELECT saja, atau SELECT dan UPDATE, dst). Apa artinya daemon MySQL yang terisolasi dari mesin maupun daemon lain apabila ia dengan cerobohnya menerima koneksi dari sembarang user dan host?

Sistem privilege MySQL cukup mendetil dan menurut saya lebih simpel tapi mendetil daripada sistem privilege PostgreSQL, meskipun dari segi otentikasi sistem PostgreSQL sebetulnya lebih fleksibel. Pada dasarnya seluruh informasi pengaturan privilege disimpan dalam sebuah database khusus bernama mysql. Penjelasan mendetil mengenai di luar cakupan artikel ini, tapi sebagai tip beberapa hal berikut ini sebaiknya diikuti. Pertama, sebaiknya tiap user diberi password. Kedua, tabel user di database mysql ini sangat sensitif karena berisi password, jadi jangan biarkan user manapun memiliki privilege SELECT terhadap. Ketiga, batasi privilege FILE maupun PROCESS, jangan berikan kecuali benar-benar perlu. Keempat, jangan biarkan satu user database melihat database lain kecuali benar-benar perlu.

Dalam server shared hosting yang saya kelola, demi kesederhanaan, tiap user database hanya boleh mengakses satu database, dan daftar privilegenya seperti ini: Entri di tabel user: ('localhost', 'USER', password('PASSWORD'), 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N'). Entri di tabel db: ('localhost', 'DATABASE', 'USER', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'N', 'Y', 'Y', 'Y'). Artinya, si user USER hanya dapat melihat database DATABASE, hanya bisa melakukan koneksi dari mesin lokal melalui soket Unix, dan tidak memiliki privilege GRANT. Privilege FILE diberikan, tapi berhubung tiap skrip CGI diwrap, maka setidaknya akan lebih sulit bagi seorang penyerang untuk menciptakan file sebagai user Unix lain.

Dalam sebuah server shared hosting misalnya, umumnya database diakses dari skrip CGI/PHP/ASP di server yang sama. Jika kita ingin agar hanya user atau skrip dari mesin lokal saja yang dapat melakukan koneksi ke daemon MySQL maka kita dapat mematikan opsi listening di soket TCP. Seperti kita ketahui, MySQL mendengarkan koneksi di soket Unix (defaultnya di /var/lib/mysql/mysql.sock) dan di port TCP (defaultnya di port 3306). Soket Unix hanya untuk klien lokal, sementara soket TCP dapat digunakan untuk koneksi jaringan.

Untuk membuat mysqld tidak mendengarkan di soket TCP sama sekali, taruh baris berikut di /etc/my.cnf:

[mysqld]
skip-networking

lalu restart mysqld. Atau tambahkan --skip-networking saat menjalankan mysqld.

Setelah memakai opsi ini, bahkan koneksi ke 127.0.0.1 pun akan ditolak dengan pesan Connection Refused. Karena memang tidak ada soket TCP yang mendengarkan. Jadi untuk melakukan koneksi ke daemon MySQL kita harus menggunakan host localhost agar soket Unixlah yang dipakai sebagai metode koneksi.

Keuntungan menggunakan soket Unix, selain sedikit lebih cepat (karena tidak ada overhead protokol TCP/IP), isolasi filesystem pun berlaku sebagai lapisan pelindung. Database milik user steven di contoh Tip 2 tadi misalnya, tidak dapat dicapai sama sekali baik oleh klien di mesin lain maupun oleh user Unix lain di mesin yang sama, karena defaultnya lokasi soket Unix di /home/steven/mysql/mysql.sock ini tertutup dari user lain. Sehingga database ini bersifat pribadi dan hanya bisa diakses oleh user steven sendiri maupun oleh skrip CGI/PHP yang berjalan sebagai user steven. Daemon MySQL utama, di lain pihak, merupakan daemon yang terbuka bagi semua user, karena /var/lib/mysql/mysql.sock secara default dapat diakses oleh semua user.

Tentu saja, kadang-kadang database MySQL ingin diakses selain dari localhost (misalnya, ingin diakses dari klien GUI di komputer Windows). Dalam kasus ini, mau tidak mau kita harus membuka lagi soket TCP dan kembali mengandalkan sistem privilege MySQL dalam membatasi host.

Dalam lingkungan multiuser, tiap user semestinya diberi database masing-masing dan database default yang diberikan oleh distribusi MySQL, yaitu test, biasanya tidak ada gunanya. Ada baiknya database ini dihapus saja sehingga tidak sembarang user yang bisa mengakses database ini dan lalu memenuhi disk atau melakukan serangan DOS misalnya. Sebab defaultnya adalah semua user database bisa melihat database test. Untuk menghapus database test, berikan perintah ini dari klien command line mysql:

mysql> DELETE FROM db WHERE db='test' OR db='test_%';
mysql> FLUSH PRIVILEGES;

Chroot adalah fasilitas yang disediakan di banyak sistem operasi Unix untuk membuat filesystem root “virtual” bagi program, misalnya di bawah /home/steven/root, sehingga program menganggap path tersebut adalah / dan tidak bisa melihat path di atasnya (/home/steven maupun /home maupun / asli). Chroot banyak bermanfaat untuk memenjarakan program sehingga tidak bisa menyentuh file-file di luar direktori yang sudah kita tetapkan sebagai penjaranya.

Tip ini cukup berhubungan dengan tip 2 (tiap user memperoleh mysqld masing-masing). Di lingkungan virtual server pun chroot sering dilakukan terhadap tiap-tiap daemon agar masing-masing tidak dapat melihat file milik daemon lain.

Chroot saat ini harus dilakukan sebagai root karena merupakan operasi privileged. Menyambung contoh di tip 2, berikut ini cara menjalankan mysqld milik user steven dan memenjarakannya di /home/steven/mysql. mysqld memiliki opsi --chroot sehingga kita tidak perlu mengkopi /usr/sbin/mysqld-nya itu sendiri, namun terakhir saya coba masih bermasalah, sehingga kita akan melakukan chroot menggunakan /usr/sbin/chroot. Contoh ini untuk RedHat Linux (saya memakai versi 7.2) dan distribusi RPM binary dari MySQL AB (saya memakai 3.23.51).

$ chdir /home/steven
$ mkdir -p fakeroot/{var/lib,etc,tmp,lib,usr/sbin,usr/share}
$ mv mysql fakeroot/var/lib/   # direktori data yg sudah dibuat di tip 2
$ echo -e "root:*:0:0:::\nnobody:*:99:99:::\nsteven:*:500:500:::" \
    > fakeroot/etc/passwd
$ echo -e "root::0:\nsteven::500:" > fakeroot/etc/group
$ cp -a /lib/{ld-*,libc.so*,libc-*.so,libnsl*,libnss_files*,libtermcap*} \
    fakeroot/lib/
$ cp -a /usr/sbin/mysqld fakeroot/usr/sbin/
$ cp -a /usr/share/mysql fakeroot/usr/share/

# /usr/sbin/chroot /home/steven/fakeroot /usr/sbin/mysqld \
    --user=steven \
    --datadir=/var/lib/mysql \
    --port=3366 \
    --socket=/var/lib/mysql/mysql.sock

Untuk instalasi seperti di atas, dibutuhkan overhead ruang disk sebesar sekitar 12MB untuk mengkopi library Linux dan file-file lain yang diperlukan ke bawah /home/steven/fakeroot (karena jika tidak, setelah dilakukan chroot maka mysqld tidak akan dapat mencari library yang dibutuhkan). Kita juga memerlukan /etc/passwd dan /etc/group “dummy”. Ganti UID dan GID 500 sesuai UID dan GID user yang akan menjalankan mysqld. Setelah semua file-file siap, kita memanggil mysqld. Perhatikan bahwa opsi-opsi path di --datadir dan --socket adalah relatif terhadap fakeroot. Program-program yang berada di bawah chroot yang sama akan melihat soket dan direktori data MySQL milik steven ini di /var/lib/mysql, tapi sebetulnya—seperti yang akan dilihat program-program lain yang berada di luar chroot—lokasi asli ada di /home/steven/fakeroot/var/lib/mysql.

Chroot berguna terutama jika Anda tidak mempercayai MySQL versi development atau beta (mis: versi 4.0.2 saat ini). Chroot juga bermanfaat dalam menutup kemungkinan perintah SQL LOAD DATA INFILE dan SELECT INTO OUTFILE mengintip dan merusak file-file yang tidak diinginkan. Chroot juga perlu Anda pertimbangkan bila sebuah server memuat beberapa user yang benar-benar tidak saling mempercayai satu sama lain. Dalam kenyataan sehari-hari, saya jarang menggunakan chroot.

LOAD DATA LOCAL INFILE adalah fasilitas agar klien bisa membaca sebuah file dari filesystem dan memasukkannya ke tabel database. Sejak 3.23.49, LOAD DATA LOCAL INFILE sudah dimatikan secara default. Jika ada skrip CGI atau ASP di mesin shared hosting Anda yang tidak diwrap, maka ada potensi perintah SQL tersebut dipakai untuk membaca file-file sebagai user nobody misalnya (dan mengambil source code skrip-skrip milik user lain lewat memuatnya ke tabel database lalu nanti ke file melalui SELECT INTO OUTFILE atau lewat skrip yang melakukan SELECT dan mencetaknya ke file). Jika Anda cukup yakin bahwa semua skrip terwrap, maka barulah Anda bisa mengaktifkan perintah SQL ini dengan memberikan opsi:

[mysql]
local-infile

di /etc/my.cnf. Skrip pun harus memberikan perintah mysql_options() dulu—saat ini belum didukung oleh PHP—sebelum bisa memberikan perintah SQL LOAD DATA LOCAL INFILE.

Jika koneksi MySQL Anda hanya lokal via soket Unix, Anda cukup aman di poin ini. Tapi jika daemon MySQL Anda harus menerima klien (atau melakukan replikasi) via koneksi TCP dari Internet, maka ada potensi pencurian data melalui sniffing paket. Password dan data-data sensitif bisa melayang dari hop ke hop dan siap disadap. Ada baiknya Anda mempertimbangkan mensetup SSL untuk koneksi MySQL.

MySQL baru mendukung koneksi SSL natif mulai 4.0. Karena itu, kita bisa menggunakan stunnel untuk mengenkripsi saluran komunikasi. Prinsip stunnel adalah, di sisi klien dan server kita memasang gerbang stunnel masuk agar terbentuk “terowongan”. Masing-masing klien dan server asli berkomunikasi secara lokal (via localhost) dengan stunnel. Sementara barulah stunnel di kedua sisi saling melakukan pembicaraan SSL. Berikut sebuah contoh. Di sisi klien (mis, beralamat di klien.com):

# /usr/sbin/stunnel -P/tmp/ -c -d 3306 -r server.com:3307

Di sisi server (yang beralamat mis di server.com):

# cd /usr/share/ssl/certs
# openssl req -new -x509 -days 365 -nodes -out stunnel.pem \
    -keyout stunnel.pem
# /usr/sbin/stunnel -P/tmp/ -p stunnel.pem -d 3307 -r localhost:3306

Lalu dari klien.com lakukan koneksi MySQL ke server server.com seperti biasa.