Çarşamba, Eylül 12, 2007
Group Policy / Account Lockout Problemlerini Çözmek
Perşembe, Ağustos 23, 2007
Perşembe, Ağustos 16, 2007
Solaris 10 ve Oracle Application Server kurulması
Son kurduğum gerçek ortam sunucusundan sonra bu sistemler kurduğum ilk sunucular oldu. Bir veritabanı sunucusu ve bir uygulama sunucusu. Doğrusunu söylemek gerekirse oldukça sancılı ve uzun süren bir çalışma oldu. Üzerinde forms ve web services çalışması gerekiyordu. Ayrıca webutil de cabası.
Öncelikle, veritabanı sunucusunu kurmak çok zor olmadı. İşletim sistemini temiz kurduktan sonra aşağıdaki belgede yazılı olanlara aynen uyunca bu kurulumu gayet rahat tamamladım.
Installing and Configuring Oracle Database 10g on the Solaris Platform by Roger Schrag
http://www.dbspecialists.com/presentations/oracle10gsolaris.html#prepare
Ancak, gerçekten dokümanı okumak ve adım adım dikkatle gitmek gerekiyor. Biraz yüzüm kızararak söylemeliyim ki sistemimi hala geleneksel rc scritpleri ile çalıştırıyorum. Başka bir dokümanda bunun nasıl SMF servislerine çevrileceği ayrıntılı olarak tarif ediliyordu ancak gerçekten de kendimi bu kadar ileri düzey bir kuruluma hazır hissetmediğim için diğer yöntemi seçtim. Keza, project oluşturma kısımlarını da atladığımı ve kernel ayarlarını yine "geleneksel" yolla yaptığımı da ekleyeyim.
Oracle servislerinin sistem açılışında otomatik olarak nasıl başlatılacağını bulmam ise tam bir kriz oldu. Herhangi bir eğitim almadan, körlemesine bu işe dalan biri için sonuçları yine de tatminkar buluyorum ama tam 10 gün boyunca konu aklımda yerine oturana dek kafamı kurcalayıp durdu. Bu konuya birazdan döneceğim.
OAS kurulumunu daha önce kurulmuş bir sunucu üzerine yaptım. Veritabanı da aynı şekilde başka bir arkadaşım tarafından kurulmuş ama başlangıç ayarları yapılmadan susturulmuştu. Önce, vakit kazanmak için bu kurulumlarla çalışmayı denedik. Ama bunca yıllık deneyimimi dinlemeyip "en güvenilir sunucu kendi kurduğundur" prensibini dikkate almayınca, o "güvendiğimiz" sunucular bize 3 gün kaybettirdi. Karşılığında ise yalnızca yorgunluk ve uykusuzluk kazandık.
Daha sonra her iki sunucuyu da formatlayıp kendim kurdum. Dediğim gibi, önce veritabanını hallettim ve çalıştırdım. Ardından da OAS kurulumuna geçtim. 10.0.2 olması isteniyordu. Bu sürümün kurulabilmesi için Oracle web sayfasından indirdiğimiz sürüm, önce Infrastructure server kurulmasını ardından da forms server kurulmasını şart koşuyordu. Önce, bunu gerçekten bir zorunluluk zannettik. Ancak bir hafta kadar sonra toz duman yatıştığında sayfaya tekrar baktığımızda içinde Inf.Server olmayan bir sürümün de indirilebildiğini gördük. Neyse, ne yapalım. Şu an hem Infrastructure serverımız hem de OAS + Forms serverımız var. :)
Bugüne kadar gördüğüm tüm Oracle kurulumlarında olduğu gibi root ile kurulumu reddediyor ve grafik arayüzden kurulum yapmak istiyor. Sistemi root olarak açıp, ardından su ile oracle'a geçip runInstaller'ı çalıştırmayı da kabul etmiyor. Her seferinde mutlaka oracle ile açıp kurmamız gerekti.
Yine Oracle eğitimlerini alan bir arkadaşımın yalancısı olarak, aynı makinada Inf.Server ve Application Server birlikte çalışacaksa her ikisini de ayrı birer kullanıcı ile kurmanın ve çalıştırmanın bir "best practice" olduğu söyleniyor. Biz de kurulumumuzu oracle1 ve oracle2 kullanıcıları ile yaptık.
/u01/oracle/OraHome_1 ve /u01/oracle/OraHome_2
oracle@oassaglik> emctl secure iasconsole
Oracle Enterprise Manager 10g Application Server Control Release 10.1.2.0.2
Copyright (c) 1996, 2005 Oracle Corporation. All rights reserved.
http://oassaglik:1156/emd/console/aboutApplication
Generating Standalone Console Root Key (this takes a minute)... Done.
Fetching Standalone Console Root Certificate... Done.
Generating Standalone Console Agent Key... Done.
Storing Standalone Console Agent Key... Done.
Generating Oracle Wallet for the Standalone Console Agent... Done.
Configuring Agent for HTTPS... Done.
EMD_URL set in /oracle/OraInf1/sysman/config/emd.properties
Generating Standalone Console Java Keystore... Done.
Configuring the website ... Done.
Updating targets.xml ... Done.
oracle@oassaglik> emctl status iasconsole
Oracle Enterprise Manager 10g Application Server Control Release 10.1.2.0.2
Copyright (c) 1996, 2005 Oracle Corporation. All rights reserved.
https://oassaglik:1156/emd/console/aboutApplication
Oracle Enterprise Manager 10g Application Server Control is not running.
------------------------------------------------------------------
Logs are generated in directory /oracle/OraInf1/sysman/log
oracle@oassaglik> emctl start iasconsole
Oracle Enterprise Manager 10g Application Server Control Release 10.1.2.0.2
Copyright (c) 1996, 2005 Oracle Corporation. All rights reserved.
https://oassaglik:1156/emd/console/aboutApplication
Starting Oracle Enterprise Manager 10g Application Server Control .............
yukarıda da görülebileceği gibi emctl komutuna aşina olduktan sonra konsolumuzu güvenli hale getirmek gibi fantazik davranışlara girdik ama yeterli bilgi sahibi olmadan fikir sahibi olduğumuz için bu tür işlemler bize hep zaman kaybı olarak geri döndü. :) Sonunda neyse ki "keep it simple stupid" i hatırlayıp daha basit bir kurulumda karar kıldık. :)
Bu arada yine konu hakkındaki cehaletime atıfta bulunup gördüklerimi aktarmakla yetineceğim. Belki ileride benzer sorunlarla karşılaşanlara faydalı olabilir.
Yazılım firması formlarını Windows ortamında hazırlayıp derliyordu. Haliyle bu formları olduğu gibi Solaris'e taşıyınca çalışmaz oldular. Ancak nedenini anlayamadılar bir türlü. Dolayısıyla formların en sonunda yeniden derlenmesi gerekti. frmcmp komutu ve aracıyla bunun yapılabildiğini ben ve kod geliştirenler hep birlikte aynı anda öğrendik :) :((((
frmcmp.sh'nin uzak terminal oturumundan çalıştırılabilmesi için
DISPLAY=:0.0
EXPORT DISPLAY
yazmak gerekiyor. Yoksa "permission denied" hata mesajları alıyor ve çalıştıramıyorsunuz.
Derlenmiş formlar yine Windows ortamında hazırlandığı ve büyük / küçük harf sorunu olmadığı için programcı arkadaşlarımız, formları Solaris ortamına da getirince sorunsuz çalışacağını sanıyorlardı. Kısa bir serzenişten sonra, bir klasör içindeki bir çok dosyanın adını topluca küçük harfe dönüştürmek için şöyle bir komut buldum ve çalıştırdım.
for FILE in * ; do mv $FILE `echo $FILE | tr '[A-Z]' '[a-z]'` ; done
Bu arada veritabanı sunucusunda kurulumda gözden kaçırdığım bir durum nedeniyle, /export/home klasörü kurulum sırasında farklı bir disk grubunun altına mount olmuştu. Ayrıca, bir kaç da kullanıcı için home folder oluşturmuştum. Ancak o diski başka bir işlemde kullanacağım için, /export/home' u / (root)'un bulunduğu diske almak zorundaydım. Kısaca yaptığım işlemin prosedürü şu ;
- /export/home/ altındaki tüm alt dizinleri ve dosyaları geçici bir dizine taşı
mv /export/home/* /yedek
- yeni /export/home ayarlarını yap ve mount et.
- tüm dosyaları yeni /export/home'a taşı.
- /export ve /export/home dizinlerine gerekli yetkileri ver.
chmod 755 /export /export/home
- tüm dosyaların yetkilerini düzenle.
Bu noktada su - oracle ile logon olmak istediğimde
"no su ! permission denied" mesajı vermeye başladı. Dolayısıyla logon olamıyordum.
chmod 755 .*
ile gizli dosyaların ( ör : .profile) yetkilerini de yeniden düzenleyince sorun giderildi ve su tekrar çalışmaya başladı.
Son olarak, tam 10 gün boyunca aklımı meşgul eden veritabanlarının açılışta otomatik olarak başlatılması konusunu nasıl çözdüğümü de eklemek istiyorum.
Gayet kısa olarak prosedür şu ;
- Yukarıda linkini verdiğim sayfadaki dbora scripti yazılır
- Script için S ve K scriptleri / hard linkleri oluşturulur
- ORACLE_HOME/dbstart ve dbshut scriptleri, her iki scriptin açılış kısmında açıklandığı şekilde düzenlenir.
- $ORATAB/oratab dosyası düzenlenir ve otomatik başlaması istenen veritabanları için N, Y olarak değiştirilir.
Tüm bu yazdıklarım benim için hiç kolay olmadı. Arada umutsuzluğa kapıldığım veya öfkelenip ağıza alınmayacak küfürler ettiğim anlar da oldu. Sonuç olarak geçen 10 güne baktığımda, aslında bilgili bir Oracle admini bulunsa çok daha kısa sürede bitirilecek ama bana lüzumsuz şekilde kalan bir işin içine girdiğimi ama yine de, zorlamayla da olsa bu işten olabildiğince deneyim ve bilgi ile çıktığımı görüyorum. Ancak, onca strese değip değmediği konusunda hala tereddütlerim de var.
Pazar, Temmuz 29, 2007
Solaris 10 Senaryo çalışması - 2
- Kullanıcılar gruplara dahil edilir.
- User01-user05 Muhasebe Dpt. Grubuna eklenir. Ikinci grubu GM’dir.
useradd –u 1000 –g muhasebe –G gm user01
- user06-user10 Denetim Dpt. Grubuna eklenir. Ikinci grubu GM’dir.
useradd –u 1006 –g denetim –G gm user06
- Şifre ataması yapılır
- User01-05 arası kullanıcılara root şifre ataması yapar. Değiştirmeleri gerekmez.
#passwd user01,
#passwd user02
- User06-10 arası kullanıcılar ilk kez logon olduklarında sistmein şifre sorması zorunludur.
#passwd –u user06
#passwd –u user07
- Tüm kullanıcılar 45 gün sonra şifrelerini zorunlu olarak değiştirecek şekilde ayarlanırlar.
Vi /etc/default/passwd
MAXWEEKS=6
- Geçici kullanıcılara hesap oluşturulur.
- Muhasebe için stajyer01 hesabı açılır. 15 gün süreyle çalışacak ve sonra disable olacak şekilde ayarlanır. Logon olduğunda MOTD görüntülenir.
Useradd –u 1100 –g muhasebe –c “stajyer01 muhasebe dpt” –s /bin/bash –d /export/home/stajyer01 –m stajyer01
Passwd –u stajyer01
Vi /etc/shadow
Stajyer01:efldsfoıhrefn:13712:::::12347777700: epoch time conversion
- Denetim için stajyer02 hesabı açılır. 30 gün süreyle çalışacak ve sonra disable olacak şekilde ayarlanır. Logon olduğunda MOTD görüntülenir
Useradd –u 1101 –g denetim –c “stajyer02 denetim dpt” –s /bin/bash –d /export/home/stajyer02 –m stajyer02
Passwd –u stajyer01
Vi /etc/shadow
Stajyer01:efldsfoıhrefn:13712:::::12347777700: epoch time conversion
- Ünvanı değişen kullanıcılarda değişiklik yapılır.
- User01 ve User06 Mudur olurlar. Tanımları değiştirilir. Üçüncü grupları Mudurler olur.
Usermod –c “mudur muhasebe” –G gm,mudurler user01
Usermod –c “mudur denetim” –G gm,mudurler user01
- Şirketten ayrılan kullanıcı hesapları silinir.
1. User 04 işten ayrılır. Hesabı silinir. Kişisel Klasörleri kaldırılır
Userdel –r user04
2. User 06 işten ayrılır. Hesabı silinir. Kişisel Klasörleri başkasına devredilir user10.
Userdel user06
Chown –R user10 /homedir/user06
3. User 09 1 ay süreyle izine çıkar. Hesabı disable edilir. Döndüğünde tekrar açılır.
Passwd –l user09
- Şifre politikası ve bağlantı şekilleri belirlenir.
- Hesap kilitleme. 3 kere şifresini yanlış giren kullanıcının hesabı 15 dk kilitli kalır.
Vi /etc/default/login
RETRIES=3
Vi /etc/security/policy.conf
LOCK_AFTER_RETRIES=YES
- Süresinin dolması. Her kullanıcı 45 günde bir zorunlu olarak şifre değiştirir.
vi /etc/default/passwd
MAXWEEKS=6
veya
Passwd –n 1 –x 45 user01
- Kilitlenen hesabın yeniden açılması.
- User06 şifresini yanlış girince hesabı kilitlenir. Root hesabı açar.
Passwd –f user06
Passwd –u user06
Passwd –f user01 (bunu tercih ederim, mevcut şifreyle gir ama değiştir)
- Kullanıcıya hesabını ilk kez kullanırken şifre girmeye zorlamak
Perşembe, Temmuz 19, 2007
Solaris 10 Senaryo çalışması - 1
- Standart bir solaris 10 sistemi kurulur.
- /yedek ve /yedek2 klasörü açılır. (İleride kullanıcıların erişim yetkilerini test etmek amacıyla kullanılacaktır.)
Mkdir /yedek
mkdir /yedek2
- X şirketindeki kullanıcılar için
- Dahil oldukları departmanları temsil eden gruplar oluşturulur.
- Muhasebe grubu oluşturulur. Açıklama yazılır.
/usr/sbin/groupadd –g 700 muhasebe
- Denetim grubu oluşturulur. Açıklama yazılır.
/usr/sbin/groupadd –g 701 denetim
- “genel mudurluk” grubu oluşturulur. Açıklama yazılır.
Genelmudurluk ismi çok uzun olmasına rağmen ve hata mesajıyla uyarmasına rağmen /etc/group dosyasına kayıt etti.
/usr/sbin/groupadd –g
- Mudurler grubu olusturulur.
/usr/sbin/groupadd –g 703 mudurler
- Tüm kullanıcılar için logon scriptler hazırlanır.
- User01-10 arası kullanıcı hesapları oluşturulacaktır.
- User01-User03 arasının shell csh’dir. Path’e ilave olarak /export/home/%HOMEDIR% eklenir. Prompt “Working Directory = pwd” dir.
useradd –u 1000 –g 700 –s /bin/csh user01
cd /etc/skel
touch .login
vi .login
set path=($path ~)
set prompt=’pwd’
- User 04-07 arasının shell bash’dir. Path’e ilave olarak /yedek eklenir. Prompt “Shell Name User State Pwd >” dir.
useradd –u 1000 –g 700 –s /bin/bash user04
cd /etc/skel
touch .profile
vi .profile
PS1=”\s@\h ‘pwd’ >”
PATH=$PATH:/yedek
- User 08-10 arasının shell sh’dir. Path’e ilave olarak /yedek2 eklenir. Prompt “Shell Name User State Pwd >” dir.
useradd –u 1000 –g 700 –s /bin/sh user08
cd /etc/skel
touch .profile
vi .profile
PS1=”\s@\h ‘pwd’ >”
PATH=$PATH:/yedek
- Çalışma ortamı oluşturulur.
- Tüm kullanıcılar için Message of the day hazırlanır.
vi /etc/motd
*************************************
Her gun spor yapın, kalbinizi koruyun
*****************************************
- user01-03 arası kullanıcılar logon olduklarında who komutu çalışır.
Echo who >>/etc/.login
- user 04 logon olduğunda prstat çalışır
echo prstat >>/export/home/user04/.login
echo prstat >>/export/home/user04/.profile
Solaris 10 Senaryo çalışması (Giriş)
Yukarıdaki düşünceden hareketle bugüne kadar öğrendiklerimi bir senaryo hazırlayarak orada kullanmak gibi bir fikir oluştu bende. Windows tabanlı sunucu yönetimi ve kullanıcı isteklerine dair deneyimlerimi kullanarak bir senaryo ve istekler belgesi hazırladım ve üzerinde çalışmaya başladım.
Kurduğum sistemin X şirketinde kullanıldığını, muhasebe ve denetim dptları için kullanıcı hesapları açtığımı varsaydım. Bu kullanıcılar farklı shell'ler kullanıyorlar ve açılış sırasında farklı değişkenlerle çalışıyorlar. Sanki bir windows sunucusunda logon script yazıyormuş gibi varsaydım bu işlemleri yaparken.
Bu kullanıcı hesaplarının yönetilmes gerekiyor. İşten ayrıldığı için hesabının kapatılması gerekenler, kişisel klasörleri işten ayrılınca başkasına devredilen kullanıcılar var. Müdürlüğe terfi ettiği için özlük bilgileri değişenler vs.
Sunucu üzerinde bir şifre politikası uygulanmaya başlanıyor ve hesap kilitleme devreye alınıyor.
Bu sunucu aynı zamanda bir dosya sunucusu ve yazdırma sunucusu olarak da kullanılıyor. Paylaştırılmış klasörlerle ilgili gerçek bir şirkette yaşanabilecek her türlü sevimsiz durumu bu senaryoda hatırlamaya çalıştım. Elbette yedeğinin alınması gerekiyor. Hatta arada sunucu çöküyor, kurtarılması için çaba harcanıyor. Zaman zaman bakım işlemleri yapılıyor, ek diskler takılıyor vs.vs.
Performans izleme , yama yükleme, kaldırma vb. durumları da ilave etmeye çalıştım.
Aşağıda ve bundan sonraki günlerde bir kaç bölüm halinde bu senaryo çalışmasının soruları-cevapları gibi değerlendirilebilecek bir yazı dizisi yayınlayacağım. İtiraf ediyorum ki bu çalışma sırasında "kuru kuru oku ve test et" ruh halinden kurtulup çok daha motive şekilde çalıştım. Normalde 12.00'de yatarken çalışma süresince 3-4'ten önce yatmadım :) Bir çok ek bilgi edindim ve inanıyorum ki çok miktarda ham veri artık aklımda pekişti. Bundan sonra da mutlaka benzer çalışmalar yapacağım.
Bu dizi bittikten sonra da ayrı bir belge halinde "senaryo çalışması sırasında öğrendiklerim" diye ayrı bir karalama notları belgesi de arkasından gelecek.
Toplamda tüm bu bilgilerin kişisel çalışmalarım sırasında okuma, araştırma, deneme, yanılma ve sonuçları yorumlama yöntemleri ile elde edildiği unutulmamalı. Her ne kadar elimden geldiğince en hatasız şekilde yazmaya çalıştıysam da henüz "Junior" bir Solaris Admin olduğum unutulmazsa ve tüm bu bilgiler sağlamlığına güvenilen kaynaklardan doğrulanarak kullanılırsa içim daha rahat edecektir. İleride kimsenin arkamdan küfür etmesini istemem elbette.
Perşembe, Temmuz 12, 2007
Solaris Disk Partioning
http://www.sun.com/blueprints/1002/817-0407-10.pdf
Çarşamba, Temmuz 11, 2007
Find komutu kullanım örnekleri
http://esofthub.blogspot.com/2007/07/using-common-unix-find-command_07.html
Find a file or directory
# find . -name TEMP -print
or
# find . -name TEMP -exec echo {} \;
Find core files in this directory tree and remove them
# find . -name "core" -exec rm -f {} \;
Find junk directories and remove their contents recursively
# find . -name "junk" -exec rm -rf {} \;
Find a pattern in a file using the recursive grep (ignore case)
# find . -type f | xargs grep -i MYPATTERN
Find files modified in the past 7 days
# find . -mtime -7 -type f
Find files owned by a particular user
# find . -user esofthub
Find all your writable directories and list them
# find . -perm -0777 -type d -ls
or
# find . -type d -perm 777 -print
Find all your writable files and list them
# find . -perm -0777 -type f -ls
or
#find . -type f -perm 777 -print
Find large file sizes and list them
# find . -type f -size +1000 -ls
or
# find . -type f -size +1000 -print
Find how many directories are in a path (counts current directory)
# find . -type d -exec basename {} \; | wc -l
53
Find how many files are in a path
# find . -type f -exec basename {} \; | wc -l
120
Find all my pipe files and change their permissions to all writable
# find . -name "pipe*" -exec chmod 666 {} \;
Find files that were modified 7 days ago and archive
# find . -type f -mtime 7 | xargs tar -cvf `date '+%d%m%Y'_archive.tar`
Find files that were modified more than 7 days ago and archive
# find . -type f -mtime +7 | xargs tar -cvf `date '+%d%m%Y'_archive.tar`
Find files that were modified less than 7 days ago and archive
# find . -type f -mtime -7 | xargs tar -cvf `date '+%d%m%Y'_archive.tar`
Find files that were modified more than 7 days ago but less than 14 days ago and archive
# find . -type f -mtime +7 -mtime -14 | xargs tar -cvf `date '+%d%m%Y'_archive.tar`
Find files in two different directories having the "test" string and list them
# find esofthub esoft -name "*test*" -type f -ls
Find files in two different directories having the "test" string and list them
# find esofthub esoft -name "*test*" -type f -ls
Find files in two different directories having the "test" string and count them
# find esofthub esoft -name "*test*" -type f -ls | wc -l
12
Find files and directories newer than CompareFile
# find . -newer CompareFile -print
Find files and directories older than CompareFile
# find . ! -newer CompareFile -print
Find files and directories but don't traverse a particular directory
# find . -name RAID -prune -o -print
Find all the files in the current directory
# find * -type f -print -o -type d -prune
Find an inode and remove
# find . -inum 968746 -exec rm -i {} \;
Perşembe, Haziran 28, 2007
Kullanıcıları ve Masaüstünü Kontrol Altına Almak -4
First Kiss ! İlk Deneyim ! (Solaris 10)
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.
Pazartesi, Haziran 18, 2007
Perşembe, Haziran 14, 2007
Çarşamba, Haziran 13, 2007
Salı, Haziran 12, 2007
Çarşamba, Haziran 06, 2007
Solaris hk.
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.
Salı, Haziran 05, 2007
SA-100 Fundementals of Solaris Ders Notlari
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
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
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
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.