sheLL nedir açıkLama

BLuєćяσwηz

Uzman üye
4 May 2008
1,697
38
TυякHα¢кTєαм
Bazı sunucu sağlayıcıların önerdikleri paketler ile birlikte shell erişimine izin verdiklerine mutlaka rastlıyorsunuzdur. Peki nedir bu shell dedikleri ve ne işe yarar? Çok kısaca özetlemek gerekirse; shell sunucunuz üzerinde komut satırı üzerinden işlemler gerçekleştirebilmenize olanak sağlayan bir yazılımdır. Shell ekranını, Windows’da “Başlat > Çalıştır” ile karşınıza çıkan kutuya “cmd” (win9x için “command”) yazdığınızda karşınıza çıkan siyah ekranın Linux versiyonu olarak düşünebilirsiniz. Windows’daki komut satırı ile küçük benzerlikler gösterse de çok daha gelişmiş özellikler barındırır, ki bu sayede de işini bilen birisi için Linux ile işletilen bir bilgisayarı herhangi bir arayüze gerek kalmadan yönetmek çok kolaydır.
Sunucu sağlayıcılar, bir ihmal ya da kasıt sonucunda tüm sistemi etkileyecek sonuçlarla karşı karşıya kalmamak için, kullanıcılara sağladıkları shell erişiminde genellikle kısıtlamalara giderler. Fakat çoğu kez kulanıcılara kendi yetki alanlarında tüm dosya işlemlerini sınırsızca gerçekleştirebilecek ve sunucu bilgisayarda kurulmuş olan yardımcı programları kullanabilecek kadar yetki sağlanmaktadır.
Shell erişimi, sunucuların tercihine bağlı olarak, TELNET veya SSH üzerinden gerçekleştirilebilir. Hiçbir şifreleme yeteneği olmayan TELNET hem kullanıcılar hem de sunucular açısından oldukça güvensiz olduğu için genellikle tercih edilmezken, benim kullandığım DreamHost’da olduğu gibi, sunucu sağlayıcınız her iki metodu da destekleyebilir. Eğer sunucunuz TELNET ile erişime izin veriyorsa, başka hiç bir araca ihtiyaç duymadan, her Windows kurulumu ile birlikte gelen TELNET istemcisini kullanarak bağlanabilirsiniz (“Başlat > Çalıştır > telnet”). Bununla birlikte, yıllardır düzeltilmeyen bir geri-silme tuşu (backspace) problemi olan bu araç yerine, ücretsiz ve açık kaynak kodlu bir yazılım PuTTY‘i kullanmanızı tavsiye ederim. Ben de, hem TELNET hem de SSH erişimlerini destekleyen ve kararlı yapısı ile birçok kişinin favorisi olan, PuTTY’i kullanıyorum.
Shell ve Linux konusunda sözü fazla uzatmak istemiyorum, isterseniz internette yapacağınız küçük bir arama ile istemediğiniz kadar bilgiye ulaşabilirsiniz :) Bunun yerine küçük bir iki örnek vererek shell’in doğru kullanıldığında hayatınızı nasıl kolaylaştıracağını anlatmak daha doğru olacaktır diye düşünüyorum.
Başlamadan önce

Komut satırı üzerinden gerçekleştireceğiniz işlemler sırasında yapacağınız bir yanlış geri dönüşü olmayan hatalara ve bunların sonucunda da telafi edilemeyecek veri kayıplarına neden olabilir. Bu yüzden, eğer komut satırı ile daha önceden tecrübeniz yoksa, sunucunuzda denemeler yapmadan önce kendi bilgisayarınız üzerinde Linux çalışan (live) CD’leri ile pratik yapmayı düşünebilirsiniz. Eğer sunucunuzda çalışmayı tercih ederseniz, geçici bir dizin oluşturarak denemelerinizi orada gerçekleştirmenizi öneririm. Sunucunuz üzerinde geçici bir dizin oluşturmak için aşağıdaki komutu kullanabilirsinizz

$ mkdir temp
daha sonra da bu dizinin içerisine girerek denemelerinizi burada gerçekleştirebilirsiniz.
$ cd temp
Herhangi bir komutu gerçekleştirmeden önce nerede olduğunuzdan emin olmak için “pwd” komutunu kullanabilirsiniz.
$ pwd
pwd komutu size aşağıdakine benzer bir şekilde sunucunuzda nerede bulunduğunuzu gösterecektir;
/home/adiniz/temp
Üstteki durumda “temp” dizini içerisindesiniz demektir. Dizin içeriğini listelemek için “ls” komutundan yararlanabilirsiniz.
$ ls -al

ve birkaç küçük ipucu;
  • Tab tuşu shell kullanımına hız kazandırır;

  • Tab tuşu ile dosya ve dizin adlarının otomatik olarak tamamlanmasını sağlayabilirsiniz. Örneğin wp-admin/ dizinini yazarken wp-a yazdıktan sonra tab tuşuna tıklarsanız shell dizin adını sizin için otomatik olarak tamamlayacaktır.
    [*]Yazdığınız komutların geçmişi kaydedilir;

    Shell kullanırken kullandığınız komutların geçmişi kaydedilir ve isterseniz klavyenizdeki yukarı ok tuşunu kullanarak en son kullandığınızdan başlayarak bunları görebilirsiniz. Bu sizi aynı uzun komutları tekrar yazma zahmetinden kurtararak zaman kazandırır.
    [*]“.” ve “..” ifadeleri;

    Bir dizin altındaki içeriği listelerken karşılaşacağınız “.” ve “..” ifadeleri, sırası ile, bulunduğunuz dizinin ve bir üst dizinin yolunu simgelerler. Bunları dosya işlemleri sırasında da kullanabilirsiniz, örneğin;
    $ mv ../abc/dosya.uzanti .
    komutu bir üst dizin altında bulunan abc dizini içerisindeki dosya.uzanti isimli dosyayı bulunduğunuz dizine taşıyacaktır.
    [*]man sayfaları;

    Kullanımını merak ettiğiniz bir yazılımın/komutun kullanım klavuzuna “man” komutu ile ulaşabilirsiniz. Örneğin unzip komutunun kullanım klavuzuna;
    $ man unzip
    ile ulaşabilirsiniz.
    [*]Herhangi bir ekrandan komut satırına geri dönmek için;

    CTRL+Z tuş kombinasyonunu kullanabilrisiniz. Eğer bu çalışmazsa CTRL+X deneyebilirsiniz. Her ikisi de çalışmazsa son çare olarak, shell’den çıkış yapmanıza neden olacak, CTRL+D kombinasyonunu kullanabilirsiniz.
  • WordPress’i FTP kullanmadan güncellemek

    Standart bir WordPress kurulumunu güncellerken wp-admin/ ve wp-includes/ klasörlerini, ve kurulum kök dizinindeki wp-config.php hariç tüm dosyaları silmeniz gerekecektir. Bunların yanında, eğer varsa, wp-content/cache/ dizinin de silinmesi gerekir. Tüm bu işlemleri FTP istemiciniz ile yapmaya kalktığınızda, tüm dosya ve klasörleri teker teker ele alan istemcinizin bu alt dizinler altında bulunan dosyaları birer birer silmesi dakikalar alacaktır. Sonrasında güncel WordPress dizin ve dosyalarını sildiklerinizin yerine göndermek için de, yine herbir dosya teker teker gönderileceğinden, silmek için ayırdığınız zamandan daha fazlasına ihtiyacınız olacaktır. FTP istemicinizi kullanarak gerkeçleştireceğiniz bir WordPress güncellemesi, sizin ve sunucunuzun internet hızına bağlı olarak, ortalama 10-15 dk arasında zaman gerektirmektedir. Eğer çok sayıda eklenti de kullanıyorsanız, güncelleme öncesinde deaktive ettiğiniz bu eklentileri tekrar (ve teker teker) aktifleştirmeyi de hesaba katarsanız, bu süre kötümser bir tahminle 20 dk’yı bile geçebilir. Güncellemek zorunda olduğunuz birden fazla siteniz olma olasılığına ise hiç değinmiyorum :) Eğer sunucunuz size shell erişimi sağlıyorsa ve yeterli pratiğe sahipseniz aynı işlemleri gerkçekleştirmek en fazla iki dakikanızı alacaktır.
    WordPress’i shell aracılığı ile güncellemeye başlamadan önce sunucu sağlayıcınızın size temin ettiği shell kullanıcı adı ve şifreniz ile sunucunuza giriş yapmanız gerekiyor. Bunun için yandaki PuTTY ekran görüntüsünde belirtilen alana sunucunuzun host adresini veya IP adresini girmeniz, sonra da altta gösterilen “Open” tuşuna tıklamanız gerekecektir. Sunucu adresini girdiğiniz kutunun altında sunucunuzun tercih ettiği bağlantı tipini belirtmeyi unutmamalısınız. PuTTY seçtiğiniz bağlantı tipine göre bağlantının kurulacağı port numarasını protokol için ön tanımlı iletişim portu ile otomatik olarak değiştirecektir. Bununla birlikte, eğer sunucunuz güvenlik amacı ile ön tanımlı olandan farklı bir port tercih ediyorsa, bunu el ile girmeniz gerekecektir.
    Sonrasında karşınıza çıkan siyah ekranda ise sırası ile kullanıcı adınızı ve şifrenizi girmeniz gerekiyor. Şifrenizi girerken, girdiğiniz karakterler için ekranda yıldız vb bir işaret çıkmayacağı için, hiç birşey yazmıyormuşsunuz izlemine kapılabilirsiniz. Bu shell giriş ekranının genel davranış biçimidir, durumu önemsemeyin ve şifrenizin tüm karakterlerini girdiğinizden emin olduktan sonra “Enter”i tuşlayın, girişin gerçekleştiğini göreceksiniz.
    İşe önce WordPress’in güncel versiyonunu indirerek başlıyoruz, fakat WordPress’i kendi bilgisayarımıza değil doğrudan sunucu bilgisayara indireceğiz :) Bunun için hemen her Linux kurulumu ile gelen “wget” indirme aracından yararlanacağız. Önce geçici bir dizin oluşturalım, sonra da bu dizin içerisine geçelim, emin olmak için de “pwd” komutu ile konumumuzu kontrol edelim;
    $ mkdir temp
    $ cd temp
    $ pwd
    /home/kullaniciadi/temp

    Yeni oluşturduğumuz “temp” dizini içerisinde olduğumuzdan emin olduktan sonra WordPress’i indirmesi için sunucumuza talimat verebiliriz;
    wget https://tik.lat/ZHdEw
    Sunucu bilgisayarlar internete yüksek hızlar ile bağlandıklarından dolayı, indirme işlemi en çok birkaç saniye sürecektir. Sonrasında latest.tar.gz dosyasının varlığını “ls” komutu ile kontrol edebiliriz. Komutu “ls -al” olarak girdiğinizde aşağıdakine benzer bir ekran ile karşılaşmanız gerekiyor;
    $ ls -al
    total 528
    drwxrwxr-x 2 kullaniciadi pg543492 12288 2007-01-21 01:38 .
    drwxr-x--x 21 kullaniciadi pg543492 4096 2007-01-15 10:18 ..
    -rw-rw-r-- 1 kullaniciadi pg543492 519033 2007-01-21 01:45 latest.tar.gz
    Artık WordPress’in güncel versiyonunun arşiv dosyasını indirdiğimize göre bunu açabiliriz. TAR formatında olan ve GZIP sıkıştırmasına sahip bu dosyayı aşağıdaki komut aracılığı ile bulunduğu dizine açıyoruz;
    tar -xzvf latest.tar.gz
    Bu işlem sonucunda girilecek bir “ls -al” komutunun şöyle bir ekran ile geri dönüş yapması gerekir;
    $ ls -al
    total 532
    drwxrwxr-x 3 kullaniciadi pg543492 12288 2007-01-21 01:45 .
    drwxr-x--x 21 kullaniciadi pg543492 4096 2007-01-15 10:18 ..
    -rw-rw-r-- 1 kullaniciadi pg543492 519033 2007-01-21 01:45 latest.tar.gz
    drwxr-xr-x 5 kullaniciadi pg543492 4096 2007-01-15 13:41 wordpress
    WordPress’in son versiyonunu barındıran “wordpress” dizininin oluştuğunu gördükten sonra bu dizin içerisine geçiyoruz;
    $ cd wordpress
    ve kendimize güncelleme sırasında kullanacağımız yeni bir arşiv oluşturuyoruz (*);
    $ tar -czvf wp.tgz *
    Artık güncelleme için kullanacağımız WordPress paketini hazırladığımıza göre güncelleyeceğimiz WordPress kurulumu üzerindeki işlemleri gerçekleştirebiliriz (anlatım sırasında WordPress’in sunucu kök dizini altında bulunan “www” dizini içerisinde kurulu olduğunu varsayacağım). Bunun için sunucumuzdaki “www” dizinine geçiş yapıyoruz;
    $ cd /home/kullaniciadi/www
    Bu dizinde ilk işimiz, daha sonraki basamaklarda yapacağımız işlemlerden etkilenmemesi için, wp-config.php dosyasının adını (daha doğrusu uzantısını) değiştirmek olmalı. Bunun için aşağdaki komutu kullanıyoruz;
    $ mv wp-config.php wp-config.php.yedek
    wp-config.php’yi sağlama aldıktan sonra, bu dizin içerisinde silinmesi gereken dizin ve dosyaları aşağıdaki komut aracılığı ile uzaklaştırıyoruz;
    $ rm -rf wp-admin/ wp-includes/ wp-content/cache/ *.php
    Bu basamaktan sonra geriye sadece wp-content/ dizini, işlem öncesinde adını değiştirdiğimiz wp-config.php.yedek dosyası ile WordPress kök dizinin de bulunan, ve WordPress’in çalışabilmesi için hayati önem taşımadıkları için güncellenmelerinin çok da gerekli olmadığı, readme.html ve license.txt dosyalarının kalmış olması gerekiyor. İsterseniz daha önceki basamaklarda da kullandığımız “ls -al” komutu ile kontrol edebilirsiniz.
    Gerekli uzaklaştırma işlemlerinden sonra güncelleme için hazırladığımız WordPress arşivini içinde bulunduğumuz “www” dizinine taşıyabiliriz. Bunun için aşağıdaki komuttan yararlanıyoruz;
    $ mv ../temp/wordpress/wp.tgz .
    Sonra da arşivin içeriğini çıkartmamız gerekiyor;
    tar -xzvf wp.tgz
    TAR dosyaları çıkartırken ön tanımlı olarak eski dosyaların üzerine yazacaktır (dolayısı ile wp-content/ dizini içerisindeki eski dosyalar paket içerisindeki versiyonları ile değiştirileceklerdir) (**). Güncel WordPress dosyalarını yerine koyduktan sonra adını değiştirdiğimiz wp-config.php’yi tekrar eski haline getirmemiz gerekiyor;
    $ mv wp-config.php.yedek wp-config.php
    Herşey yerli yerinde olduğuna göre artık tarayımızın adres satırında upgrade.php’yi çalıştırarak yükseltme işlemini tamamlayabiliriz.
    https://tik.lat/rPINL
    Evet hepsi bu, artık eklentilerinizi aktifleştirmeye başlayabilirsiniz :) Konu ile ilgili bir sonraki yazımda bir sitenin yedeğinin shell aracılığı ile nasıl alınacağına ve shell işlemlerinin nasıl otomatize edilebileceğine değineceğim. Eğer bu yazıyı beğendiyseniz bir sonrakini kaçırmamanızı öneririm ;)
    Dipnotlar;

    (*) Arşivi açarken hedef dizinde “wordpress” isimli bir dizin oluşmasını istemediğim ve bu yöntem dosyaları teker teker belirleyerek çıkarmak ya da taşımaktan daha kolay geldiği için tercih ettim. Eğer istereseniz bu basamak (veya genel olarak önerdiğim güncelleme metodu için) bir çok değişik alternatif bulabilirsiniz.
    (**) Aklınıza gelebilecek; “Madem TAR otomatik olarak eski dosyaların üzerine yazacak, neden güncelleme sırasında değiştirilecek dosyaları silmekle zaman kaybediyoruz?” sorusu için; bazen dosyaların sahipleri ve izinleri dolayısı ile üzerine yazma işlemi sekteye uğrayabiliyor, bu yüzden işimizi garantiye alıyoruz ;)
 
Son düzenleme:
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.