Perşembe, Haziran 28, 2007

Kullanıcıları ve Masaüstünü Kontrol Altına Almak -4

Aslında bu proje gerçekten de çok büyük ve kapsamlı bir proje olacaktı. En basit şekliyle bile oturup düşündüğümüzde aşağıdaki ana fazlara varıyorduk.

1- 1100 adet marka bazında düzenlilik gösteren dizüstü bilgisayarın klonlanması
2- 1000 adet yarısı markalı yarısı markasız, düzensiz PC parkının klonlanması.
3- Group Policy ve diğer araçlarla kullanıcı masaüstünün ve bilgisayarlarının düzenlenmesi, güvenlik ayarları.
4- Tüm bilgisayarlarla eski forest'tan yeni forest'a göç.

Projenin sonuna varmış mutlu bir kişi olarak söyleyebilirim ki proje boyunca bir çok değişiklikler oldu. Yukarıda saydığımız ana fazları da yine sayıldığı gibi ardışık olarak gerçekleştirmedik. Bazen bazı parçaları birleştirip yeni fazlar oluşturduk, sonra tekrar ana fazlara geri döndük, tam yarı yoldayken destek verdiğimiz iki şirket BT'lerini ayırma kararı alınca, proje dahilindeki PC ve dizüstülerin yarısını proje dışında bırakmak zorunda kaldık vs.vs.

Başlangıca geri dönersek, ilk yaptığımız iş öncelikle firma(lar)daki bilgisayar parkını tespit etmek oldu. Oluşturduğumuz envantere ve iş süreçlerine (!) (anlayanlar anladı :) ) bakarak yaptığımız değerlendirme sonucunda önce dizüstü bilgisayarları bitirmeye karar verdik. Çünkü 4 markadan bilgisayarlar vardı ve klonlanması çok kolaydı.

İmaj yazılımı olarak Norton Ghost Enterprise 8.0 kullandık. Daha önce de çalıştığım firmada aynı anda 200 pc'yi klonlamak gibi başarılı çalışmalar yaptığım için performansından emindim. Bu sefer de yüzümü kara çıkarmadı.

İmajları oluştururken her markadan bir dizüstü aldım ve imaj oluşturmaya başladım. Bilgisayarlarda kullanılan ve ihtiyaç duyulan standart yazılımları tespit ettim ve bu yazılımları bilgisayarlara yükledim. Daha sonra üzerlerinde ihtiyaç duyduğum güvenlik ayarlarını ve Group Policy ayarlarını uyguladıktan sonra ilk testlerimi yaptım.

Ancak bazı yazılımlar çalışmadı. Örneğin, admin yetkisi olmayan sıradan kullanıcılar AS/400 Emülasyonunu kullanmak için C:\Program Files\IBM\AS400\Emulator klasörüne yazma gereği duyuyorlardı. Aynı şekilde Lotus Notes kullanmak için de C:\Program Files\Lotus klasörü altında RWX yetkisi gerekliydi.

Buna benzer ince ayarları tamamladıktan sonra beta testleri için bir grup dizüstü bilgisayar kullanıcılara dağıtıldı. Bir haftalık testten sonra yeterince kararlı olduğuna inandığımızda imajlarımızı V1.0 olarak adlandırdık ve kurulum için sahaya çıktık.

Bölgeye gidip kullanıcı laptoplarını yağmalamadan önce :) halletmemiz gereken bir sorun daha vardı. Bu makinaları formatlayarak yeniden kuracaktık ama ya kullanıcıların mevcut dosyalarını nasıl aktaracaktık ?
Burada da imdadımıza Symantec Client Migration 3.0 yazılımı yetişti. Ghost Enterprise içinde gelen yan ürünlerden birisidir. Kullanıcı bilgisayarına küçük bir ActiveX dosyası yükleyerek Registry, Desktop, Lotus Notes ayarları, My Documents vs. aklımıza gelebilecek her türlü ayar ve dosyayı ortak bir sunucuya aktarmayı, oradan da yeni bilgisayara aktarmayı sağlıyordu.

Bu yazılımın tek sorunu, Türkçe Regional Settings ile çalışmayı kabul etmiyor olması. Eğer ayarlar sunucuda TR ise, logon olmaya izin vermiyor. O yüzden daha kurulum sırasında sunucuyu İngilizce bırakmak gerekiyor. TR'den İng.'ye dönmek de işe yaramıyor hatırladığım kadarıyla.

Bu yazılımı bulmadan önce çok çılgın bir fikrim vardı. Üzerinde 500-600 Gb disk alanı bulunan bir HP Compaq sunucuyu sırtlayıp bölgeye götürüp klonlanacak bilgisayarların kopyasını almayı bile düşünmüştüm. Şimdi komik geliyor ama çaresizlik zor şey gerçekten... :)

Gitmeden önce yaptığımız bir çalışma da tüm dizüstü tipleri için uygun açılış disketlerini hazırlamak oldu. IBM X31, Toshiba ve Compaq EVO serisi hepsi Intel Pro/100 ethernet kartının NDIS sürücüsünün yüklendiği açılış disketiyle gayet sorunsuz çalışıyorlar. Yalnızca bu konudaki önerim, ortamda kaç dizüstü varsa ve bir seferde kaç makina klonlanacaksa o kadar disket + bir kaç yedek hazırlamak olacak. Sonra disket bozulması vb. sorun çıkabiliyor. Ofise geri dönmek zorunda kalabilirsiniz :)

Gitmeden önce bölgeye bir mesaj yazıp herkesin belirtilen tarihte bilgisayarlarını hazır bulundurmalarını istedik. Hatta tüm belge ve kıymetli bilgilerini de My Documents altına toplamalarını, bunun dışındaki klasörlerin incelenmeyeceğini ve bilgi kaybı olabileceğini de hatırlattık. Müzik ve porno film meraklıları için de yeni sistemlere böyle dosyaların aktarımı servisimizin olmadığını mesajımıza ilave ettik. :)

Bölgede bizi bir süpriz bekliyordu. Ofisimizde harika çalışan Ghost sunucusu çalışmıyordu. Bazı denemelerde de inanılmaz yavaş çalışıyordu. Bir süre acı çektikten ve deneme yanılmalardan sonra öğrendik ki bölgedeki 3Com switchler Multicast yayınını desteklemiyormuş. Dolayısıyla yanınızda güvendiğiniz bir switch veya hub götürmekte fayda var.

İlk imaj testlerimi yaparken, yeterince sağlıklı ayarlanmamış genel müdürlük core switchlerinin multicast paketlerini ana sistemlerin segmentine de geçirdiğini, kısa bir süre olsa da kesintilerin yaşandığını, bu olaydan sonra o dönemdeki ağ yöneticimizin beni elinde sopayla kovaladığını da bildirmek isterim. :)))

Operasyon çok başarılı geçti. Uyarılarımızı dikkate almayan 3-5 kullanıcı dışında herkes dosyalarını istenen şekilde düzenlemişti. Bu dosyaları, Lotus arşivlerini ve gereken diğer bilgileri topladıktan sonra makinaları klonlamaya başladık.

Klonlama tamamlandıktan sonra SCM ile tüm bilgileri kullanıcı bilgisayarlarına geri yükledik. Ancak registry vb. ayarların da geri yüklenmesi için geçici olarak makinanın sahibi olan kullanıcıya Admin yetkisi verdik ve iş bitiminde geri aldık. Yoksa yalnızca standart klasörleri geri yükleyebilirsiniz. İş bittiğinde, sysprep ile hazırlanmış, mini setup çalıştırılmış ve domain'e alınmış bir bilgisayarda SCM ile geri yükleme sonrasında kullanıcının tüm dokümanları, masaüstü, Lotus Notes, AS/400 ayar ve dosyaları ve arşivleri geri gelmişti. Ben hala işimizi yaparken SCM'nin inanılmaz faydalı olduğunu ve projenin ADMT ile birlikte en önemli diğer yardımcı yazılımı olduğunu düşünüyorum.

Kullanıcı bilgisayarına SCM ActiveX kurulumu sorunlu olabilir. Yüklenemiyorsa tüm temp dosyalarını ve IE dosyalarını silin. Kapatıp yeniden deneyin. Muhtemelen çalışacaktır.

Bu arada komik deneyimlerimiz de oldu. Ama bize ilerisi için çok şey öğretti. Şöyle ki ;

- Her kullanıcıdan dizüstü bilgisayarını teslim alırken içine veya üzerine kartvizitini yapıştırmasını talep edin. Yapılmamışsa almayın. Makinalar birbirine benzerler :)

- Herkesin şarj cihazını getirmesini sağlayın ve kurulum sırasında mutlaka bilgisayarları şarja takın. Tam "başlat" düğmesine basarken 20 bilgisayardan 5'nin stand-by'a geçtiğin görmek hiç de eğlenceli olmuyor.

Standart kurulmuş makina kullanıcı için tatsız bir şeydi. Ne Control Panel'e girebiliyor, ne masaüstü ayarlarını ve duvar kağıdını değiştirebiliyor, ne de istediği yazılımı yükleyebiliyordu. Bir kullanıcının deyimiyle "gelişmiş bir hesap makinası" olmuştu. Bir klonlama ertesi gününde bir kullanıcının yana yakıla beni bulduğunu ve makinasına neden "Rise of Nations" oyununu yükleyemediğini, bunu engelleme hakkını bana kimin verdiğini sorduğunu hala gülerek hatırlarım :)

Bir dizüstü klonlama operasyonunu özetleyecek olursak şunların yapılması gerektiğini söyleyebiliriz.

- İmajları hangi yazılımla oluşturacağınıza karar verin ve yazılımı mutlaka test edin.
- İmajlamadan önce mutlaka makina envanterini toplayın ve avantajlı / dezavantajlı noktaları tespit edin. Zaman kazanırsınız.
- Bilgisayarlarınızda hangi yazılımların hangi ayarlarla çalışması gerektiğini öğrenerek listesini oluşturun.
- Test imajları oluşturup tüm güvenlik ve operasyon ayarlarınızı test edin.
- Kullanıcı bilgilerini nasıl toplayacağınıza karar verin.
- Test sistemleriyle bölgede yapacağınız çalışmanın küçük de olsa bir simülasyonunu yapın.
- Norton Ghost kullanıyorsanız Multicast enable ağ anahtarlarıyla çalışmaya karar verin ve temin edin.
- Eğer kullanıcı verilerini toplayacaksanız, işinizi kolaylaştırmak için uygun bir düzenlemeyi kullanıcılardan talep edin.
- Çalışmaya başlamadan makul bir süre önce ilgili yöneticilere ve personele yazılı bildirimde bulunun.
- Yeterli miktarda açılış disketi oluşturun.
- Donanımınız veya personeliniz yeterli değilse 20 veya 30'luk gruplardan daha büyük klonlama grupları oluşturmayın. Dağıtık ortamda tüm makinaları izlemek gerçekten zor oluyor.
- Kurulum sonrasındaki ilk günün tamamını bölgeye ayırın. Desteğe ihtiyaçları olabilir. Çatlak sesleri engelleyebilirsiniz.
- Kullanıcılar bu duruma sevinmeyecektir. Alkış beklemeyin, makul ölçülerde açıklamaya çalışın. Daha fazlası için yorulmayın. Tecrübeyle sabittir.

First Kiss ! İlk Deneyim ! (Solaris 10)

Sonunda gerçek ortamda çalışacak ilk Solaris 10 makinamı kurdum. Biraz zahmetli ve uzun bir çalışma olduğunu söyleyebilirim ama her zaman dediğim gibi gerçek ortamda “test” yapmak gibisi yok J İnsan ne kadar hızlı şekilde ve ihtiyaca yönelik spesifik bilgiler öğreniyor inanamazsınız…

Bu kurulum sırasında Windows ortamından kazandığım hız ve deneyim haliyle Solaris dünyamda olmadığı için, zaman zaman çok sinirlendiğim ve sabrımın taştığı anlar oldu. Zaman zaman da acemiliğimle çok eğlendim. Bir kurulum sırasında bu kadar çok kere “keşfetme” duygusunu yaşamayalı çok olmuştu doğrusu…

Özel bir belge yönetim ve iş akışı uygulaması için Intel tabanlı bir sunucuya üzerinde Oracle 10g çalışacak bir Solaris 10 kurulumu yapmam istendi. Bu iş için seçilen HP DL580 sunucunun RAID konfigurasyonunu yaparken ilk sürprizimi yaşadım. HP Smart Start CD’si Windows ve Linux’da olanın aksine Solaris için “assisted installation” yapmıyormuş L. Üç gün once de VMware Server’ın (ücretsiz ürün) Solaris ortamını “Host OS” olarak kullanamadığını öğrenmiştim. Ardından bu, iki oldu.

Smart Start’ın keyfine alışmış olanlar onunla kurulumun ne kadar kolay olduğunu bilirler. Olmayınca elimiz kolumuz bağlanmıyor ama kolaylığı da inkar edilemez.

Solaris DVD’sini sunucuya takınca ikinci sürprizi yaşadım. Solaris 11/6 Smart Array RAID kartını tanımadığı için diskleri görmüyordu. Küçük bir araştırmadan sonra HP’nin sayfasında gerekli sürücüleri buldum ve ISO dosyasını indirdim.

HP Driver Update (DU) for Solaris (x86) 10

http://h18023.www1.hp.com/support/files/server/us/download/26717.html

Ancak hem ISO dosyası hem de sürücü olarak vardı. Sürücüyü bir mini-shell açıp elle yükleyecek kadar henüz bu işten anlamadığım için ISO dosyasını diskette yazıp kullanmaya karar verdim. J Tahmin edebileceğiniz gibi sunucunun disket sürücüsü yoktu. Ben de USB bir sürücü kullandım. Ama yine tahmin edebileceğiniz gibi USB disket sürücüsünü Mount etmekte zorluk yaşadım. Edemedim :)

İnat edip USB disketi nasıl mount edeceğimi yarım saat kadar araştırdıktan sonra, inadın peşine takılıp hedeften uzaklaştığıma karar verip J ISO’yu CD’ye yazdım ve sunucuya taktım. DVD’den açılış sırasında menüden 5.Update drivers seçeneğini seçerek RAID kartının sürücülerini okuttum ve voila ! Sistem diskleri tanıdı.

Kurulum gerçekten çok eğlenceli geçti diyebilirim. Karar verme gel-gitlerim sonucunda toplamda 4 kere kurulum yaptım. Aslında haksızlık etmeyeyim kendime, mantıklı düşüncelerim ve sorularım vardı. O yüzden de bu kadar kurulumun çok da beklenmedik bir durum olduğunu düşünmüyorum.

Kurulum sırasında canımı sıkan bir nokta, sunucu rolünün seçiminde oldu. Fedora ve bildiğim bazı Linux dağıtımlarında olduğu gibi role uygun paket yükleme şablonlarını seçmek gibi bir şans yok. Örneğin, sistemi Workstation, Server vb. göreve yönelik özel şablonlarla kuramıyorsunuz. Ben de bu durumda tam paketi seçtim. Elbette özelleştirmeyi denedim ama paket bağımlılıkları (dependencies) konusunda yeterince bilgili olmadığımdan çok da iyi bir ayarlama yaptığımı sanmıyorum. Yalnızca basit fikirler yürüterek, örneğin “veritabanı sunucusunda Star Office’e ne gerek var ?” gibi sorularla bazı paketleri kaldırdım. Bence burada bir yardım / yönlendirme eksiği bulunuyor Solaris’in.

2 x 76 GB (RAID1) + 3 x 140 GB (RAID5)’ ten oluşan bir disk grubu ve 8 Gbyte belleği olan x64 bir makinaya kurulumu tamamladığımda ilk sorunumu yaşadım.

UNIX camiasında ne kadar geçerlidir, adetten midir bilmemekle birlikte yine de Windows alemindeki sevdiğim alışkanlıklardan birini burada da uygulamak istedim. DVD’den Solaris kurulum dosyalarını /yedek adında bir klasör açıp kopyalayayım dedim. Heyhat ! Bırakıp gittiğimde her şey yolundaydı ama döndüğümde kopyalama durmuştu ve “disk full” mesajı veriyordu. “Ama nasıl olur, 80 Gbyte alanım varken nasıl dolar disk ? “ filan diye söylenirken biraz kurcalayınca ne olduğunu anladım.

/ (root) bölmesi 4 Gbyte görünüyordu. Halbuki c0t0d0s0 ve c1t0d0s0 disklerini elle ayarlamış, hatta ve hatta 280 Gbyte’lık RAID5 alanını “oracle” adında bir bolme oluşturup ayrıca mount etmek gibi "tricky" fikirler filan geliştirmiştim. J

Ama disk yöneticisi bölmeleri ayarlarken / için bu kadar alanı uygun görmüş, kalanı da /export/home için bonkörce ayırmıştı.

Haliyle yeniden kurmaya başladım. Bu arada ilk kurulumumun da “test” kurulumu olduğunu ve yukarıdakinin aslında 2.kurulum olduğunu da belirteyim.

Bu sefer dikkatliydim. Disk alanlarını daha dikkatli dağıttım. Ancak eğitim kitaplarından ve belgelerden gördüğüm ama gerçek hayatta benim hiç uygulamadığım bazı davranışlar olduğunu ve bu konularda bilgi sahibi olmadan vermek zorunda olduğum kararlar olduğunu gördüm. Şöyle ki ;

Aynı sunucu üzerinde (aynı fiziksel disk üzerinde olsa bile) farklı “file system”lar ya da Windows deyimiyle “partition”lar oluşturulup çalışıldığını görmüştüm. Örneğin ; /export/home klasörünü deminki örnekte sistem kendisi otomatik olarak böyle ayırmıştı. /tmp’yi ayıranlar, /opt için aynısını yapanlar, /var/mail ya da (atıyorum) print server kurarken /var/spool’ u ayıranlar vardı. Yani amaca uygun olarak özel disk ayarları yapılıyordu. Bunun ne işe yaradığını biliyordum. Sürekliliği sağlamak için bazı noktalarda bakım yaparken o disk bölmelerini tüm sistemi durdurmadan unmount etmek güzel tabi. Ama ben hayatım boyunca ilk ciddi UNIX serverımı kuruyordum üstelik hiç Oracle kurulumu yapmamıştım. Aklım ve çalışma reflekslerim de daima Windows ortamına uygun davranışlarda bulunmuştu. (Bkz : yedek klasörünün oluşturulması)

O nedenle de açıkçası koca 80 Gbyte’lık diski tek file system olarak ayarlamak bana hiç de garip gelmiyor. (Şimdilik). Aynı şekilde ihtiyaçları ve genel kabul görmüş UNIX davranışlarını henüz bilmediğim için 280 Gbyte’ı da tek file system olarak /oracle adıyla kurdum.

Bu konuyu araştırmaya devam edeceğim. İleride bulduklarımı veya bu sunucudaki deneyimlerimi paylaşmaya devam ediyor olacağım.

Kurulum sırasında Solaris’in tavsiyesine uyarak yalnızca SSH servisi açık kalacak şekilde güvenli kurulumu tercih ettim. Evet, evet… Bunun da sonuçlarını bilmiyorum ama ne kadar güvenli o kadar iyi :P

Mesela henüz sonuçlarını bilmediğim bir kararım da, 8 Gb belleği olan makinada Solaris kurulumunun sözünü dinleyip swap alanını 512 mb olarak bırakmak oldu. Nasıl sonuçları olacak şimdiden kestirmek zor. Sunucunun alacağı işlem yükü bize bunu gösterecek.

Bu arada Solaris üzerinde Oracle kurulumuna dair çok sağlam belgeler buldum.

http://www.dbspecialists.com/presentations/oracle10gsolaris.html#prepare

Kurulum bittikten sonra sunucumu kayıt etmeyi ve yamaları yüklemeyi de unutmadım. J

Bu arada bir not ; Oracle kullanabilmek için bir GUI’ye gerek olduğundan GNOME ve X ‘i yüklemek zorunda kaldım. Nereden bu bilgiyi aldığımı hatırlamıyorum ama umarım yanlış okumamışımdır. Boşu boşuna X yüklemiş olmak istemiyorum. J

Tüm “ilk” ayarlar bitip de uzaktan bağlanmaya sıra gelince, okuduğum ama unuttuğum temel bir kural daha çıktı karşıma. Putty kullanarak uzaktan root ile SSH bağlantısı yapamıyordum. :(

Remote ssh root logins are forbidden http://groups.google.com/group/comp.sys.sun.admin/browse_thread/thread/989dddbb5b60aafe

Küçük araştırmamdan sonra öğrendim ki bu varsayılan bir ayar ve değiştirmek yersiz. Herkesin yaptığı gibi ben de kendime bir sıradan bir de admin kullanıcı açtım ve bununla bağlandıktan sonra ‘su’ ile root’a geçiş yaptım. (Bu arada her seferinde akılsız başın cezasını ayaklar çekiyor ve sistem odasına inmek zorunda kalıyorum, hatırlatırım J )

Beraber eğitim aldığımız ve benden once Solaris’le ilgilenmeye başlayan arkadaşımın uzaktan X bağlantısı yaptığını görmüştüm. Bu iş için Xmanager2 2.0 adında bir yazılım kullanıyordu. Ben de denemeye karar verdim.

Ancak bir türlü bağlantıyı sağlayamadım. Yarım günümü acaba konfigurasyon hatası mı yaptım vs. diye araştırmaya verdim. Sunucu üzerinde kapattığım network servislerini tekrar açtım.

# netservices limited
# netservices open

http://docs.sun.com/app/docs/doc/819-6764/6n8onr7pd?a=view

Ancak yine çalışmadı. Her seferinde “xstart x connection to localhost: 10.0 broken” hatası alıyordum. Oysa XP’nin güvenlik duvarında gereken istisnaları açmıştım. Sunucuda da doğru davrandığımı sanıyordum (vay vay, bu ne güven ! J ). Sonunda arkadaşıma telefon açmaya karar verdim. Evet, bir kere daha sonuca ulaşma merakı, araştırmacı gazeteciliğe galip gelmişti.

5 dk’da sorunu çözdük. L Ben, bağlantı kaydını oluştururken Xstart’I kullanmış ve bir xterm (Solaris) bağlantısı yaratmıştım. O ise bir XDCMP ( O nedir yahu ? ) oturumu oluşturarak anında bağlantı sağladı.

Ancak bu sefer de X window’da console root ile bağlanamıyordum. Yine arkadaşımın yardımına başvurdum. /etc/default/login dosyasında “CONSOLE=/dev/console” satırı comment (#) edilince bu sorun da giderildi.

Bu sunucudaki maceram şimdilik bu kadar. Yeni bilgiler edindikçe yazmaya devam edeceğim.

Çarşamba, Haziran 06, 2007

Solaris hk.

Uzun bir süre ara vermek zorunda kaldığım Solaris çalışmalarıma geri döndüm. Hem iş zorunlulukları hem de artık MS dünyasının gereksiz derecede hırpalayıcı gidişatından sıkıldığım için uzunca bir süredir yeni bir OS öğrenmek istiyordum. Gerçi 2004'ten beri sıkı bir Linux kullanıcısıyım ama büyük sistemlerde Solaris'in pazar payını ve kullanılırlığını görmezden gelemezdim.

Sonuç olarak 6 aydır küçük küçük dokunuşlarla ve temkinli denemelerle incelediğim Solaris 10 ile yaklaşık 3 haftadır ciddi olarak uğraşıyorum. Bir süre boyunca eğitim notlarından çıkarttığım zihin haritaları (Mind Map) ekte olacak. Kullanmak isteyenler olursa diledikleri gibi blogdan alabilirler.

SA-200 Module 4 - Managing File System

SA-200 Module 3 - Managing Local Disk Devices

SA-200 Module 2 - Directory Hierarchy

SA-200 Module 1 - Installing Solaris

Salı, Haziran 05, 2007

SA-100 Fundementals of Solaris Ders Notlari

SA-100 Fundementals of Solaris

1.1.1970 Unix'in resmi olarak çalışmaya başladığı tarihtir. Sistem başlatıldığında 1970'den ileriye doğru saniye sayar. Sistem saniye saymaktadır, dolayısıyla 2000 yılı problemi bulunmamaktadır.

groupadd -g 101 sales

groupadd -g 102 support

cat /etc/group

UNIX'de dosyaların uzantılarının bir anlamı bulunmamaktadır. Dosyanın çalıştırılabilir (executable) olup olmaması verilecek X (execute) hakkı ile ilgilidir.

UNIX'de dosya isimleri en fazla 256 karakter olabilir.

useradd -u 1501 -g 101 -d /export/home/mali -m -s /bin/bash mali

Tüm UNIX'lerde kullanıcı oluşturulduğunda varsayılan değer olarak hesabı kilitlidir.

showrev : OS versiyonunu ekranda göstermek için kullanılır.

ifconfig -a Tüm interfacelerin IP bilgilerini gösterir.

Hostname : bilgisayarın adını görmek için kullanılır.

/usr/sbin/ping -s (statistics) IP

pwd (print working directory) : O an içinde çalışılan klasörü gösterir.

Solaris'deki komutların çoğu /usr/bin veya /usr/sbin'de bulunmaktadır. /usr/bin daha çok normal kullanıcının kullandığı, /usr/sbin ise Admin tarafından kullanılan komutları içerir.

Solaris OE (Opeating Environment) olarak değerlendirilir.

- SunOS 5.10

Solaris

  • GUI – CDE (Common Desktop Environment)

  • Java Desktop

Kernel, işletim sisteminin kalbidir. Kullanıcı doğrudan donanımla konuşamaz, onun yerine Kernel konuşur. Kernel ile kullanıcının anlaşmasını da ara katman olarak Shell (Kabuk) sağlar. Shell, komutları C çağrılarına çevirir.

Sistemin bellekten okuma hızı yaklaşık 10 nanosaniye, diskten okuma hızı ise 10 milisaniye civarındadır. Disk belleğe göre en az 1000 kat, normalde 1 milyon kat daha yavaştır.

Kernel, bellek sayfalama işlemleri için Kernel Paging Algorithm denen bir sistem kullanır.

Swap (Takas) alanı oranı (RAM) 1 / 2 (SWAP) dir.

Sistemde canlı olarak bulunan proseslerin üç hali vardır. Running, Ready ve Wait.

CPU'ya atanan işlem atandığı süre boyunca (Time Slice) çalışır. Sürekli “Running” halinde kalmaz.

Wait modu başka bir prosesden bilgi beklendiğinde bulunulan durumdur. Örneğin, www.sun.com yazıldığında ekranda göstermek için Internet'ten web sayfasına ait bilgilerin inmesini bekleyen browser gibi.

Shell, bir Interpreter (yorumcu) dur. İlk UNIX shell AT &T Bell Laboratuvarlarında geliştirilen Bourne Shell'dir (sh). Steven Bourne tarafından geliştirilmiştir.

Diğer Shell'ler :

  • Korn (David Korn)

  • Bash (Bourne Again Shell)

  • C Shell (csh)

  • Z Shell (zsh)

  • Tc Shell (tsh)

Shell'lerin farklı olması yazılan temel UNIX komutlarını etkilemez. En büyük farklılıklar script yazarken görülmektedir.

UNIX'de kullanılan en gelişmiş script dili PERL'dir.

  • Tüm konfigürasyon dosyaları /etc klasöründe durur.

  • C:\windows klasörünün Sun Solaris karşılığı /usr ' dir. Sun Solaris'deki tüm OS dosyaları /usr'da durur.

  • C:\Program Files\ karşılığı /opt' dir.

  • Emailler, printer dosyaları, sistem logları ve Web Server /var altında durur.

  • Cihazlar /dev' de durur.

  • Kullanıcı ev dizinleri (home), /export' da durur. Ör : /export/home/mali.

su (switch user) komutunun (-) ile kullanılması kıdemli UNIX yöneticilerinin tercih ettiği bir yoldur.

id komutu, whoami gibi çalışır.

cd home (path yazılımı Relative Path'dir)

cd /export/home (path yazılımı Absolut Path'dir)

cd (doğrudan home folder'a yönlendirir)

cd ~ (doğrudan home folder'a yönlendirir)

/tmp klasörü Virtual Memory'i kullanır. Buraya yazılan dosyalar sistemin ilk kapatıp açılmasında silinebilir. Bu klasörde farklı bir dosya sistemi kullanılır. Bu (silinme), Solaris'e özgü bir durumdur.

Root kullanıcısının şifresi 'Master Key'dir. Yani tüm şifreleri açabilir. Şifreli ekran koruyucuları dahil.

uname -a ekrana işletim sistemine dair tüm bilgileri döker.

shovrev daha da detaylı bilgi verir.

Birden fazla komutu ard arda çalıştırmak için aralarına (;) konulur.

cal komutu takvimi görüntüler.


“Dont let your fıngers go faster than your mind”


Sun dokümanları http://docs.sun.com adresinden indirilebilir.

Başına (.) konan dosyalar görünmez olur.

ls -al ; all + long formatta gösterir.

ls -ltr ; dosyaları baştan sona doğru yaratılma tarihine göre sıralar.

ls -lt ; sondan başa sıralar.

ls -f ; dosya tipi hakkında özet bilgi verir. (dosya tipleri : / directory, @ link, * executable)

ls -R : (Recursive search) Alt dizinleri gösterir.

Akan ekranı CTRL+S durdurur. CTRL+Q kaldığı yerden devam ettirir.

file komutu dosyanın tipini verir.

strings komutu ile binary dosya içindeki text kısımlar görüntülenebilir.

cat komutu içeriğin tamamımı bir seferde ekranda gösterirken, more sayfa sayfa gösterir.

head -3 /var/adm/messages ile içeriğin ilk 3 satırını göstermek mümkündür.

tail -3 /var/adm/messages ile sondan 3 satır görüntülenebilir.

Bir dosyadaki satırları saymak için ;

cat /var/adm/messages | wc -l

lpstat -o (status)

lpstat -t (detaylı göster)

lp /etc/paswd (dokümanı yazıcıdan basar)

cancel (baskıyı iptal eder)

head -27 /var/adm/messages | tail -7 (20-27 satırları ekrana bas)

rm komutu sadece görünen dosyaları siler. Saklı dosyaları silmek için rm .* kullanılabilir.

touch dosya1 dosya 2 ... ile aynı anda birden fazla dosya yaratmak mümkündür.

cp ../file2 . ( üst klasörden buraya file2 dosyasını kopyala)

mv komutu dosyanın adını değiştirmek için kullanılabilir.

mv dosya1 dosya2

mv ../file2 . (üst dizinden dosyayı buraya al)

cp -r DIR2 DIR5 (Alt klasör ve dosyalarla birlikte kopyala)

rmdir komutu dolu klasörü silmez. rm -rf (recursive + force) ile silmek mümkün olabilir.

rm -ri BACKUP (Interactive remove). Silerken soru sorar.

ln -s /var/adm/messages log (Sembolik link oluşturur)

Linkleri silmek gerçek dosyayı silmez. Link Windows'daki shortcutlarla aynı işlevdedir.

vi' de farklı iki mod bulunur. Yazım ve komut modları.

Yazı moduna geçmek için : i a o

Komut moduna geçmek için : ESC

Cursorun olduğu yerden itibaren yazmak için Insert (i), sondan devam etmek için append (a) komutları kullanılır.

Cursorun altına boş satır açmak için Open (o) komutu kullanılır.

x: Cursorun üzerinde olduğu karakteri siler.

3x : Baştaki sayı kadar karakteri cursordan itibaren siler.

dd : Cursorun bulunduğu satırı siler.

4dd : 4 satır siler.

u: undo

yy : Satır kopyalama komutu.

5yy : 5 satır kopyala.

p : Cursorun altına yapıştır.

/karpuz : Cursordan sonraki ilk diziyi bulur.

:7 : yedinci satıra gider.

:q : Çıkış.

:q! : Quit without save.

:wq : write + quit

:wq! : Salt okunur dosyaların üzerine zorlayarak yazmak için kullanılır.
cmp file1 file2 : İki dosyayı karşılaştırır.

diff file1 file2 : İki dosyayı daha detaylı karşılaştırır.

sdiff file1 file2 : Çok daha detaylı karşılaştırma bilgisi verir.

sort : Dosyanın içeriğini sıralar.

sum : komutu checksum oluşturmaya yarar.

cksum : Daha güçlü bir checksum algoritması kullanarak checksum oluşturur. (CRC32)

cd ~ (kullanıcı adı) yazarak kullanıcının ev dizinine gitmek mümkündür.

cd - : Bir önceki dizine geri döner, üst klasöre değil.

ls file* ; ls file?* ; ls ????

ls file[azum07bc]*

ls file[a-k0-7]*

ls file[a-kzpn0-57]

İşletim sisteminin değişken değerlerini görmek için değişken başına $ konulması gereklidir.

echo $PATH

PATH'in aynı kalması için ; PATH=$PATH:/usr/sbin komut örneğindeki gibi bir ekleme yapılabilir. Değişkenlerin tüm shellere aktarılması için komutun arkasından export komutu da çalıştırılmalıdır.

Değişken atamak için set komutunu kullanıyoruz. İstenmeyen değişkenleri silmek için de unset komutu kullanılır.

Prompt değişkeni PS1' dir

ör : set PS1='$PWD>'

history komutu , kabuğa yazılan komut geçmişini listeler.

Komut geçmişi, ~/.bash_history dosyasına yazılır. Bellekte tutulan komut geçmişi ise ancak kullanıcı logout olurken bu dosyaya kayıt edilir. Dolayısıyla tam bir komut geçmişine ancak bir sonraki loginde ulaşmak mümkündür.

Listelenen geçmişten n nolu komutu çalıştırmak için !komutno yazılabilir.


Bash, Korn ve Bourne Shell için system wide Init dosyası /etc/profile' dir.

Tüm kabuklar için Primary User Init dosyası ~/.profile ve ~/.bashrc' dir.

I/O Redirection

UNIX makinaları başlatıldığında 3 dosya otomatik olarak yaratılır.

stdin stdout stderr

0 1 2

keyboard screen screen

> standart redirection (mevcut değerin yerine yazar)

>> append (mevcutun sonuna ekler)



CAL > file1 2>file2

büyük harfli stderr dosyaya yönlensin

komut yok


CAL 1>file1 2>file2

stdout stderr


banner : dikkat çekici mesaj için kullanılır.

tty (terminal type) : terminal no görmek için kullanılır.

banner ........ > /dev/pts/7


which : Bu komut bir komut ya da çalıştırılabilir dosyanın hangi path'de durduğunu söyler.

which /s : Sadece $PATH değişkeninde bulunan klasörlere bakar.

whereis : bu komut da aynı işlem için kullanılır.

who : Makinaya bağlı kullanıcı ve terminal oturumlarını listeler.


Dosya Yetkileri

-rw-r—r-- (en başta bulunan alan type belirtir.)

types :

d: directory

l: link

-: file

c, b: device

p: pipe


haklar :

r : Read (+copy)

w: Write (+delete)

x: Execute

scriptlere x (execute) hakkı verilmezse çalıştırılamaz.

Windows'tan farklı olarak grup yetkilerinin kişi yetkileriyle toplanarak toplamda bir yetki oluşturması modeli uygulanmamaktadır.

@page {size:8.5in 11in;margin:0.79in;} P {margin-bottom:0.08in;}

Ör : user : r-- group : -w- toplam yetki: rw- değildir.

chmod dosya ve klasörler üzerinde yetkileri değiştirmek için kullanılan komuttur.

rw-

(110) 2lik düzende = 6 10luk düzende

r-x

(101) 2lik düzende = 5 10luk düzende

7 = rwx

6 = rw-

5 = r-x

4 = r--

3 = -wx

2 = -w-

1= --x

chmod 777 “dosyaadı”

chmod 000 “dosyaadı” ile dosya üzerindeki tüm yetkiler kaldırılır.

Dosyanın yetkileri 000 ile kaldırılsa ile dosyanın sahibi olduğu için kişinin rm komutu ile dosyayı silme imkanı vardır.

chown dosya veya klasörün sahibini değiştirir.

Bir dosyanın sahibi, o dosyanın sahipliğini değiştiremez. Yalnızca root bu yetkiye sahiptir.

Bunun sebebi, yapılan bir işleme dait kanıtların silinmesinin engellenmesi ya da eylemin suçunun başkasına atılmasını (sahipliği başkasına atamak yoluyla) engellemek içindir.

Harfleri kullanarak yetki verme yazım kuralları :

u : user

o : other

g : group

a : all

ör :

chmod g+x dosyaadı

chmod g+w,o+x dosyaadı

chmod a-x dosyaadı

chmod a+x ve chmod +x aynı anlama gelir.

chmod -rwx

chmod -R ile dizin ve altındaki tüm dosyalara aynı yetkiyi tanımlamak mümkündür.

Bir klasöre kopyalanan dosyaların üst veya “parent “ dizinden kalıtım (inheritance) ile yetki alabilmesi durumu yoktur.

chown ve chgrp komutları için de -R parametresi kullanılabilir.

777

umask 022 - - - - w - - w -

755 r w x r – x r – x

7 5 5


umask xxx ile istenen maske verilebilir.

bir klasöre sadece r (444) yetkisi vermek klasörün içeriğini okumak için yeterli değildir. Bu yetki seti sadece basit olarak listelemeye yeterlidir.

Bir klasörün içini okumak ve incelemek için en az r_x (555) yetkisi gereklidir.

Klasör için chmod 555

komutu çalıştırıldığında -R parametresi olmadığından altındaki dosya ve izinler etkilenmez.

Access Control List

getfacl ( Get File Access Control List)

setfacl (Set File Access Control List)

getfacl -> ls -l

setfacl -> chmod

Dosyaya yeni ACE (Access Control Entry) eklendiğinde ls -l komutunun çıktısında ilave olarak (+) işareti görülür. Bu, dosyada ACE olduğun gösterir.

setfacl -m user:lab:r-- dosyaadı

ancak mask'in değiştirilmesi gereklidir.

setfacl -m mask:7 dosyaadı (mask değiştirir)

grep -i ( büyük küçük harf farkı gözetme)

grep -v (yazılı dizi dışında kalanları göster)

^ - satır başı

$ - satır sonu

'x..y' - x ile başlayan ve y ile biten arada iki karakter olan diziler

'[a-z]*' - küçük harf ile olan her şey

'[Rr]oot' - Root veya root

'[^a-m]attern' - a'dan m'ye kadar OLMAYAN harfler

find /usr -name ifconfig 2>file2

oluşan çıktıdaki hata mesajlarını dosyaya atar.

find /usr -name ifconfig 2>/dev/null

oluşan çıktıdaki hata mesajlarını UNIX'in karadeliği NULL'a atar.

find -name

-user

-perm 755

-mtime +365

-mtime -7

-size +10000

ps -ef (varolan tüm prosesleri listeler)

sleep x ( x sn boyunca bekler)

arkasına & (and) işareti konan komutlar arka planda çalışır.

Ör : xclock &

ptree : Process Tree'yi gösterir.

pgrep xclock : sadece xclock PID'lerini verir.

jobs : İş nolarını verir.

kill %3 : 3 nolu işi öldür.

pkill xclock : verilen isme uygun işleri bitirir.

alias : komutlara takma isimler vermke için kullanılır.

Ör : alias c=clear , alias ll='ls -a'

unalias : verilen aliasları silmek için kullanılır.