30 Kasım 2010 Salı

Program ve Özellikleri


Program ve Özellikleri:
Program ekle kaldrı olarak da bilinen bu özellikle bilgisayarınızdaki gereksiz programları kaldırabilir veya üzerinde değişimler yaabilirsiniz.

Klavye

Klavye: 

Bu özelliği kullanarak imleç yanıp sönme hızını ve karakter yineleme gibi klavyeye ait ayarları kontrol edip değiştirebilirsiniz.

Fare


Fare:

Bu özelliği kullanarak farenizdeki güğme yapılandırmasını, farenin hıznı ve fare işaretçisinin şeklini belirleyip ayarlarını kontrol edebilirsiniz.

Erişim Kolaylığı Merkezi


Erişim Kolaylığı Merkezi:

Bu özelliği kullanarak bilgisayar kullanımınızı kolaylaştırabilirsiniz.
Windows bu listeyi otomatik olarak tarayıp başlatabilir. Bunun için denetim masasında ki vurgulanan ARAÇ ÇUBUĞU'ndaki seçeneği tıklamanız yeterlidir.

Ebeveyn Denetimleri


Ebeveyn Denetimleri:

Denetim Masasındaki bu özellik ; aile koruması, çocuklarınızn çevrimiçi ortamda nerleri görüp göremeyeceği, kimlerle konuşup konuşamayacağını seçmenizi belirler. Ve çevrimiçi ekinlikleri hakkında rapor almanızı sağlar.

Dizin Oluşturma Seçenekleri


Dizin Oluşturma Seçenekleri:

Bu özelliği kullanarak hızlı arama için Windows'un dizin oluşturma şeklini değiştirir.

Bölge ve Dil Seçenekleri


Bölge ve Dil Seçenekleri:
Bu özelliği kullanarak diller, sayılar üzerinde değişim yapabilirsiniz.
Tarih ve saat ayarlarını, görüntülenmesini değiştirebilirsiniz

BitLocker Sürücü Şifrelemesi

BitLocker Sürücü Şifrelemesi:

 Bu özelliği kullanarak bilgisayarınızı koruyabilrsiniz.BitLocker Sürücü Şifrelemesi, bilgisayarınızda gösterilen sürücüde depolanmış tüm dosyalara yetkisiz erişimin engellenmesine yardımcı olur. Bilgisayarı normal kullanabilirsiniz, ancak yetkisiz kullanıcı dosyalarınızı okuyamaz veya kullanamaz

Bildirim Alanı Simgeleri

Bildirim Alan Simgeleri :
Görev çubuğunda görüntülenecek simge ve bildirimleri seçer.
*Simgeleri ve bildirimleri gizlemeyi seçerseniz, değişiklikler ve güncelleştirmeler hakkında bilgilendirilmezsiniz.
*Gizli simgelrei görüntülemek için görev çubuğundaki bildirim alanının yanında bulunan oku tıklatmanız yeterlidir.

23 Kasım 2010 Salı

Paint


Paint:

Bu eklentiyle çizim oluşturup düzenleyebilirsiniz.

Ağ Projektörüne Bağlan


Ağ Projektörüne Bağlan:

Bu eklentiyle bilgisaarınıza bağlı olan projektör cihazlarına bağlanabilirsiniz. Aynı zaman da bilgisayarınızın ekranını farklı bir ekrana da düşürebilir öyle kullanabilirsiniz. 

Uzak Masaüstü Bağlantısı


Uzak Masaüstü Bağlantısı :

Bu eklenti başka bi yerde bulunan bilgisayara bağlanmak ve program çalıştırıp dosyalara erişebilmek için bilgisayarınızı kullanmanıza yardımcı olur. Bu eklentiye çalıştır ekranına mstsc yazarak da ulaşabilirsiniz

Not Defteri

Not Defteri:

Bu eklenti temel metin biçimlendirmesi kullanarak metin dosyaları oluşturup düzenlemeye yarar.

Matematiksel Giriş Paneli


Matematiksel Giriş Paneli:

Bu eklenti elle yazılan matematiksel terim ve denklemleri düzelterek tam doğru bir ifadeye çevirerek gösterir.

Komut Sistemi

Komut Sistemi: 

Bu eklentiyle metin tabanlı (komut satırları) fonksiyonlar uygulanır. Donatılardan ulaşılabileceği gibi aynı zamanda Çalıştır ekranına cmd yazarak da bu MsDos penceresine ulaşılabilir.

Hesap Makinesi

 
Hesap Makinesi:

Bu eklentiyi kullanarak her türlü matematiiksel işlemi yapabilirsiniz.

Çalıştır

Çalıştır:
Bu eklenti, bir program, klasör, belge veya internet kaynağının adını yazdığınızda Windows'un sizin için açmasını sağlayacaktır. Aynı zamanda hızlı kullanım, kolay erişimde de yardımcı olacaktır.

Başlarken

Başlarken:
Bu seçenekle kullanımda olan bir bilgisayarın kurulumu ile ilgili her türlü bilgiye ulaşabilirsiniz.
Aynı zaman da bu eklentiden bilgisayarınızın güvenliğini sağlamak için de yararlanabilirsiniz.

Donatılar

Başlarken


Aygıtlar ve Yazıcılar

Aygıtlar ve Yazıcılar da:
Aygıtlarınızı, yazıcılarınızı ve yazdrıma işlemlerinizi burdan görüntüleyebilirsiniz.
Yeni aygıt ve yazıcı ekleyip, aygıt ve yazıcı sorunlarını çözebilirsiniz 

Aygıt Yöneticisi

Aygıt yöneticisinde :
Donanımlarınızın ayarlarını ve sürücülerinizin yazılımlarını görüntüleyip güncelleştirebilirsiniz.

Ağ ve Paylaşım Merkezi

Ağ paylaşım merkezinde:
Ağ durumunu denetleme, ağ ayarlarını değiştirme, dosya ve yazıcıları paylaştırma, ağ sorunlarını çözme gibi etkinlikleri yapabilirsiniz.

Denetim Masası

Denetim masası; bilgisayar ile ilgili bir çok ayarları düzeltebileceğiniz, donanımsal faaliyetleri kontrol edebileceğiniz bir penceredir.

Sosyal Yaşamda Bilgisayar Kullanımı

!!! MERHABA !!!

Sosyal Yaşamda Bilgisayar Kullanımı hakkında ne kadar bilgimiz var ve ne kadarını doğru biliyoruz?
Sosyal paylaşım sitelerini ne kadar doğru ve güvenli kullanıyoruz?
Bu blogu oluşturmaktaki amacım; bütün bu soruların doğru cevaplarını, bilgisayar hakkında doğru bilgileri ve kendinizi bilgisayar alanında geliştirebilmek için her türlü bilgiyi bu blogta herkesle paylaşmak...
Sizlerinde bilgilerinizi ve paylaşımlarınızı bekliyorum.....

19 Kasım 2010 Cuma

Linux İşletim Sisteminde Güvenlik

 

13. Linux İşletim Sisteminde Güvenlik

Bilgisayar ağları ve özellikle İnternet, kullanıcılara büyük olanaklar verirken ciddi güvenlik sorunlarını da beraberinde getirdi. Ağa bağlı bilgisayarlarda çalışanların bu güvenlik sorunları konusunda bilgili olmaları zorunlu hale geldi. Ancak güvenlik ile kullanım kolaylığının çoğu zaman birbirleriyle çelişmesi ve kullanıcıların seçimlerini genellikle kullanım kolaylığından yana kullanmaları güvenlik önlemlerinin yerleşmesini engelledi. Bu bölüm, akademik ortamlarda yaygın olarak kullanılan Linux işletim sisteminde sistem sorumlularına güvenlik için yapabilecekleri konusunda yol göstermek ve kullanıcılara tehlikeleri tanıtmak amacıyla hazırlanmıştır.

13.1 Şifreler ve Şifre Seçimi

Çok kullanıcılı işletim sistemlerinde kullanıcının kimliğinin belirlenmesi büyük önem taşır. Hem sistemi kullanmaya yetkisi olmayan kişilerin sisteme girmelerinin engellenmesi, hem de sistemdeki kullanıcıların birbirlerinden ayırdedilebilmeleri için, her kullanıcıya bir şifre verilir ve sisteme giriş başta olmak üzere tüm kritik işlemlerde kullanıcıya şifresi sorulur. Şifreler, diğer kullanıcı bilgileriyle birlikte, /etc/passwd veya /etc/shadow dosyasında tutulur.
Bazı uygulamaların şifre dosyasının bazı alanlarına erişmeleri gerektiğinden şifre dosyası, sistemdeki bütün kullanıcılar tarafından okunabilecek bir dosya olmalıdır. Bu nedenle şifreler bu dosyaya açık halde değil, şifrelenerek yazılırlar.
Şifre yönteminin güvenilirliği, sistemdeki kullanıcıların şifre seçiminde gösterdikleri özene bağlıdır. Kolay akılda kalacak şifreler, çoğu zaman kolay tahmin edilebilir. Buna karşılık, zor tahmin edilebilen şifreler kullanıcıların akıllarında kalmayabileceklerinden bir yere yazmalarına ve böylece yeni tehlikeler oluşturmalarına zemin hazırlayabilir.
Şu tip şifreler kolay tahmin edilebilen şifreler sayılmaktadır:
  1. Kullanıcı ile yakınlığı olan kişilerinkiler (kendisi, ailesi, arkadaşları, yakınları) başta olmak üzere bütün erkek ve kadın isimleri
  2. Doğum tarihleri
  3. Kullanıcı ile ilgili herhangi bir bilgi (kullanıcı adı, oda numarası, telefon numarası, arabasının plaka numarası, sosyal güvenlik numarası)
  4. Klavyede belli bir düzene göre ardarda gelen harflerden oluşan şifreler (örneğin qwerty veya abcdefg gibi)
  5. Anlamlı bir sözcük (bilgisayar terimleri, yer isimleri)
  6. Yalnızca küçük (ya da yalnızca büyük) harflerden oluşan şifreler
  7. Yukarıdakilerden birinin başına ya da sonuna bir rakam eklenerek oluşturulan şifreler
  8. Yukarıdakilerin ters yazılışları
İyi bir şifre üretmek için önerilen iki yöntem vardır:
  1. İki sözcüğün aralarına bir rakam ya da noktalama işareti konarak birleştirilmesi
  2. Seçilen bir cümlenin sözcüklerinin baş harfleri

Tehlikeler

Şifre dosyasına erişimi olmayan bir saldırgan, hedef seçtiği bir kullanıcının şifresini deneyerek bulmak zorundadır. Olası bütün şifrelerin çokluğu gözönüne alınırsa bu tip bir saldırının etkisiz olacağı düşünülebilir. Ancak, çoğu sistemde, şifresi boş olan, kullanıcı adıyla aynı olan ya da sistem sorumlusunun geçici olarak verdiği basit şifreyi değiştir(e)meyen kullanıcıların sayısı azımsanamayacak düzeydedir. Bir tek kullanıcının bile şifresinin elde edilmesi sisteme giriş için yeterli olduğundan güvenlik açısından büyük sorunlar yaratabilir.
Saldırgan, şifre dosyasının bir kopyasını alabilirse işi oldukça kolaylaşır. Hem çok daha hızlı çalışabilir, hem de hedef sistemin sorumlusunun dikkatini çekmek tehlikesinden kurtulur. Bir saldırganın şifre dosyasını eline geçirmesi birkaç şekilde mümkün olabilir. Örneğin bir kullanıcının şifresini elde ederek sisteme girer ve dosyayı alır, bazı programlardaki hatalardan yararlanarak sisteme girmeden dosyayı elde edebilir, sistemdeki bir kullanıcı şifre dosyasını saldırgana gönderebilir veya saldırgan, sistemdeki kullanıcılardan biridir.
/etc/passwd dosyasındaki şifreleri kırmaya çalışan çeşitli yazılımlar bulunmaktadır. Bunların en etkililerinden ve en yaygın kullanılanlarından biri Crack isimli programdır. Alec E. Muffett tarafından geliştirilen Crack, sözlük saldırısı yöntemini kullanan bir şifre kırma programıdır. Giriş olarak verilen sözlüklerdeki sözcükleri şifre dosyasındaki 'salt' bilgileriyle şifreleyerek şifre olarak kullanılıp kullanılmadıklarına bakar. Ayrıca sistemin kullanıcı bilgilerinden de olası şifreler üretmeye çalışır. Bu paketi ftp.metu.edu.tr adresinden temin edebilirsiniz.

Önlemler

Şifre güvenliğinin en önemli şartı, başta sistem sorumluları olmak üzere, bütün kullanıcıların iyi şifre seçmenin önemini kavramalarıdır. Herkes, şifresinin yetkisiz birinin eline geçmesi durumunda kendisi ve diğer kullanıcılar açısından oluşan tehlikeleri anlamalıdır. Nelerin kötü şifre olduğu ve nasıl iyi şifre seçilebileceği konusunda kullanıcılar eğitilmelidir. Bu koşul gerçekleşmedikçe aşağıda sözü geçen önlemlerin çoğu da başarısız olacaktır.
  1. Şifre seçiminin kullanıcıya bırakılmaması : Şifreler, sistem sorumlusu tarafından ya da rasgele şifre üreten bir program tarafından seçilerek verilir ve kullanıcılara şifrelerini değiştirme hakkı tanınmaz. Bu yöntem, iyi şifreler üretmekle birlikte, kullanıcıların akıllarında tutamayacakları şifreleri bir yere yazmalarına neden olur.
  2. Şifre seçiminin kısıtlanması : Kullanıcının kötü olduğu bilinen bir şifre seçmesi engellenir.
  3. Şifre dosyasının sistem sorumlusu tarafından kırılması : Sistem sorumlusu, zaman zaman, şifre dosyasını Crack tipi bir program ile tarayarak zayıf şifreleri arar. Bulduğu zayıf şifreli kullanıcıların hesaplarını kilitler.
  4. Şifrelerin geçerlilik sürelerinin kısıtlanması : Yeterince sık değiştirilmeyen şifreler, kuvvetli de olsalar, saldırgana aramak için daha uzun zaman tanıdıklarından tehlike yaratırlar. Bu nedenle, şifrelerin belli bir süre sonunda geçerliliklerini yitirerek yeni bir şifre verilmesi zorunluluğu getirilebilir.
  5. Gölge şifreler (shadow passwords) : Şifre dosyasının bazı alanlarının herkes tarafından okunabilir olması gerekse de, şifre alanının herkes tarafından okunabilir olması gerekmez. Bu nedenle, şifrelenmiş şifreler ancak sistem sorumlusunun okuyabileceği bir dosyaya alınabilir. Şifre dosyasındaki şifre alanına herhangi bir bilgi yazılırken (kullanıcı adı, * işareti gibi), gölge dosyasına (/etc/shadow) şifrelenmiş şifreler konur. John F. Hough II tarafından geliştirilen Shadow Password Suite, sistemdeki şifre güvenliğini artırmaya yönelik bir pakettir. Gölge şifrelerin yanısıra, daha uzun şifreleri (16 karakter) desteklemesi ve şifrelerin geçerlilik sürelerini kısıtlaması nedeniyle sistem sorumlularının çokça kullandığı araçlar arasında yer alır. ftp.metu.edu.tr adresinde bulunabilir. Slackware 3.2 sürümünden itibaren shadow desteği vardır.

13.2 Dosya Güvenliği

Her dosyanın bir sahibi, bir de grubu vardır. Dosya uzerinde kimin hangi işlemleri yapabileceğine dosyanın sahibi olan kullanıcı karar verir. Erişim hakları, dosyanın sahibi, grubu ve diğerleri için ayrı ayrı belirtilir.
-rwxr-x---   1 uyar     users           4030 Dec  4 15:30 dene
Dizinler için de aynı erişim hakları modeli geçerlidir. Bir dizin üzerindeki okuma izni, dizin altındaki programların listesinin alınıp alınamayacağını, yazma izni dizinde yeni bir dosya yaratılıp yaratılamayacağını, çalıştırma izni de o dizine geçilip geçilemeyeceğini belirler. Yetkili kullanıcının (root) bütün dosyalar ve dizinler üzerinde (birkaç sistem dosyası ve dizini haricinde) bütün işlemleri yapma yetkisi vardır.

Tehlikeler

İşletim sisteminde ya da uygulama programlarında bir hata olmadığı sürece erişim izni olmayanlar dosyayı zaten okuyamayacaklardır. Asıl tehlike, yetkili kullanıcının yetkisini kötüye kullanarak kullanıcıların kişisel dosyalarını ve mektuplarını okumasıdır. Her şeye yetkisi olan bir kullanıcı, sistemin kararlılığını korumak için gerekli olmakla birlikte, güvenliği ve özel bilgilerin gizliliğini bir kişinin ahlakına bırakması açısından Linux (ve Unix) işletim sisteminin güvenliğinin en zayıf noktalarından biri olarak değerlendirilmektedir.
Saldırgan, sisteme girince, hem sonraki girişlerini kolaylaştırmak, hem de daha rahat çalışabilmek için bazı sistem dosyalarını ya da programlarını değiştirebilir. Örneğin, şifre dosyasına bir kayıt ekleyerek kendine yetkili bir kullanıcı yaratabilir. Kullanıcıların şifrelerini öğrenmek için login, passwd gibi programları değiştirebilir.

Önlemler

Şifre güvenliği sağlandığı sürece dosya erişimlerinde fazla bir güvenlik sorunu olmayacaktır. Bu konuda sistem sorumlusuna düşen, kullanıcılarını erişim haklarını nasil düzenleyecekleri konusunda bilgilendirmektir.
Şifre dosyası gibi metin dosyalarında değişiklik olup olmadığı gözle inceleme yaparak ya da basit komut satırı programları kullanarak bulunabilir. Çalıştırılabilir dosyalar gözle kontrol edilemeyeceğinden en uygun yöntem, dosya imzaları oluşturarak sağlam olduğu bilinen imzalarla yeni hesaplanan imzaları karşılaştırmaktır. Tripwire paketi, dosyalarda yapılan değişiklikleri farketmekte sistem sorumlusuna ve kullanıcılara yardımcı olur. Önce sağlam olduğu bilinen dosyaların dosya imzaları oluşturularak bir yerde saklanır. Sonraki çalıştırmalarda imzalar yeniden hesaplanarak eskileriyle karşılaştırılır ve farklı olanlar varsa bildirilir. Düzgün çalışma için özgün imzaların iyi korunması, mümkünse, üstüne yazılamayan bir ortamda saklanması gerekir. coast.cs.purdue.edu adresinden temin edilebilir.

13.3 TCP/IP Ortamında Güvenlik

IP paketleri ağa açık halde gönderildiklerinden iletişim fiziksel olarak tamamıyla güvensizdir. Ağdan paketleri alabilen herkes içeriklerini rahatlıkla okuyabilir. Özellikle, bir ortak yol (bus) ile gerçeklenen ağlarda çok belirgin olarak ortaya çıkan bu sorun, şifreler başta olmak üzere pek çok duyarlı bilginin kolayca ele geçirilmesine yol açar.
Bir istemci, hizmet almak için bir sunucuya bağlanırken gerçeğe aykırı bir sayısal ya da sembolik adres bildirebilir. Internet'teki temel güvenlik sorunlarından biri, sayısal - sembolik adres dönüşümleri için kullanılan sunucuların yerel sistem sorumlusunun denetimi dışında olmaları ve çoğu protokolün güvenlik koşullarının sağlanabilmesi için bunlara gereksinim duymalarıdır.
Bir saldırgan, sunucu bir makinayi çökerterek hizmetlerin verilemez hale gelmesine yol açabilir. Buna, TCP/IP protokol ailesinin tasarımından, sunucu süreçlerdeki hatalardan veya işletim sistemindeki hatalardan kaynaklanan açıklar neden olabilir.
rsh, rcp ve rlogin komutlarının kullanılmasında şifre denetimlerinin atlanabilmesi için ya tüm kullanıcılar için geçerli sistem dosyasında (/etc/hosts.equiv) ya da kullanıcıya özel erişim dosyasında (.rhosts) ayarlamalar yapılmalıdır. Sistem dosyasında yer alan makinalar güvenilen (trusted) makinalar kabul edilirler ve bu makinalardan bağlanan kullanıcıların isimleri yerel şifre dosyasında varsa şifre denetimi yapılmaz.

Önlemler

İnternet hizmetlerini gerçekleştiren programların çoğu halen üzerinde geliştirme ve hata ayıklama işlemleri süren programlardır. Sistem sorumlusu, kullandığı programların gelişimini izleyerek bilinen hatası bulunmayan son sürümlerini edinmeli ve çalıştırmalıdır. Ayrıca, Usenet'te güvenlik ile ilgili forumları izleyerek ve CERT (Computer Emergency Response Team - www.cert.org) önerilerine uyarak güncel olan güvenlik boşluklarını öğrenmeli ve önlemlerini almalıdır.
Yapılabilecek en temel işlerden biri, verilmesine gerek olmayan ya da taşıdığı riske değmeyeceği düşünülen hizmetlerin sunucu süreçlerini çalıştırmamaktır. Sözgelimi, yerel ağda hiçbir NIS istemci makinası bulunmadığı halde bir bilgisayarın NIS sunucu sürecini çalıştırıyor olması gereksiz bir risk içerir. Bazı sistem sorumluları, kullanıcı isimleri ve sistemde kimin çalıştığı gibi bilgileri dışarıya aktardığı için finger hizmetini tehlikeli bularak kapatırlar. Hizmetin engellenmesi için işletim sisteminin açılış dosyalarından (/etc/rc.d/rc.*) ilgili sunucuları çalıştıran satırlar (özellikle netstat ve systat) kaldırılmalıdır.
Bazı durumlarda, hizmeti bütünüyle kapatmaktansa, erişimi koşullara bağlamak daha anlamlı olabilir. Bu koşullar, hizmetin hangi makinalara, hangi kullanıcılara, hangi saatlerde verileceği ya da verilmeyeceği şeklinde belirtilebilir. Bu tip kısıtlamalar getiren programların en yaygın kullanılanları tcpwrapper ve xinetd paketleridir. Wietse Venema tarafından geliştirilen tcpwrapper, sunuculara erişimi bağlantı isteğinde bulunan makina ve kullanıcıya gore kısıtlayan ve bağlantı istekleriyle ilgili kayıtlar tutan bir pakettir.
Bu paket Linux'un Slackware dağıtımıyla birlikte gelmektedir.
Güvenliğin önem taşıdığı yerlerde giderek yaygınlaşan alev duvarı tekniği, yerel ağdaki bilgisayarların dışarıdaki ağa doğrudan erişimlerini kaldırmayı öngörür. Ağın yönlendiricisi, ağda güvenli çalıştığı bilinen yalnızca bir makinanın dışarıyla bağlantı kurmasına izin verir. Diğer bilgisayarlar dış ağa çıkmak için bu makinadaki süreçlere bağlanırlar.

13.4 Kayıt Tutulması

Güvenliğin en önemli parçalarından biri, sistemin sürekli izlenerek, güvenliğe aykırı durumlar oluşup oluşmadığının, oluştuysa bunların sorumlularının kimler olduğunun belirlenmesidir. Bunun için, güvenliği ilgilendirebilecek her türlü olayın kaydı tutulmalıdır. Şu tip bilgiler, güvenlik açısından değer taşırlar:
  • Başarısız veya başarılı olmuş sisteme giriş denemeleri
  • Nerelerden, hangi hizmetler için bağlantı istekleri geldiği
  • Hizmetler sırasında gerçekleşen dosya aktarımları
Linux'ta kayıt tutulması işini syslogd süreci görür. Hangi tür mesajların hangi dosyaya yazılacağı konfigürasyon dosyasında (/etc/syslog.conf) belirtilir. Genellikle makina ilk açıldığı zaman /var/adm/messages dizini altındaki messages, xferlog, syslog gibi dosyalara yazılan bu bilgileri isteğinize göre daha sistematik bir yapıda saklamak da mümkündür. Ağ ile ilgili hizmetleri denetleyen süreçler (tcpwrapper, xinetd gibi paketler) kayıt dosyalarına girmesini istedikleri bilgileri syslogd sürecine bildirirler.

Linıx da X Wmindows Grafik Arabirimi

12. X Windows Grafik Arabirimi

Açık sistemlerin kullanıcıya sunduğu en büyük özelliklerinden biri olan X Window, Linux'un doğduğu andan itibaren destek görmeye başladı. İnternet üzerinde bedava dağıtılmasıyla Linux dağıtımı altında bir standart olarak kendine yer edindi. Daha önce bir UNIX sistem üzerinde X Window kullandıysanız bu bölümü kavramak gayet kolay olacaktır.
X Window'un Linux altındaki son sürümü Nisan 1994'te çıkan X11R6'dır. Aradan uzunca bir süre geçmesine rağmen bu sürümde kayda değer bir değişiklik olmadı. Bunun yanında X Window'da kullanılan pencere yöneticisi (window manager) çeşidi neredeyse 20'ye yaklaştı. Pencere denetleyicilerin herbirinin farklı zevkten kullanıcılar için farklı özellikleri vardır. Bunlar, X Window'a açılan ve uygulama programları ile kullanıcı arasındaki bilgi alış-verişini sağlayan arabirimdir.
X Window (veya kısaca X) istemci-sunucu modeline göre çalışır. Ana makina üzerinde çalışan X sunucusu, grafik donanımı üzerindeki tüm giriş-çıkış yetkilere sahiptir. Bir X istemcisi, sunucuya bağlanarak istediği işlemleri sunucuya yaptırır. İstemcinin görevi emir vermek, sunucunun ise verilen emri görünür hale getirmektir.
Aslında bilinmesi gereken en önemli kavram, X'in ağ tabanlı bir yapıya sahip olmasıdır. Bir istemci ve sunucunun olduğu her yerde ağdan da söz edebiliriz. X, ister konsol üzerinde (yerel makinada) isterse ağ üzerinde (uzak makinada) çalışabilir. Başka bir makina üzerindeymiş gibi o makinanın X Window uygulama ve kaynaklarından yararlanabilirsiniz.
Yukarıda kısaca bahsedilen pencere yöneticisi, ekrandaki pencerelerin denetiminde söz sahibi olan tek programdır. Her pencerenin nasıl görüneceğini, ne kadar büyük olduğunu bilir; kullanıcı tarafından verilen küçültme, pencere kapatma gibi komutları işler.

12.1 X Window Kurulumu ve Konfigürasyonu

X Window' un 386 ve yukarı tabanlı makinalar için geliştirdiği sisteme Xfree86 adı verilir. Linux da Xfree86'yı Slackware dağıtımına ekleyerek kullanıcıların hizmetine sunmuştur. Xfree86 sürüm 3.1'in desteklediği kartlara ait çipsetler kitabın başında verilmiştir. Bu çipsetler, PCI ve VLB dahil, her tür veri yoluna sahip anakartlar üzerinde sorunsuz çalışır.
Linux ile uyumlu çalışabilen yeralan çipsetlerin hepsi 256 renk (8 bit) desteklerler. Eğer kart üzerinde yeteri kadar RAM var ise (en az 2MB), ekranınızı 16 bit (65536 renk) açma imkanınız olur. Özellikle S3 kartları Linux Xfree86 altında sorun çıkartmadan 65536 rengi kolayca gösterebilirler.
X Window üzerinde rahatça çalışabilmek için en az 486 tabanlı bir bilgisayara ihtiyacınız var. Bana sorarsanız rahat bir çalışma için 16 MB RAM ve Pentium 100 bilgisayar işinizi görecektir. Renk sorunu yaşamamak için ise 2MB görüntü hafızası olan bir grafik kartı kullanın. X Window, sistemi fazlaca yüklediğinden takas alanı için fazla söz söylemeye gerek yok sanırım. Unutmayın ki, X'e yatırım yapmak istiyorsanız paranızı hafıza için ayırın.
Xfree86, Slackware tarafından dağıtılan paketlerin X bölümünde yeralıyor. Herhangi bir nedenden dolayı sistemde X yoksa 'pkgtool' yardımıyla sisteminize kurun. Gerekli kütüphaneleri eklemeyi unutmayın.

12.2 X Konfigürasyonu

X Window kurulumu basit olmasına rağmen konfigürasyonu biraz başınızı ağrıtabilir. Slackware 2.2 dağıtımı ile gelen konfigürasyon programları, kullanıcının hata yapmasını affetmiyordu. Yanlışlıkla basılan bir tuş yüzünden baştan başlamak zorunda kalınabiliyordu. Slackware 3.3 altında, grafik arabirimini kullanan XF86Setup programı ile bir fare yardımıyla rahatlıkla ve kısa sürede X konfigürasyonu tamamlanabiliyor. Ücretli sürümlerden bir tanesi elinizin altında ise işler daha da kolaylaşıyor, neredeyse donanım hakkında hiç bir şey bilmeden X kurulabiliyor.
Konfigürasyon işlemlerinden önce hazırlık aşamasında XF86Config(1) ve Xfree86(1) man sayfalarını okuyun. Bu dosyalarda X Window için oluşturulacak olan /etc/XF86Config dosyasının hakkında detaylı bilgi vardır. XF86Config dosyası X açılırken okunur ve fare, ekran çözünürlüğü, renk sayısı gibi özellikler belirlenir. Ekranınızın kalitesine göre açmak istediğiniz çözünürlük hakkında bir miktar fikir sahibi olmalısınız. Bazı eski ekranlar 1024x768 çözünürlüğü desteklemezler, bu yüzden 800x600 gibi düşük bir çözünürlük ile işe başlayın. Daha ayrıntılı bilgi için XFree86-HOWTO dökümanlarına göz atabilirsiniz.
Linux'un Slackware 3.3 sürümü, kullanıcıya X konfigürasyonu için iki program sunar. Birincisi, yukarıda da belirtilen ve zayıf bir arabirimi olan xf86config, diğeri de XF86Setup. İkincisini kullanmanız, her bakımdan avantaj olarak göze çarpıyor. Program, bazı ayarlamaları kullanıcıya bırakmadan (örneğin çipsetin seçimi) kendisi hallediyor. Burada yeralan soruları doğru bir şekilde cevapladıktan sonra X açmaya hazırsınız demektir.
Aşağıda XF86Config dosya formatı hakkında biraz bilgi verilmiştir. X Window'u kurduktan sonra kendi zevkiniz doğrultusunda bu dosya üzerinde değişiklik yapabilirsiniz.
Dosya, pekçok bölümden (section) oluşur ve her bölüm, Section "bölüm-ismi" ve Endsection kelimeleri arasında yeralır. Ekran yazıtiplerinin ve kullanılacak renklerin patikasını belirleyen bölüm dosya altında şu şekilde görünecektir :
Section "Files"
        RgbPath         "/usr/X11R6/lib/X11/rgb"
        FontPath        "/usr/X11R6/lib/X11/fonts/misc"
        FontPath        "/usr/X11R6/lib/X11/fonts/75dpi"
EndSection
İstediğimiz kadar yazıtipi girişi yapabiliriz. Üç tanım satırının arasına, örneğin X altında kullanacağımız Türkçe yazıtiplerini yerleştirelim. Bu yazıtiplerini daha önce kurmuş ve gerekli konfigürasyon işlemlerini yapmış olmanız gereklidir. X için Türkçe yazıtiplerini ftp.metu.edu.tr adresinde bulabilirsiniz. Adreste yazıtiplerinin nasıl kurulacağına ilişkin gerekli dökümanlar da bulunmaktadır.
Section "Files"
        RgbPath         "/usr/X11R6/lib/X11/rgb"
        FontPath        "/usr/X11R6/lib/X11/fonts/misc"
        FontPath        "/usr/X11R6/lib/X11/fonts/75dpi"
        FontPath        "/usr/X11R6/lib/X11/fonts/turkce/75dpi"
EndSection
Klavye ve farenin tanımlandığı bölümler, ``Keyboard'' ve ``Pointer'' adı altındadır. Açıklama satırlarının başında ``#'' karakteri yeralır. Örnek dosyanın yeraldığı makinada farenin kullandığı protokol, ``MouseSystems'' olup hemen her standart fare için bu protokol önerilir. Diğer protokoller arasında Busmouse, Logitech, Microsoft, MMSeries, Mouseman, MouseSystems, PS2, MMHitTab/ vardır. X açıldığı zaman herşey yolunda gitmesine rağmen farenin ikonu hareket etmiyor veya ekranda deli gibi oradan buraya koşuşturuyorsa farenin kullandığı protokolü değiştirin. Bazı farelerin altındaki küçük anahtarın bulunduğu konumu değiştirmeniz de işe yarayabilir.
Section "Keyboard"
        Protocol "Standard"
        Autorepeat 500 5
        ServerNumLock
EndSection
Section "Pointer"
        Protocol "MouseSystems"
        Device "/dev/mouse"     
Emulate3buttons         # iki tuslu microsoft farede 3. tusun, 
                        # iki tusla basilmasini saglamak icin...
ChordMiddle             # 3 tuslu Logitech fareler icin 
EndSection
Farenin kullandığı seri port /dev/mouse 'dur. Bu dosya, genellikle uygun olan bir seri arabirime (örneğin /dev/ttyS0) bağlıdır.
XF86Config dosyasının en önemli bölümü monitörle ilgili bilgilerin yeraldığı kısımdır. Bu bölümde monitörün yatay (Horizontal Sync) ,düşey frekansları (VertRefresh) ve frekans aralıklarıyla sürücü saat frekansı (dot-clock frequency) belirtilir. Kullandığınız monitörle ilgi konfigürasyon sırasında girilen bilgiler bu bölümde yeralır.
Section "Monitor"
        Identifier "CTX 5468 NI"
        
HorizSync 30-38, 47-50
        VertRefresh 50-90
        # Modes : Name     Dotclock     horiz        vert
        Modeline "640x480"   25   640 664 760 800   480 491 ...
        ...
EndSection
``Identifier'', kullanılan monitörün tipini verir. X bunu kullanmaz, istediğiniz herhangi bir kelimeyi yazabilirsiniz. HorizSync, monitörün yatay frekansını kHz cinsinden belirtir. VertRefresh ise monitörün tazeleme frekansı olup Hz cinsindendir. Her iki değer, frekans aralığı veya tek sayı olarak verilebilir.
``Modeline'' kelimesi ile başlayan satırda belirli bir çözünürlük için gerekli ``Dotclock'' (sürücü saat frekansı) ile yatay ve düşey tarama frekansları MHZ cinsinden yazılıdır. Bu tanımlar ile ilgili daha geniş bilgiyi /usr/X11/lib/X11/doc dizini içinde bulabilirsiniz. Yukarıda yeralan bilgileri kendiniz için kullanmamanız, monitörünüzün sağlığı açısından tavsiye edilir.
Monitör bilgilerinin yeraldığı bölümden sonra ekran ve alt bölümü olan görüntü bölümü gelir.
Section "Screen"
        ...
                Depth 8 
                Modes "1024x768" "800x600" 
                ViewPort 0 0
                Virtual 1024 768
EndSubsection 
EndSection
Driver kısmında kullanılacak olan X sunucusunun tipi (SVGA, hızlandırılmış, vb.) girilir. S3, Weitek, ATI gibi hızlandırılmış bir görüntü kartı kullanılıyorsa ``Accel'', normal (generic) bir kart ve kaliteli bir monitör varsa ``SVGA'' ve siyah beyaz VGA bir monitörle birlikte tek renk (monochrome) destekleyen kart kullanılıyorsa ``VGA2'' yazılıdır.
``Indentifier'' ve ``Monitor'' bölümlerinde yazılanlar gözardı edilebilir.
``Display'' alt bölümünde, görüntü özellikleri yeralır. ``Depth'' kelimesinin karşısında yeralan rakam, piksel başına kaç bitin, başka bir deyişle kaç rengin kullanılacağını belirtir. Monitörün belirli bir çözünürlükte kaç renk birden gösterebileceğini bulmak için bu sayıyı 2'nin kuvveti olarak yazın ve hesaplayın. Günümüz XFree86 sunucuları genellikle 256 (8 bit), 65536 (16 bit) ve 16.7 milyon (24 bit) renge kadar çıkabilirler.
``Modes'' karşısında yeralan ekran çözünürlük listesi, Linux'un X altında çalışırken görüntüleyebileceği çözünürlükleri belirtir. X altında burada yazılı çözünürlükler arasında geçiş yapabilmek için Control-Alt-Nümerik + veya Control-Alt-Nümerik - tuşlarını kullanabilirsiniz. ``Modes'' ile başlayan satırdaki ilk çözünürlük, X Window açıldığı zaman kullanılacak olan çözünürlüktür (yukarıdaki örnekte 1024x768).
``Virtual'' karşısında yeralan x ve y sayıları sırayla ekranın genişliğini ve yüksekliğini belirtir. X açıldıktan sonra ekran genişliği yetmediği durumlarda kullanılabilir. Bu iki sayıyı, görüntü kartı hafızası yetene kadar artırın. Örnek olarak 1024x768 ekran çözünürlüğünde 1152 ve 900 sayılarını yerleştirin. X Window açıldığı zaman fare ile ekranın sağ alt köşesine gidin. Ekranın kaydığını göreceksiniz. Gerçek ekran boyutunu ``Virtual'' parametreleri belirler.
``Virtual'' girdilerinin ardından verilen ``ViewPort'' parametresi de ekranın sol üst köşesinin hangi koordinatlara tekabül edeceğini tanımlar. Yukarıdaki örnekte sözkonusu noktayı (0, 0) olarak belirttik.

12.3 X Window Komutları

Konfigürasyon işlemini bitirdiğimize göre sırada X Window'u denemek var. Aşağıdaki komutu yazmadan önce PATH değişkeninin içinde /usr/X11/bin olduğundan emin olun.
$ startx
Ekranda X sunucunun dosyadan okuduğu satırlar ile ilgili bilgileri sırayla göreceksiniz. Ardından ekran kararacak ve X açılacaktır. Hevesinizi aldıktan sonra Control-Alt-Backspace (Delete değil! :) tuşlarına basın ve X sunucusunu öldürerek başladığınız vt100 terminaline geri dönün.
Diyelim ki ekran karardı ama X açılmadı. Konfigürasyonda hatalar olabilir. Ekranda çıkan hata mesajlarını kaydedip incelemeniz gerekir. Çok yapılan konfigürasyon hatalarının başında çipsetin ve ekran kartı bilgilerinin yanlış girilmesi, ``Virtual'' parametrelerinin hatalı olması ve görüntü kartı hafızasının ekranı açmaya yetmemesi vardır. Bu sefer hata mesajlarını ayıklayıp bir dosyanın içine atarak sunucuyu tekrar çalıştırın. Sonra da dosyayı inceleyip sorunun nerede olduğunu bulabilirsiniz.
$ startx > /tmp/hatalar 2>&1
Ekrana çıkması gereken tüm satırlar /tmp/hatalar dosyasına yönlendirilecektir. Çipseti doğru olarak seçmek için SuperProbe programını kullanabilirsiniz. Bu komutu kullandıktan sonra ekrandaki çıktıdan aldığınız bilgileri konfigürasyon sırasında programa girin.
X sunucuyu başlatmaya yarayan startx komutu, ev dizini içindeki .xinitrc dosyasını arar. Bulamazsa sistemde /usr/X11/lib/X11/xinit/ dizini içinde yeralan xinitrc dosyasını okur. Bu dosyanın içine X açıldığı zaman başlayacak olan programları koyabilir, ekranın renk düzenlemesini yapabilirsiniz. Örnek bir .xinitrc dosyası aşağıdaki gibidir :
#!/bin/bash
#
#start xterms
#
xterm -geometry 80x25+10+10 -bg black -fg white &
xterm -geometry 80x25 -bg darkgray -fg white &
xclock &
xload &
xbiff &
xsetroot -solid darkblue &
# startx wm
exec fvwm 
#
.xinitrc dosyası gayet kolay ve anlaşılır bir dile sahiptir. Sadece hangi X programlarını çalıştırmak istediğinizi buraya yazın ve arkaplanda bırakın (bunu unutursanız X'ten çıkıncaya kadar sadece ilk program çalışır). İlk iki satırda xterm çalıştırılıyor. Hemen hemen tüm X programlarının ortak özelliği, kullanıcının bu programları ekranda hangi koordinatlara yerleştirileceklerini belirleyebilmesidir. İlk xterm programı 80x25 karakter boyutlarında olup sol üst köşeden itibaren 10 piksel sola, 10 piksel sağa yerleştirilecektir. Xterm'ün arkaplan ve yazıtipi rengi sırayla -bg ve -fg parametreleriyle belirtilir. Renkler ingilizce isimleriyle verilir. Bunlar hakkında daha fazla bilgi için /usr/X11/lib/X11 dizini altındaki rgb.txt dosyasına göz gezdirin.
Ardından sırasıyla xclock (X altında çalışan saat programı), xload (sisteme ne kadar yük bindiğini gösterir) ve xbiff (e-posta gelince haber verir) çalıştırılıyor. Aslında boş vaktinizde bakmanızı bekleyen, X Window ile birlikte gelen onlarca uygulama programı vardır. Bunları da arkaplanda çalıştırın.
Sondan bir önceki komut olan xsetroot, bazı hoş özellikleri olan bir programdır. Bu satırdaki görevi, X Window arkaplan rengini koyu mavi yapmaktır. Unutmayın, .xinitrc dosyasının içine X açılırken başlatmak istediğiniz her programı koyabilirsiniz.
Dananın kuyruğunun koptuğu son satırda ise X sunucusu, pencere yöneticisini çalıştırıyor. Daha önce de belirtildiği gibi wm, kullanıcı ile X arasındaki idareyi sağlıyor. Eğer yeterli RAM'ınız varsa ve hızlı bir bilgisayara sahipseniz bu sayfadaki AfterStep ve Enlightenment pencere denetleyicilerini deneyebilirsiniz.

12.4 Fvwm Pencere Yöneticisi

Fvwm, Linux için özel olarak geliştirilmiş bir wm'dir. Diğer wm'lere karşı belirli üstünlükleri olan fvwm'in rahatça konfigüre edilebilir bir rc dosyası, renkli ikon desteği, ``pager'' (birden fazla ekranı aynı anda kontrol etme yeteneği), farenin tuşlarına basıldığı zaman ekrana gelen ``popup'' menüleri ve Motif desteği vardır.
``Pager'', fvwm'i üstün kılan ve kullanıcının "olsa da kullansak" beklentilerine tam anlamıyla cevap veren bir özelliktir. Ekranın bir köşesine yerleştirilen bir pencere ile farenin tuşlarına basarak istediğiniz başka bir ekrana geçmek mümkün olur.
Fvwm çalıştırıldığı zaman ev dizininde yeralan .fvwmrc dosyasını okumaya çalışır, bu dosyayı bulamazsa sistemdeki örnek fvwmrc dosyasını (/usr/X11/lib/X11/fvwm/system.fvwmrc) açılış konfigürasyon dosyası olarak kabul eder. Eğer Slackware 3.0'dan daha yeni bir dağıtım kullanıyorsanız, sistemde X açarken öntanımlı olarak fvwm95 kullanıyor olacaksınız. fvwm95 pencere yöneticisinin örnek konfigürasyon dosyalarını /usr/X11/lib/X11/fvwm95-2 dizininde bulabilirsiniz. Beğeninize hitap eden pencere denetleyicisine uygun olarak sistemde yeralan örnek dosyayı kopyalayıp zevkinize göre istediğiniz değişiklikleri yapabilirsiniz. Burada fvwm'in birkaç özelliğine değinip örnek bir konfigürasyon dosyasındaki bazı satırları inceleyeceğiz.
#set up colors
StdForeColor            white
StdBackColor            midnightblue
HiForeColor             white
HiBackColor             red
Font                    -adobe-helvetica-meduum-r-normal-*-*-120-*
WindowFont              -adobe-helvetica-bold-r-normal-*-*-120-*
#
Farenin üzerinde kalan pencerelerin rengini (ki bu sırada pencereye klavyeden bilgi girişi yapılabilir) diğerlerinden ayırmak mümkündür. Böylece kullanıcı hangi pencerenin aktif olduğuna dair tereddüte düşmez. HiForeColor ve HiBackColor değerlerinin gösterdiği renk, aktif pencerenin rengidir. ForeColor, pencerede yeralan metnin rengi, BackColor ise pencere arkaplan rengini temsil eder.
Aktif olmayan pencereler için StdForeColor ve StdBackColor komutları geçerlidir. Font ve WindowFont parametreleri de sırayla pencerenin ismini gösteren yazıtipi ve pencere içinde kullanılan yazıtipini belirler.
Sıkça kullanılan bir başka parametre de ``Style'' dır. Style yardımıyla ekrandaki bir pencerenin diğer pencerelerle olan hiyerarşik düzenini ayarlayabilirsiniz.
Style "xclock" NoBorder 
Style "xbiff" StaysOnTop
Style "xterm" Sticky
İlk sırada yeralan komut ile xclock saat programı, fvwm tarafından penceresiz olarak ekrana konuyor. İkinci komut ile xbiff uygulama programı, üzerine hangi pencere gelirse gelsin üstte kalıyor. Sticky ise Pager yardımıyla pencere değiştirdiğiniz zaman istediğiniz programın ekranda eski yerini almasını sağlıyor.
Farenin sağ tuşuna bastığınız zaman ekrana gelen menüye "popup" ismi verilir. Bu menülere de .fvwmrc dosyası yardımıyla kolayca ekleme yapılabilir, üzerinde değişiklik uygulabilir. Menü, konfigürasyon dosyası içinde, "Popup" ve "EndPopup" satırları arasında tanımlanır ve bir isim verilir:
Popup "Menu ismi"
        Title "XClients" 
        Exec "Mosaic"   exec Mosaic &
        Exec "xterm"    exec xterm &
        Exec "emacs"    exec emacs &
        Nop ""
Exec "rlogin"   exec xterm -e rlogin orca &
        Exec "telnet"   exec xterm -e telnet &
        Nop ""
Exec "xcalc"    exec xcalc &
        Exec "xman"     exec xman  &
EndPopup
Farenin tuşuna basılınca ekrana, exec kelimesinin sağında yeralan ve iki tırnak içine alınan menü başlıkları gelir. Her menü başlığının karşısında, o program seçildiği zaman çalışacak olan program yeralır. ``Nop'', menü üzerinde yatay bir çizgi çeker.
X altında kullanılabilecek yazıtipi sayısı neredeyse sınırsız denilebilecek kadar çoktur. Bu yazıtiplerini kullanmak için iki yolunuz var. X Window açılırken çalıştırılan xterm'e standart parametre olarak girilir, veya doğrudan komut satırı üzerinde kullanmak istediğiniz yazıtipi seçebilirsiniz. Halihazırda kullanılabilecek olan yazıtiplerini görebilmek için şu komutu kullanın :
$ xlsfonts 
Ekran büyük bir hızla kayacak ve xinitrc dosyasının FontPath parametresinin gösterdiği dizin altındaki dosyaları temsil eden yazıtipleri ekrana gelecektir. Her satır, bir yazıtipi ismine tekabül eder. Görüldüğü gibi X altında kullanılan yazıtipleri isimleri gayet uzun olup toplam 14 parametreden oluşur. Bu satırlardan uygun olan birini seçip (örneğin kalın yazıtipini)
$ xlsfonts | grep bold
veya belirli bir sırayı izlemek için
$ xlsfonts -fn -*-*-bold-*-*-*-*-*-*-70-iso8859-9
komut satırı üzerinden diğer xterm'ü açabilirsiniz.
$ xterm  -fn -misc-fixed-bold-r-normal--13-100-100-100-c-70-iso8859-9
iso8859-9, içinde Türkçe yazıyüzlerinin bulunduğu standartı gösterir.

X Altında Türkçe Yazıtipi ve Klavye Kullanımı

Kullandığınız her işletim sisteminde Türkçe karakterlerin gösterimi ve Türkçe klavye uyarlaması sıkıntısı çekiyor olmalısınız. Linux'ta Türkçe yazıtipleri xterm altında -fn parametresi ile rahatlıkla görülebilir, böylelikle Türkçe okuyabilirsiniz. ftp.metu.edu.tr adresinden temin edeceğiniz Turkcebdf.tgz paketinin içinden çıkan küçük program, Türkçe klavye dağılımını ayarlıyor. Bu program çalıştırıldıktan sonra Alt tuşu yardımıyla Türkçe karakterlerin basılmasını sağlanabilir. Örnek olarak Alt-u ile ü, Alt-i ile ı karakterleri görüntülenebilir.
Türkçe karakterlerinin görüntüleyebilmek için önceden Türkçe yazıtiplerini sisteminize kurmuş olmalısınız.
Bu çözümlerin çalışması için X konfigürasyonu sırasında XKB isteyip istemediğiniz sorusuna hayır, Alt keys -> Meta keys dönüşümü isteyip istemediğiniz sorusuna evet yanıtı vermelisiniz.
Ayrıca bazı yazılımlarda Türkçe harfleri kullanabilmeniz için iso8859-9 karakter setini seçmeniz gerekir. Örneğin pine'ın Setup->Config menüsünde ya da .pinerc dosyasında bulunan character-set değişkenine iso8859-9 değerini vermelisiniz. elm için de benzer şekilde .elmrc dosyasında ayarlama yapılmalıdır.

Linux da İnternet Araçları

11. İnternet Araçları

11.1 FTP

FTP (file transfer protocol), bir makinadan diğerine yapılan dosya transferinde en çok kullanılan yollardan biridir. İnternet desteği olan işletim sistemlerinin hepsinde (MS-DOS, Windows, OS/2 ... ) ftp, standart program olarak kullanıcıların hizmetine sunulmuş durumdadır. Linux altında da ftp desteği vardır. Ekte İnternet üzerinde yeralan Linux dökümanlarının listesine baktığınız zaman çoğunun ftp adreslerinden temin edilebildiğini göreceksiniz.
FTP, dosyaları alabilmenizle birlikte istediğiniz adrese yollamanıza da izin verir. Eğer İnternet'e bağlıysanız ve Linux kullanıyorsanız ftp vazgeçemeyeceğiniz bir program olacakır.

Temel FTP Komutları

FTP, İnternet'e bağlı olan makinalarda anlam kazanır ve gücünü hissettirir. Saniyeler içinde onlarca dosya, yüzlerce kilobayt bilgi transfer edilebilir. FTP'ye başlamak için kullanabileceğiniz iki komut var. Birisi, standart ftp paketinden çıkarn 'ftp' komutu, diğeri de 'ncftp' komutu. İkisinin de avantajları olmasına rağmen 'ncfp' nin kullanıcıya yönelik kullanım kolaylığı vardır. Siz de 'ncftp' kullanın.
Bir FTP adresine bağlanmak için o adresin IP numarasını veya ismini bilmeniz yeterli. Çok geniş bir Linux arşivi olan linux.org.tr adresine bağlanmak için:
# ftp linux.org.tr 
yazın. Ekranda aşağıdaki gibi bir görüntü gelecektir. Ncftp, ftp yapmak için gerekli olan kullanıcı kodunu ve şifreyi kendisi gönderir ve otomatik olarak karşıdaki adrese bağlanır. Eğer ftp kullanıyor olsaydınız, kullanıcı kodu için anonymous veya ftp, şifre için de e-posta adresini girmeniz gerekecekti.
linux:~$ ftp linux.org.tr
Connected to linux.org.tr.
220 metu FTP server (Version wu-2.4(1) Tue Aug 8 15:50:43 CDT 1996) ready.
Name (linux.org.tr:root): ftp
331 Guest login ok, send your complete e-mail address as password.
Password:
230-Welcome, archive user!  This is an experimental FTP server.  If have any
230-unusual problems, please report them via e-mail to root@metu
230-If you do have problems, please try using a dash (-) as the first character
230-of your password -- this will turn off the continuation messages that may
230-be confusing your ftp client.
230-
230 Guest login ok, access restrictions apply.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> 
Karşıdaki makinaya bağlandık ve önümüze bir komut satırı çıktı. Bu komut satırında kullanılabilecek ftp komutlarının listesini görmek için
ftp> help 
yazın. Bir komut hakkında daha ayrıntılı bilgi elde etmek için ise 'help' komutunun hemen ardından ftp komutunu getirebilirsiniz. Şimdi patika ismini bildiğimiz bir dosyayı kendi hesabımıza çekelim. Öncelikle nerede olduğumuzu görelim. Bunun için Linux komutunun benzeri olan ls veya dir komutunu kullanın.
ftp> dir
200 PORT command successful.
150 Opening ASCII mode data connection for /bin/ls.
total 9
drwxrwxr-x   8 root     wheel        1024 Jan  7  1980 .
drwxrwxr-x   8 root     wheel        1024 Jan  7  1980 ..
drwxrwxr-x   2 root     wheel        1024 Jan  7  1980 bin
drwxrwxr-x   2 root     wheel        1024 Jan  7  1980 etc
drwxrwxr-x   2 root     wheel        1024 Dec  3  1993 incoming
drwxrwxr-x   2 root     wheel        1024 Nov 17  1993 lib
drwxrwxr-x  12 root     wheel        1024 Feb 14 08:08 pub
drwxrwxr-x   3 root     wheel        1024 Jan  7  1980 usr
-rw-r--r--   1 root     root          312 Aug  1  1994 welcome.msg
226 Transfer complete.
Bir ftp adresine bağlandıktan sonra genelde her adreste yeralan pub , incoming, bin gibi dizinler göreceksiniz. Bunlardan şu an için işimize yarayanı pub dizini olacaktır. Bir dizine girmek için yine bir UNIX komutu olan 'cd' ve ardından 'pub' yazın.
ftp> cd pub
Şimdi `pub' dizini altındayız. Genellikle her türlü program, uygulama yazılımı, ağ uygulamaları ve çeşitli dosyalar bu dizin altında bulunur. Burada hangi dosya ve dizinler olduğunu görelim.
ftp> dir
200 PORT command successful.
150 Opening ASCII mode data connection for /bin/ls.
total 12
drwxrwxr-x  12 root     wheel        1024 Feb 14 08:08 .
drwxrwxr-x   8 root     wheel        1024 Jan  7  1980 ..
drwxr-xr-x   2 root     root         1024 Feb 14 08:07 X
drwxr-xr-x   2 root     root         1024 Feb 14 08:07 applications
drwxr-xr-x   2 root     root         1024 Feb 14 08:07 development
drwxr-xr-x   2 root     root         1024 Feb 14 08:08 distributions
drwxr-xr-x   2 root     root         1024 Feb 14 08:07 docs
drwxr-xr-x   2 root     root         1024 Feb 14 08:07 games
drwxr-xr-x   2 root     root         1024 Feb 14 08:07 graphics
drwxr-xr-x   2 root     root         1024 Feb 14 08:09 kernel
drwxr-xr-x   2 root     root         1024 Feb 14 08:07 network
drwxr-xr-x   2 root     root         1024 Feb 14 08:07 sunsite
226 Transfer complete.
ftp>
Örneğin 'kernel' dizini altında yeralan bir çekirdek dosyasını kendi makinamıza alalım.
ftp> cd kernel
250 CWD command successful.
Ftp protokolünde, dosyaların bir makinadan diğerine taşınması esnasında dosyanın çalıştırılabilir (arşivler, sıkıştırılmış dosyalar ve diğerleri) veya metin dosyası olması hayati önem taşır. İnternet üzerinde, zamandan tasarruf amacıyla tüm dosyalar ASCII formatta taşınırlar. Çalıştırılabilir dosyalar 8 bitlik karakterlerden oluştuğu için bunları indirebilmek için taşıma işleminin 8 bit halinde yapılması gerekir. 'ftp' komutunu kullanıyorsanız çalıştırılabilir dosyaları çekmeden önce
ftp> binary
yazın. Dosyanın türünü bilmediğiniz durumlarda yine 'binary' komutunu kullanın. Siz en iyisi, ftp yaparken karşıdaki makinaya girdikten hemen sonra 'binary' yazın. ncftp kullanırken program bunu sizin için otomatik olarak yapacaktır.
Dosyayı indirmeden önce, kontrol edilmesi gereken bir şey de dosyanın indirileceği yerel dizinini belirtmektir. Burada linux-1.3.56.tar.gz programını 'kernel' dizininin altına çekelim. Bunun için lcd komutunu kullanalım.
ftp> lcd /root/kernel
Local directory now /root/kernel
Artık istediğimiz dosyayı indirebiliriz. Dosyaları almak için get komutu kullanılır.
ftp> dir
200 PORT command successful.
150 Opening ASCII mode data connection for /bin/ls.
total 5838
drwxr-xr-x   2 root     root         1024 Feb 14 08:09 .
drwxrwxr-x  12 root     wheel        1024 Feb 14 08:08 ..
-rw-r--r--   1 root     root      5951488 Feb 14 08:10 linux-1.3.56.tar.gz
226 Transfer complete.
ftp> get linux-1.3.56.tar.gz
200 PORT command successful.
150 Opening BINARY mode data connection for linux-1.3.56.tar.gz (5951488 bytes).
226 Transfer complete.
5951488 bytes received in 26 secs (2.2e+02 Kbytes/sec)
26 saniye içinde yaklaşık 6 MB büyüklüğündeki dosyayı çektik. Sizin İnternet'e bağlantı hızınıza bağlı olarak dosyayı yerel diske yazma süresinde değişiklikler olabilir. Yukarıdaki işlemleri istediğiniz kadar tekrar edip gereken dosyaları çektikten sonra ftp'den çıkmak için
ftp> quit
221 Goodbye.
komutunu kullanın. Sunucu makinayla bağlantınız kesilecek ve kabuk komut satırına geri döneceksiniz.

11.2 WWW (World Wide Web)

İnternet'in kimliğini bulmasını sağlayan etmenlerden başlıcası WWW'dir. WWW sayesinde çeşitli yapıda dosyalar, grafik arabirimi kullanılsın veya kullanılmasın kolaylıkla iletilebilir. Linux'u bir web sunucu haline getirmek için tek yapılması gereken, bu dosyaları belirli bir dizin altına yerleştirip WWW sunucusunu başlatmak.
İnternet'te yeralan bilginin hesabı yoktur. Bu bilgi deposunu verimli şekilde kolayca kullanabilir, hatta günlük yaşamınızla birleştirebilirsiniz. Öğrenciler, ev ödevlerini ansiklopediler karıştırmak yerine İnternet'ten bulup çıkarabilirler. Öğretmenler, sınav sorularını İnternet'ten bulabilirler. Üniversitelerdeki bazı fakültele hocaları ödevleri İnternet'te sunuyor ve cevapları da e-posta olarak istiyorlar.
Web üzerinde tarama yapmak amacıyla kurulan ve her hafta milyonlarca ziyaretçisi bulunan bazı adresler vardır. Bu sayfalara bağlanmak suretiyle bir anahtar kelime yardımıyla bu anahtar kelimenin geçtiği WWW adresleri taranabilir. Aşağıda sıkça kullanılan arama-tarama adresleri yeralıyor.
Özellikle birinci sıradaki altavista WWW sunucusu, 40 milyonun üzerinde adres girdisiyle inanılmaz genişlikte bir bilgi bankası olarak göze çarpıyor.
WWW sayfalarına erişebilmek için kullanılan programlar arasında metin temelli olan ve ekranda resim göstermeye imkan vermeyen lynx ve X Window altında çalışan ve onlarca çeşit döküman yapısını tanıyabilen Netscape sayılabilir.
Web sayfalarına bağlanırken kullanılan protokole HTTP (HyperText Transfer Protocol) adı verilir.

WWW Sunucusunun Konfigürasyonu

Linux'un web sunucusu olarak görev yapabilmesi için httpd daemon'un çalışması gereklidir. Bu yazılım genellikle sistemin açılışı sırasında çalıştırılarak arkaplana atılır.
Diğer kullanıcıların sorumlu olduğunuz Linux üzerindeki dosyalara WWW üzerinden erişmelerini sağlamak için sadece birkaç dakikaya ihtiyaç var. Ftp adreslerinde, özellikle Sunsite arşivinden birkaç değişik sunucu programı alınabilir. Halen Linux için benim bildiğim ve sıkça kullanılan APACHE, NCSA veya CERN http (web) sunuculardan birini çekerek kurmanız gerekecektir. Bununla birlikte, olumsuz yanıt vermemişseniz httpd yazılımı Linux'un kurulumu aşamasında sisteme yerleştirilmiştir.
httpd paketi kurulduktan sonra birkaç alt dizin oluşur. Bunlardan önemlileri,
  • conf, http konfigürasyon dosyaları
  • cgi-bin, örnek CGI (Common Gateway Interface) programları
  • cgi-src, CGI kaynak programları
  • logs, sunucunun sistem kayıtları
Sunucunun çalıştırılabilmesi için conf dizini altında yeralan 4 dosyanın içinde bazı değişiklikler yapmak gerekiyor. Bunlardan başlıcaları, httpd.conf dosyasındaki ServerRoot (httpd yazılımının açıldığı yer) ve ServerName (makina ismi), srm.conf dosyasındaki DocumentRoot (ana sayfanın dosyalarının tutulduğu dizin), ScriptAlias (CGI programlarının bulunduğu dizin) ve Directory (CGI programlarıın bulunduğu dizine ait parametreler) değişkenleridir. Dosyada hiç değişiklik yapmadan da sunucunun istediği dizinler üzerinde gerekli sembolik bağlantıları, istediğiniz dizini işaret edecek şekilde yerleştirmek mümkündür.
httpd programının başlatılması gayet kolaydır. /etc/rc.d/rc.inet2 programının içinde httpd ile ilgili satırın başında varsa '#' karakterlerini kaldırın. Böyle bir satır yoksa aşağıdaki komutu ekleyebilirsiniz.
httpd -f <konfigurasyon-dosyasi>
konfigürasyon dosyası yerine httpd.conf dosyasının bulunduğu yer girilir. (örneğin /home/httpd/conf/httpd.conf)
Web dosyalarını hazırlamak, gerekli düzenlemeleri yapabilmek için ayrı bir kullanıcı tanımlanabilir.

11.3 HTML ve CGI

Bir http protokolünün sunduğu dosya tipi genellikle HTML dosyasıdır. HTML dökümanları tamamı ASCII karakterlerden ve herhangi bir editörde yazılabilen metinlerden oluşur. UNIX üzerinde pico veya vi kullanarak HTML dökümanlarınızı hazırlayabilirsiniz. Bunun dışında, kullanıcının bu dili bilmediği farzedilerek Windows ve DOS altında çalışan çeşitli programlar hazırlanmıştır (FrontPage, HotDog gibi). Ayrıca, HTML kodunun doğruluğunu kontrol eden yardımcı programlara da Internet üzerinden erişilebilir.
HTML, Hypertext tabanlı bir dildir ve program içinde çoklu ortam (multimedia) programlarının konulmasına izin verir. Ses, hareketli veya hareketsiz görüntü yanısıra Java adı verilen ve kullanıcı ile etkileşime girebilen programlar da HTML dosyaları içinde yeralabilir. Grafik destekli Web programlarının tablo desteği ile çok çeşitli istatistiki bilgiler, programlar, her türlü listeler ekranda derli toplu gösterilebilir. Linux için Java desteğini ftp.blackdown.org adresindeki pub/Java/linux dizini altında bulabilirsiniz.

Temel HTML Belirteçleri

Daha önce bir programlama diliyle uğraşmamış olsanız bile HTML'in kolaylığı ve çok kısa zamanda bu dile hakimiyet sağlayabilmek sizi hayrete düşürecektir. Çeşitli çeviriciler yardımıyla hemen her tür dosyanın bu dile çevrilebilmesi, HTML dilini bilmeyenlerin bile dikkati bu yöne çekmeye yeter. Burada HTML komutlarına kısa bir giriş yapılacaktır, buradaki bilgilerle kendi web sayfanızı hazırlamanız mümkün olacak. Daha geniş bilgi için www.w3.org veya www.yahoo.com adreslerine göz atabilirsiniz. Bu adreslerin yansıları Linux Kullanıcıları Grubu ana web sayfasından da erişilebilir.
Basit bir HTML dosyası aşağıdaki gibi yazılabilir:
<title> Burasi konunun yazilacagi yer </title>
<h1> Bu, 1 numarali baslik </h1>
HTML dunyasina hosgeldiniz. <br>
Birinci paragrafimiz. <p>
Bu da ikinci.. <p>
HTML yazarken, metnin Web programının anlayacağı şekilde gösterilebilmesi için belirteçler kullanır. Yukarıdaki örnekte:
<title> ve </title> belirteçleri, dökümanın konusunu gösterir.
<h1> ve </h1> belirteçleri, dökümanın başlığını tanımlar. <p> belirteci, paragraf tanımlar.
Tüm HTML belirteçleri, küçüktür işareti (< ), belirteç ismi ve büyüktür işaretinden (> ) oluşur. Genellikle her belirtecin <h1> ve </h1> örneklerindeki gibi bir çifti olur ve sondaki belirtecin ismi önüne ayraç gelir. Yukarıdaki örnekte <h1> , Web programına 1 numaralı başlık formatında yazmasını, </h1> ise bu formatı kapatmasını söyler. <p> belirteci istisna bir durumdur ve </p> olarak kapatılmaz.
Her HTML sayfasının ile ayrılan bir konusu olmak zorundadır. Konular sayfadan bağımsız olarak ekranın en üstüne basılır.
<title> Sayfamin konusu </title>
HTML, 1'den 6'ya kadar numaralanmış 6 çeşit başlık destekler. Başlıklar normal karakterlerden daha büyük ve kalın yazılırlar. Temel olarak,
<Hy> Sayfamin basligi </Hy>
olarak tanımlanmış bir belirteçte y, 1 ile 6 arası bir değer alabilir. Y sayısı arttıkça yazıtipinin büyüklüğü azalır. Pek çok uygulamada, sayfanın konusu ile başlığını aynı tutabilirsiniz.
Diğer kelime işlemcilerdekinin aksine, HTML dökümanlarında programcı özel bir belirteç kullanmadıkça bir cümle herhangi bir yerinden ayrılıp kalan kısmı altta görünebilir, birden fazla boş satır tek satır olarak algılanır. Aşağıdaki örnekte, kaynak kodunda iki satır olmasına karşın, WWW tarayıcı bunu algılamaz ve ekranda tek satır olarak görüntüler. Bir html tarayıcı satır sonlarını ve boş satırları gözardı edeceğinden, paragrafları mutlaka <p> belirteci ile ayırmalısınız.
HTML'ye hosgeldiniz <br>
Bu ilk paragraf <p>
Satır sonu belirteci : Paragraf, iki satır arasında bir satır boşluk bırakırken, satır sonu belirteci kullanıldığı kursör alta geçer ve takip eden tüm metin,boşluk bırakmadan bir alttan yazılır.
Bu ilk satir. <br>
Ikinci satir daha uzun. <br>
Ama bu bir paragraf sonu.. <p>
Paragraflar ortalanırken <center> ve </center> belirteçlerinden yararlanılır. Ortalanması istenen tüm metin, bu iki belirtecin arasına yazılır.
<center>
Linux Sayfasi
</center>
HTML'nin en büyük özelliklerinden birisi, tek sayfa ile sınırlı kalmamasıdır. Böylece bir sayfadan diğerine bağlantı yapılabilir. HTML'in bu görevini yerine getirmesini sağlayan belirteç <a>'dır. Dökümanınızdan başka dökümana bağlantı yapabilmek için:
  • Belirteci girin. (Kısaca ilk satıra <a yazın)
  • Hangi dökümana geçiş yapmak istiyorsanız, ismini yazın. (HREF="dosyaismi")
  • Bu dökümanı ekranda hangi isimle göstermek istediğinizi belirtin.
  • Belirteci kapatın. </a>
Kısa bir örnekle açıklayalım:
<a href="internet.html"> Internet nedir? </a>
Ekranda "İnternet Nedir?" yazısı belirecek ve kullanıcıdan burayı seçmeyi bekleyecektir. Kullanıcı fare ile bu yazı üzerine tıkladığında ise program kontrolü yine bir HTML dosya olan internet.html dosyasına bırakacaktır. Bu durumda bulunduğunuz dizinden farklı bir dizindeki dosyaya bağlantı yapmak isterseniz, o dosyanın ait olduğu dizini yazmak zorundasınız. Buna göre linux/shells/bash.html dosyasını kullanabilmek için
<a href="linux/shells/bash.html"> Bash </a>
şeklinde bir belirteç yazmak gerekir.
HTML'in bir diğer özelliği ise, tek bir makinaya bağımlı kalmadan diğer İnternet servisleriyle bağlantı kurabilmesidir. Bunun için URL (Uniform Resource Locator) kullanılır. URL, http,gopher, news ve telnet gibi alt hizmet birimleri olabilir. Kullanımı şu şekildedir :
URL-ismi://makina-ismi[:port]/dizinler/dosya-ismi
Burada URL,
  • file, Kendi sisteminizde bir dosyaya,
  • http, Bir WWW sunucusu üzerindeki dosyaya,
  • gopher, Gopher sunucusu üzerindeki dosyaya,
  • news, Bir UseNet haber grubundaki dosyaya,
  • WAIS, WAIS sunucusu üzerindeki dosyaya
erişmek için kullanılır. Örneğin sayfanızdan Linux Kullanıcıları Grubu'nun ana web sayfasına ulaşmak için :
<a href=http://www.linux.org.tr/> Linux Kullanıcıları Grubu </a>
satırını web dosyasında girmek gerekir. Port numarası, genellikle yazılmaz. Size aksi durum belirtilmedikçe, kullanmanıza gerek yoktur.
Dökümanların göze hoş görünmelerini sağlamak amacıyla listeler yaygın olarak kullanılır. HTML, pek çok liste çeşidi destekler. Bunlar, düz listeler, numaralı listeler, tanımlı listeler ve içiçe listelerdir.
Düz liste yaratmak için,
  • Listeye başlamak için belirteç açılır. ( <ul> )
  • Liste elemanlarını teker teker girerken başına ( <li> ) belirteci girilir. Kapatmak için </li> belirtecine gerek yoktur.
  • Listeyi bitirmek için belirteç kapatılır. ( </ul> )
Örnek olarak,
<ul>
<li> Elma
<li> Armut
</ul>
Örnek, ekranda şu şekilde görülür :
  • Elma
  • Armut
<li> belirteçleri içinde paragraflar, diğer dökümanlara bağlantılar, ve diğer belirteçler kullanabilirsiniz.
Numaralı listeler, düz listelerden farklı olarak, <ul> belirteci yerine <ol> kullanırlar. Ekranda liste elemanlarının başında 1'er artan numaralar görünür. Aşağıdaki HTML kodu,
<ol>
<li> Linux 
<li> Digerleri :-)
</ol>
ekrana şunları yazar:
  1. Linux İşletim Sistemi
  2. Diğerleri :-)
HTML'de, programda yazıldığı gibi ekrana çıktı vermeyi sağlayan komutlar <pre> ve </pre> belirteç çiftleridir. Bunlar kullanıldığı zaman tüm metin, yazıldığı gibi ekranda görünür. Aşağıdaki satırlar,
<pre>
  PATH=.:~/bin/:$PATH
  export PATH
  # Set up the terminal:
         stty erase "^?" kill "^U" intr "^C" eof "^D"
         stty hupcl ixon ixoff
  date '+Tarih :%D'
  TERM=vt100
</pre>
ekranda şu şekilde görünür :
    PATH=.:~/bin/:$PATH
    export PATH
    # Set up the terminal:
           stty erase "^?" kill "^U" intr "^C" eof "^D"
           stty hupcl ixon ixoff
    date '+Tarih :%D'
    TERM=vt100
Eğer Web sayfalarını gezerken grafik destekleyen bir program (Mosaic, Netscape) kullanıyorsanız, ekranda resimlerin, arkaplanların ve hatta animasyonların olduğunu farketmişsinizdir. Bu resimler genellikle X Bitmap (XBM) , GIF, veya JPG formatlı olurlar ve dosyaya görsel bir çekicilik katarlar. Buna rağmen aynı ekranda çok miktarda resim kullanmaktan sakınmalıdır, çünkü bu durumda resimler kullanıcıya daha geç bir sürede ulaşır.
Ekranda resim görüntülemek için,
<img src="resmin bulundugu dizin">
demeniz yeterlidir. Burada, nasıl HTML dökümanların hepsi .html ile bitiyorsa, tüm resim dosyalarının sonu da .xbm , .gif veya .jpg ile bitmelidir.
Şimdi küçük bir örnek hazırlayalım. ~ dizininde iken public_html isimli bir dizin açın ve buraya girin. İstediğiniz örnek bir HTML dosyası yaratıp index.html isminde kaydedin.
$ cd ~
/home/gorkem
$ mkdir public_html
$ cd public_html
$ ls index.html
index.html
Ardından aşağıdaki satırları yazın. Burada web için kullanılan tarayıcı lynx'tir. Eğer X ortamında çalışıyorsanız Netscape de kullanabilirsiniz.
$ lynx http://cclub.metu.edu.tr/~ilker
Hazırladığınız web sayfası ekrana gelecektir.

Form Hazırlama (CGI)

CGI web üzerinden kullanıcı arayüzleri hazırlamak için kullanılan en yaygın yöntemdir. En yaygın kullanım alanları arasında veri tabanı sorgu sistemleri sayılabilir. Aşağıdaki dökümanda genel olarak CGI tanıtımı yaparken özellikle C ile CGI programları hazırlayacaklara yardımcı olabilir.
Bu dökümanın bazı kısımları okuyucuların az da olsa C ve programlama bilgisinin olduğu varsayılarak hazırlanmıştır.
İnternet üzerindeki hemen hemen bütün kullanıcı arayüzleri, Common Gateway Interface (CGI), kullanılarak hazırlanmıştır. CGI WWW kullanıcılarının WWW sunucusunun çalıştığı makina üzerinde belirlenen programları çalıştırmasını sağlayan bir sistemdir. CGI ile hazırlanan kullanıcı arayüzlerinin başlıca avantajlarını aşağıdaki gibi sıralayabiliriz:
  • Kolay ve hızlı hazırlanabilmesi. CGI arayüzlerinde, diğer kullanıcı yüzlerindeki birçok çabaya gerek yoktur. Kullanıcıyla ilişkiyi WWW tarayıcısı (web browser) yaptığından, siz zaten web tarayıcısı için çoktan hazırlanmış karmaşık kullanıcı arayüzü işlemleriyle uğraşmak zorunda kalmazsınız.
  • İstediğiniz herhangi bir programlama dili kullanabilirsiniz. Buradaki uygulamamızda C kullandığımız için aşağıda CGI programlarını özel olarak C ile nasıl yazacağınız anlatılmıştır, ama deneyimli programcı herhangi bir programlama dili için gerekli ipuçlarını aşağıdaki açıklamadan çıkarabilir.
  • Değişik ortamlarda çalışabilir. Programınızın asıl çalıştığı sistem web sunucusunun çalıştığı sistem olmasına karşın, programınıza bilgisayar ağına bağlı herhangi bir bilgisayardan ulaşılabilir. Kullanabileceğiniz hemen hemen bütün işletim sistemleri ve ortamlar için web tarayıcısı bulabileceğiniz için, yazdığınız tek program birçok farklı ortamdan kullanılabilir.
  • Dağıtık ortamlarda kullanılabilme olasılığı. Programınızın kullanıcı arayüzü (web tarayıcısı) başka bir ortamda, web html formlarınız başka bir sistemde, CGI programlarınız başka bir sistemde olabilir.
Bu avantajların yanında sayılabilecek birkaç dezavantaj,
  • Dikkatsiz yazılmış CGI programları güvenlik açıklarına neden olabilirler.
  • Kullanıcı arayüzleri çok kolay ve hızlı oluşturulmalarına karşın, web tarayıcısının yetenekleriyle sınırlıdır.

CGI Yapısı

En basit haliyle bir CGI programı, standart giriş dosyasına çıktılarını veren herhangi bir program olabilir. Tek farklılık, herhangi bir çıktıdan önce yazmanız gereken iki satır. Bu satırlardan ilki,
Content-type: text/html
olmalı. İkincisi ise boş bir satır. Aşağıdaki C örneği bu konuda daha açıklayıcı olacaktır. Bundan sonra ekrana yazacağınız herşey web tarayıcısı tarafından HTML ile yazılmış bir döküman olarak değerlendirilecektir.
CGI programları girdilerini HTML formlarından alırlar. HTML formları ayrı bir HTML dosyasında olabilecekleri gibi, bir CGI programının çıktısı olabilirler, hatta aynı program hem formu oluşturup, hem de çıktıyı değerlendirerek gerekli işlemi yapabilir.
Aşağıda örnekleriyle formları nasıl oluşturulabileceğini, ve CGI programlarının nasıl yazılacağı konusunda ayrıntılı bilgi bulacaksınız.
Form HTML2.0 standardıyla gelen bir kullanıcı arayüzü. Formlarda bir dizi değişik yöntemle kullanıcıdan girdi alınabilir. Bunları aşağıda maddeler halinde göreceğiz.
Bir html formu <form> ile başlayıp, </form> ile biter. <form> birkaç parametre alır. HTML'de parametreler <form p1=değer1 p2=değer2 p3> şeklinde verilir. Bu örnekte formun p1 ve p2 iki değer alan parametre, p3 adlı değer almayan bir parametresi var. forma verilebilecek ve verilmesi gereken parametreler,
METHOD : Bu parametre, formun ne şekilde hangi html metodu kullanılacağını belirler. POST ya da GET değerini alabilir. POST daha çok karşı tarafta herhangi bir etkisi olan programlar için, GET ise sadece sonuç veren programlar için kullanılır. Ama yaygın işlem her ikisi için de POST kullanmaktır. Biz uygulamamızda her iki durum için de POST kullandık.
ACTION : Bu parametreyle, formun çalıştıracağı CGI programı belirtilir. Verilen CGI programı aynı makinada olabileceği gibi Internet üzerindeki herhangi bir makinada da olabilir.
ENCTYPE : Form'un sonuçlarının CGI programına ne şekilde gönderileceği bu parametreyle belirtilir. Belirtilmemesi durumunda standart 'application/x-www-form-urlencoded' kullanılır. Bizim önerimiz, bu seçeneğin belirtilmemesi ve standart kullanıma gidilmesi. Bu şekilde programınız hem heryerde çalışır, hem de bu kodlama biçimi için hazır kütüphanelerden yararlanabilirsiniz
Formun içinde bir dizi değişik girdi tipi tanımlayabilirsiniz. Bunlar <INPUT> ile verilir. INPUT için bir dizi input tipi kullanılabilir. Bu tipleri aşağıdaki gibi sıralayabiliriz:
TEXT : Bu tip tek satırlık metin girdiler için kullanılır, birden fazla satır için <TEXTAREA> kullanmalısınız.
Yukarıda belirtilen her bir INPUT tipi için verebileceğiniz ya da vermeniz gereken bir ya da birkaç parametre vardır. Bu parametrelerin ayrıntılarına burda yer vermiyoruz. Bu ayrıntıları www.w3.org 'dan ulaşabileceğiniz birçok dökümandan ya da bu dökümanın kaynak kodu dahil olmak üzere İnternet üzerinde bulacağınız birçok formun kaynak kodundan yararlanarak öğrenebilirsiniz.

Örnek CGI Programı

Sıradan bir CGI programı bir html formundan girdilerini alıp, çıktıları HTML formatında ekrana yazar. CGI programının çıktıları web tarayıcınız tarafından yorumlanır.
Bir GCI programı, herhangi bir programalama dilinde yazılabilir. Çok kullanılan diller arasında C, Perl ve daha çok basit işler için de olsa shell gösterilebilir. Bu uygulamada C kullandık. Aşağıda en basit haliyle CGI için bir helloworld.c göruyorsunuz.
/* helloworldcgi.c -- ilk CGI programi. Bu program formdan gelen girdiyi
 * dikkate almayip, sadece ekrana(html tarayicisina) 'hello world' yazisini
 * basar
 */
#include <stdio.h>
main (){
/*      DIKKAT!!! asagidaki satir olmazsa programiniz calismaz.
*/
        printf("Content-type: text/html\n\n");
        printf("hello world!");
}
Aynı örneği bir bash programı olarak yazacak olsaydık:
#!/bin/bash
# CGI icin ornek kabuk programi
echo 'Content-type: text/html'
echo
echo
echo 'hello world!'
Bu dökümanın bundan sonraki kısmındaki örnekler C için hazırlanmıştır. CGI programı yazmak için gereken daha fazla bilgi sadece, C (ya da ilgili dil) ve HTML bilgisine ek olarak sadece programınızın girdiyi nasıl alacağı. C için en sevdiğiniz C kitabını, HTML içinse İnternet üzerinde bulacağınız dökümanları öneririz.
HTML Form'unun çıktısı 'ad=değer' şeklinde '&' ile ayrılmış tek satırlık bir karakter dizisinden oluşur. Bu dizideki boşluklar '+' ile ASCII setindeki alfa-nümerik karakterler dışındaki bütün karakterler (%, +, ç, Ö gibi) üç karakterlik '%XX' şeklinde bir ifadeyle gösterilir. Buradaki XX ifade edilen karakterin onaltılık sayı sistemindeki kodudur. Formun çıktısını, gets(), scanf() gibi herhangi bir C I/O fonksiyonuyla okuduktan sonra, eldeki karakter dizisinden istediğiniz bilgileri almalısınız. Bu diziyi isterseniz kendi yazdığınız programla isterseniz İnternet üzerinde heryerde bulabileceğiniz hazır kütüphanelerle işleyebilirsiniz.
CGI programının çıktısı istediğiniz gibi bir HTML dökümanı olabilir. Örnek bir HTML ve FORM dosyası aşağıdaki gibidir :
<hr>
<p>
<form method="POST" action="http://penguen.cclub.metu.edu.tr/cgi-bin/deneme"<P>
E-mail adresiniz :  <INPUT NAME="e-mail" SIZE=38></P><P>
Isminiz : <INPUT NAME="isim" SIZE=42><P>
Buraya birseyler yazabilirsiniz: <P>
<TEXTAREA name="body" rows=10 cols=50> birseyler </TEXTAREA>
<P>
<input type="submit" value="Gonder">
<input type="reset" value="Temizle"></P>
</FORM>
<p>
<hr>
Form, hayali penguen.cclub.metu.edu.tr adresi üzerindeki "deneme" isimli programı çalıştıracak şekilde ayarlanmıştır.