22.04.2009

too many open files


Linux'te tanımlı olan maksimum açılabilir dosya sayısı limiti aşıldıgında,
oluşan "too many open files" hatasının çözümü oldukça basit;

oncelikle open files limitimizin ne olduguna bakıyoruz

ulimit -n
1024

bu degeri "4096" 'ya çıkarmak için;

/etc/security/limits.conf dosyasının içine

#for too many open files
* soft nofile 4096
* hard nofile 4096


/etc/sysctl.conf dosyasının içine

#for too many open files
fs.file-max=4096

sistemi restart etmeden degişikliklerin aktif olması için

sysctl -p

komutu çalıştırılır...

21.04.2009

Konsol'da Proxy

Linux , Unix sistemlerde konsolda proxy kullanmamiz gereken yerlerde (buyuk sirket aglarinda komut satirindan w3m , lynx, wget kullanacagimiz zamanlarda) yapmamiz gereken sey
$ vi ~/.bashrc
Bu dosyanin sonuna asagidaki girdileri eklemektir:



export http_proxy={kullanici_adi}:{sifre}@{proxy}:{port}
export https_proxy={kullanici_adi}:{sifre}@{proxy}:{port}
export ftp_proxy={kullanici_adi}:{sifre}@{proxy}:{port}

Yalniz unutmamak gereken bir nokta : sifreyi plain text olarak yazmali ve icinde @ bulundurmamaliyiz, zira @ konsol proxy de ayrac olarak kullaniliyor.

20.04.2009

SUN Satildi

Yakin zamanda IBM,SUN Microsystems'i satin alacak sekilinde haberler piyasalarda dolasmaya baslamisti ve bu haber -en azindan bende- rahatsizlik yaratmisti. Ancak SUN Microsystems'in sitesinde de anons gectigi son ve en gercek habere gore ORACLE SUN'i aldi.
Bu aslina cok sevindirici benim adima.Daha once Linux uzerinde kosturdugumuz OracleVeritabanlarinin performanslarinin Sun Solaris uzerinde,Windows ile Linux arasindaki Performans farki kadar farkli oldugunu duymus ancak tecrube edememistik. Umarim bundan sonra hersey degisir ve artik hem Oracle Sun sistemlere yatkinligini arttirir hem de Oracle kullanacak kisiler SUN sistemlere daha sicak bakarlar.

Ben kendi adima cok sevindim


Kaynak : http://www.sun.com/aboutsun/media/presskits/2009-0420/index.jsp


gcc ile c++ derlemek

Haftasonu lisans ogrencisi bir arkadasimin odevine yardim ettim.
C++ bir program yazilmasi gerekyordu, buyuk olcude yazip lden gecirdim, ilginc olan tarafi uzun suredir gcc ile program derlememisim.
Yazdigim c++ kodunu nasil derleyecegimi aramak zorunda kaldim.
En sonunda buldum :
g++ -Wall svural.cc -o svural

:)

17.04.2009

find ile bos klasorleri bulma

Linux / Unix sistemler uzerinde find ile bos klasorleri bulmaya su ana kadar ihtiyacim olmadi hic.
Ama find'in parametreleri arasinda bos klasorleri bulabilecegimiz bir parametresi de varmis.

find {arama_yapilacak_yer} -type d ile klasorlistesini alirken, bir de -empty ekliyoruz.

find {arama_yapilacak_yer} -type d -empty

Kaynak : http://www.void.gr/kargig/blog/2009/04/16/delete-all-empty-directories-using-xarg/

cron Yonetimi

Gecen haftalarda RSS Feedleri gezerken, cron ile ilgili bir makale okumustum.
Cron islerini yonetirken bunu su ana kadar belli cercevelerde yapiyordum :

$crontab -e // ile cron editorune giriyor ve isleri burda
dakika saat gun ay haftagunu komut
ya da
# vi /etc/crontab // ile cronjoblari yonetiyordum.

Ancak ozellikle gunluk, haftalik vs yonetimler iicn cron'un da kisa yollari oldugunu ogrendim.

Su sekilde :

string meaning
------ -------
@reboot Run once, at startup.
@yearly Run once a year, "0 0 1 1 *".
@annually (same as @yearly)
@monthly Run once a month, "0 0 1 * *".
@weekly Run once a week, "0 0 * * 0".
@daily Run once a day, "0 0 * * *".
@midnight (same as @daily)
@hourly Run once an hour, "0 * * * *".


Kaynak :http://www.howtoforge.com/a-short-introduction-to-cron-jobs

14.04.2009

MailScanner


Eskiden kurdugum bir mail sunucu uzerindeki mail servisinin mail yollamadigini farkettim ve MailScanner servisini baslattigimda sorunun MailScannerdan /usr/lib/MailScanner/MailScanner/Message.pm kaynaklandigini gordum. Aldigim hata : "/usr/lib/MailScanner/MailScanner/Message.pm" seklindeydi.
MailScanner versiyonum eskimisti:


  1. # perl -MCPAN -eshell
  2. cpan > install Bundle::CPAN
  3. cpan > reload cpan
  4. cpan > exit
  5. # perl -MCPAN -eshell
  6. cpan > upgrade
  7. wget {en_yeni_MailScanner_Versiyonu_OS_im_ile_uyumlu.rpm.tar.gz}
  8. tar -xvzf {en_yeni_MailScanner_Versiyonu_OS_im_ile_uyumlu.rpm.tar.gz}
  9. cd {en_yeni_MailScanner_Versiyonu_OS_im_ile_uyumlu}
  10. ./install.sh
  11. /etc/init.d/MailScanner restart
  12. //Burada bir klasor hatasi aldim
  13. vi /etc/MailScanner/MailScanner.conf // Bu dosyada Lock stringini aratip /tmp yerine adam akilli bir Lock yeri yaziyoruz. (Yer zaten oneriliyor bize)
  14. /etc/init.d/MailScanner restart
  15. mailq |wc -l
  16. Queue gittikce ufaliyor. Sorun cozuldu :)

MySQL ile Yedekten donme


Yakin zamanda mysql'de procedure ve function'larin yedeklemesi hakkinda ufak bir yazi yazmistim.Bugun bloglari gezerken bir makalede bilmedigim bir yolu okudum. Dogrusu makaleyi yazan eleman MySQL administration islerini hala PHPMyAdmin ile yapacak kadar acemi ama yine de gordugum ufacik bilgiyi paylasayim istedim.

Oncelikle mysql'den yedegi
mysqldump -u{db_user_name} -p{db_user_password} {db_adi} > {yedek_dosyasi.sql} seklinde alinacagini ve
mysql -u{db_user_name} -p{db_user_password} {db_adi} < {yedek_dosyasi.sql} ile restore edilecegini biliyoruz. Ancak eleman soyle yapmis:
  1. mysql -u{db_user_name} -p{db_user_password} // ile mysql'e baglanmis
  2. use {db_adi}; // ile veritabanini
  3. source {yedek_dosyasi_pathi} // ile db yi restore etmis
Dogrusu, ben mysql komut satirindan sql dosyalarini bu sekilde cagirabilecegimi bilmiyordum.


Kaynak : http://ditio.net/2008/12/07/big-mysql-dump-import/

8.04.2009

SLES ile Squid ile Transparent Proxy

Gecen sene Senol'la birlikte bir calismamiz olmustu.

Yapmamiz gereken sey suydu: Sirket icinde kullanilan Proxy'i kullanamadan cikan farkli Gatewayli makinalar icin transparan bir Proxy sunucusu kurmak ve bu kisilerin o Proxy Sunucusu uzerinden internete erismelerini saglamak, dolayisiyla internet erisimlerini loglamak.

En basta soylemem lazim : Transparent Proxy islemi HTTPS baglantilar icin calismamakta

Simdi Senol'un blog'unda yer verdigi seklinden biraz alintilar yaparak kendi eklemelerimle yontemi anlatacagim.

Biz bu calismayi yaparken SLES 11 daha yoktu dolayisiyla calismayi SuSE 10.2 x86_64 ile yaptik.

Oncelikle calisma icin kullanacagimiz paketler :

iptables

ebtables

squid

bridge-utils

Ancak bridge-utils paketi SLES Medyalarindan gelmiyor. Dolayisiyla bridge-utils paketini OpenSUSE Repository den indiriyoruz.Cift arayuzlu sunucumuzu bridge olarak kullanarak ebtables ile gelen paketi Layer 2 den Layer 3 e cikarip ,HTTP trafigini sonra da iptables ile Squid'e yonlendirecegiz. Squid ile de loglayip isimizi bitirecegiz.


bridge mode


// BRIDGE Bolumu
ifconfig eth0 0.0.0.0 up
ifconfig eth1 0.0.0.0 up

brctl addbr br0
brctl addif br0 eth0
brctl addif br0 eth1

// BRIDGE Bolumu

Burada iki interfacei bridge yapiyoruz.Sonra da bridge arayuzune IP veriyoruz.


ifconfig br0 192.168.1.1 netmask 255.255.255.0 up

Sonra da HTTP trafiklerini Layer 3 e tasiyoruz

ebtables -t broute -A BROUTING -p IPv4 --ip-protocol 6 --ip-destination-port 80
-j redirect --redirect-target ACCEPT

Son olarak da Layer 3 e tasidigimiz 80. port trafigini proxy ye yoneldeniriyoruz.

iptables -t nat -A PREROUTING -i br0 -p tcp --dport 80 -j REDIRECT --to-port 3128

Gelen trafigi loglayacak Squid konfigurasyonlari asagida verilmis.


Bu kadar :)


Squid 3 versiyonu için /etc/squid.conf dosyası aşağıdaki gibi düzenlenebilir:

http_port 3128 transparent
hierarchy_stoplist cgi-bin ?
acl QUERY urlpath_regex cgi-bin \?
cache deny QUERY
acl apache rep_header Server ^Apache
access_log /var/log/squid/access.log squid
hosts_file /etc/hosts
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern . 0 20% 4320

  1. acl all src 0.0.0.0/0.0.0.0



acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl to_localhost dst 127.0.0.0/8
acl SSL_ports port 443 563 # https, snews
acl SSL_ports port 873 # rsync
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 563 # https, snews
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl Safe_ports port 631 # cups
acl Safe_ports port 873 # rsync
acl Safe_ports port 901 # SWAT
acl purge method PURGE
acl CONNECT method CONNECT
http_access allow manager localhost
http_access deny manager
http_access allow purge localhost
http_access deny purge
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost
acl lan src 192.168.1.0/24
http_access allow localhost
http_access allow lan

  1. http_access allow all



http_reply_access allow all
icp_access allow all
visible_hostname suseproxy.domainadi.com
always_direct allow all
coredump_dir /var/spool/squid

Kismen Alinti : http://senoldemirkol.wordpress.com/2008/11/17/squidi-transparent-bridge-olarak-calistirmak/

PAM ile kullanici sifre force islemleri

Uzun zamandir PAM ile ilgili onume ne gelirse okumaya calisiyorum, ancak dun tuxtraining da karsilastigim PAM dokumani kadar hosuma giden ve bu konuyu iyi anlatmis bir dokumana rastlamadim.
Kisa bir bolumunu alinti yapacagim makaleyi siddetle okumanizi oneririm.

Enforce strong passwords

In this experiment we’ll use the pam_passwdqc module on the password stack to ensure that users choose strong passwords. (Note that this will only make any difference when users set or change their passwords; it won’t winkle out weak passwords that are already set.)

What you need to do: Red Hat already uses the pam_cracklib module to check password strength in the common system-auth file. We simply need to replace the pam_cracklib line with a line that looks something like this:

password    requisite    pam_passwdqc.so  min=12,10,10,8,6 retry=3

lxf99tut_pamfig3

Figure 3 above attempts to illustrate the parameters to pam_passwdqc. The test of a password’s strength is based on its length, but you can set different minimum lengths depending on the number of character classes in your password. There are four character classes: lower case, upper case, digits, and other characters. Upper case letters used as the first character and digits used as the last character of a password don’t count.

How to test it: Try changing your password to various strings; in each case count the number of characters and the number of character classes in the string and predict if it should be an acceptable password. There are a few examples in the table below


Kaynak: http://tuxtraining.com/2009/04/07/how-pam-works

1.04.2009

Metasploit Kapatildi

Ne yazikki beklenen oldu ...
ve www.Metasploit.com kapatildi.

(1 Nisan nedeniyle yapmis vicdansizlar :) cok guldum. Ama salakligim da gorunsun istedim....)

SMT nin kullanisli komutlari ve islevleri


KOMUT

İŞLEV

smt-list-products

SMT servisinin desteklediği Ürün listesini gösterir

smt-catalogs

Kataloglanabilecek ya da kataloglanmış ürünlerin tümünü gösterir

smt-catalogs -o

Sadece kataloglanmış ürünlerin tümünü gösterir

smt-catalogs –e

Güncelleme izlenecek yeni ürün girilmesini sağlar. Katalog numarası ile ilgili katalog, a ile tüm ürünler yansılanır

smt-catalogs –d

Güncellemesi artık izlenmeyecek ürünlerin listeden çıkarılmasını sağlar. Katalog numarası ile ilgili kataloğun, a ile tüm ürünlerin yansılanmasından vazgeçilir

smt-list-registrations

SMT sistemine tanıtılmış masaüstü ya da sunucu sistemlerin hepsini listeler.

smt-delete-registration

SMT sistemine tanıtılmış masaüstü ya da sunucu sistemlerin silinmesini sağlar. Kullanımı

smt-delete-registration {Unique ID} şeklindedir.

smt-report

SMT sistemine bağlanan sunucu ve masaüstlerinin lisans sürelerini, kullanım süresi dolmuş lisansları listeler

smt-mirror –d

SMT sistemine kaydedilmiş tüm katalog güncellemelerinin indirilmesini sağlar


Daha fazla bilgi icin:

http://www.novell.com

http://www.novell.com/communities/node/6288/sneakernetting-sles10-sp2-updates-using-subscription-management-tool-smt

http://www.novell.com/communities/node/5922/keep-your-linux-desktops-and-servers-updated-subscription-management-tool-suse-linux-enter



SLED 11 uzerinde Winbind ile AD


Calistigim sirket icin Linux masaustu sistemleri AD uzerinden kimlik dogrulamasi yapacak sekilde konfigure etmistim. Ancak SLED 10.1 - 10.2 surumlerinde su sekilde bir sorunla karsilasmistim;
Makinayi reboot ettikten sonra, kullanici adi ve sifre giris ekraninda domain'i goremiyorduk. Bunun uzerine Winbind ve Samba servislerini yeniden baslatan scriptler duzenleyerek sorunu cozmeye calismistim, cunku Novell'den Alper de bu konuda yorum yapamamisti.

Ancak gectigimiz hafta SLES/SLED 11 kullanmaya basladim ve bircok yeni ozellik ve hata giderilmesinin yaninda bu sorunun da cozuldugunu gordum.
Su anda sistem "tipki bir Windows makina gibi" AD yi yabancilamadan Domain Membership gorevini ustleniyor ve $ id kullanici adi ciktisi ise gercekten AD kullanicisinin primary ve yan gruplari seklinde gorunuyor.



Redhat ile Hot-Plug CPU

RedHat'in sertifika sinavina hazirlandigimdan newsletterlarina da uye oldum bir suredir.
Cok guzel icerikler ve Tipler yollayabiliyorlar.
Ornegin bugun cok begendigim bir trick yollamislar. Paylasiyorum:


Problem

You want to dynamically enable or disable a CPU on a running system.

 

Solution

Red Hat Enterprise Linux 5 supports the cpu-hotplug mechanism, which allows for CPUs to be dynamically disabled and re-enabled on a system without requiring a system reboot.

 

In order to disable a CPU core in a running machine, use the file /sys/devices/system/cpu/cpuX/online.

 

The following command will disable a CPU:

 

# echo 0 > /sys/devices/system/cpu/cpuX/online

 

Where X is the ID of the CPU as determined from /proc/cpuinfo.

 

To re-enable the CPU, run:

 

# echo 1 > /sys/devices/system/cpu/cpuX/online

 

Example:

The following output from /proc/cpuinfo shows two processors on a system:

 

 root@xen # grep "processor" /proc/cpuinfo
processor : 0
processor : 1

 

In order to disable CPU 1, echo "0" to /sys/devices/system/cpu/cpu1/online:

 

root@xen# echo 0 > /sys/devices/system/cpu/cpu1/online 
cpu0/ cpu1/

 

Check /proc/cpuinfo to see if the cpu is disabled .

 

root@xen # grep "processor" /proc/cpuinfo



processor : 0

 

Notice that there is now only one processor shown (CPU 0) instead of two.

 

 

Note: There are some architectures in which a CPU cannot be disabled due to a dependency on a certain CPU. In such cases you will notice that the /sys/devices/system/cpu/cpuN/online file is missing.

 

For further details on CPU hotplugging, see this file:

/usr/share/doc/kernel-doc-2.6.18/Documentation/cpu-hotplug.txt

 

The documentation files are in the kernel-doc package, which can be installed from RHN.

Alinti: http://kbase.redhat.com/faq/docs/DOC-15523?sc_cid=70160000000HlgQAAS