Quantcast
Channel: Linux Unix
Viewing all 96 articles
Browse latest View live

Oracle Linux 6 VNC Üzerinden Kurulumu

$
0
0

Merhabalar Oracle Linux 6 kurulumunu VNC viewer la yapalım. VNC viewer la kurulumun bize faydaları konusuna gelecek olursak. Malum sistem odaları soğuk olmak zorunda. Ortalama bir kurulumun 20 dakka süreceğini farz edersek bir problem çıkmaz ise tabi sistem odasında kalıp üşümemek elde değil.

VNC viewer la kurulum bu noktada çok işimize yaracaktır. Sistem odasında 2-3 dakika kalmak yeterli olacaktır. Daha sonrasında geri kalan kurulumu kendi bilgisayarınızdan devam edebilirsiniz.

Oracle  Linux  edelivery.oracle.com dan indirebilirsiniz.

VNC viewer ı  buradan indirebilirsiniz. Vnc ‘nin viewer ını indirmeniz yeterli. Kayıt olduktan sonra ücretsiz indirebilirsiniz.

İndirdiğiniz iso yu dvd ye yazdırarak kullanabilirsiniz. Bilgisayarımızı dvd ilen boot ederek açalım.

 

image001

Yukardaki ekran geldikden sonra  iki kere klavyenizdeki ” ESC ” tuşuna basınız. Aşağıdaki ekran gelmesi lazım.

 

image002

direk olarak yazınız. linux vnc ip= ”  ”   netmask=” ”  gateway=” “

örnek /    linux vnc ip= 192.168.1.50  netmask=255.255.255.0  gateway=192.168.1.1  yazıp enter a basınız.

 

image003

Yaptığımız ip tanımlaması network kartımıza tanımlanıyor.

 

image004

Medya test işlemi yapmayın gerçek ten uzun sürüyo sıkıcı olabilir. Skip diyip atlayınız bu ekranı.

 

image005

Buraya kadar  işlemler sunucu odasından hallettik. Geri kalanı için makinamızın başına geçebiliriz.

VNC client to 192.168.1.50:1  to begin the install bu kısım önemli çünkü burada bağlanacağımız ip adresimiz ve port bilgisi gözükmektedir.

 

image006

VNC viewerimizi çalıştırıp server kısmına ip adresi ve portu girerek ok diyelim.

 

image007

Artık kuruluma başlayabiliriz.

 

image008

VNC viewer la Oracle linux 6 kurulumumuza sunucu odasından değilde kendi bilgisayarımızdan devam edebiliriz artık. 


Neden Linux? Hangi Linux? Linux Kurulumu

$
0
0

Günümüzde kritik görev içerikli uygulamaların üstünde çalışacağı işletim sistemi olarak ilk tercihlerde Linux sistemler gelmekte. Kritik görevlerden örnek vermek gerekirse; temel bankacılık uygulamaları, sabit ve mobil Telekom hizmet sağlayıcılarının network alt yapısını yöneten sistemler ve faturalandırma servisleri, voip servislerini yöneten uygulamalar, kurumsal kaynak planlama yazılımları, malzeme ihtiyaç yazılımları gibi. Kolay kurulum, bakım, sürüm yükseltme, çeşitli ve güçlü veritabanı ve uygulama desteği gün geçtikçe son kullanıcıların ve sistem yöneticilerinin kâbusu olmaktan çıkıp Windows işletim sistemlerinde elde edilen next-next anlayışına/kolaylığına yaklaştı. Peki, Hangi Linux dersek;
Ünlü araştırma ve danışmanlık şirketi Gartner’ın yaptığı araştırmaya göre Kurumsal Linux(lisanslı ve destek verilen Linux’lar) dünyasında Redhat firması liderliğini koruyor ve %58’lik bir payla bu alandaki Kurumsal Linux dağıtımlarının çoğunu elinde bulunduruyor. Toplam işletim sistemi gelir payında ise %2’lik bir orana sahip.

 

 

image001

 


Tablo-1 (http://www.world.xorte.com/0,6,Gartner-Says-Worldwide-Operating-System-Software-Market-Grew-to-30-4-Billion-in-2010,13609.html



Linux öğrenirken Kurumsal Linux deyince ilk akla gelen ve günden güne ününü artıran bir Linux olan hatta Linux dünyasının Microsoft’u ünvanını elinde bulunduran Redhat Enterprise Linux(RHEL) tercihimiz olacak. Ama arkadaşların RHEL lisanslı sürümlerine ulaşması zor olacağı için RHEL ailesinin birebir kopyası (opensource,free) CentOS’la (www.centos.org ) yolumuza devam edeceğiz. RHEL en son 6.1 sürümünü çıkartmış olmasına rağmen CentOS en son 5.6’da kalmış gözüküyor ama 6.1 sürümü çok yakında çıkacak diye bildirildi. Bu tablodaki oranlarda Microsoft’un Pazar payı niye bu kadar yüksek, ufak gözüken Unix&Linux dünyasında nasıl ekmek yiyeceğiz derseniz, o ayrı bir tartışma/makale konusu. Şimdi CentOS işletimi sisteminin kurulum dosyalarını indirerek  makalemize devam edelim.

Bu linkten


http://mirror.centos.org/centos/5/isos/

Size uyan (ben bu linkteki DVD kalıbını indirdim -> http://mirror.its.dal.ca/centos/5.6/isos/i386/CentOS-5.6-i386-bin-DVD.iso) iso kalıbını indirirken
Neden CentOS’u seçtim/k  diyorsanız şu üç linke göz gezdirin ve herkesin kendine göre bir açıklaması olduğunu göreceksiniz. Bizim tercih sebeplerimiz RHEL ailesine yakin olması, insanların paralı olmayan ama güçlü Linux sistem istemeleri, ikinci bağlantıda okuyacağınız gibi web server’larda giderek tercih edilmesi.


http://www.serverschool.com/operating-systems/centos/

http://w3techs.com/blog/entry/highlights_of_web_technology_surveys_july_2010
http://serverfault.com/questions/53954/centos-vs-ubuntu

 

Bu arada, veri merkezinize (Data Center) bir işletim sistemini kurmadan önce planlamanız gereken birkaç adım yer almakta. İşletim sistemini kurup, gerekli yamaları geçtikten sonra ayağı kaldırıp kullanıcıları, varsa programları ve veritabanlarını oluşturmadan önce düşünülmesi gereken adımlar bunlar.

 

·         Hangi Donanım üzerine kurulacak, donanım 32bit/64bit mi olacak? Fiziksel mi, Sanal bir sistem mi olacak? Fiziksek ise ayrı bir satın alma yapılacak mı? Sanal ise hangi sistem havuzuna konulacak? Kurulacak İşletim sistemi kaç bit olacak? Hangi sürüm seviyesinde ve yamalara sahip olacak?

·         Memory ve Cpu özellikleri ne olacak?

·         Network ve fiber kartı kaçar tane ve hangi özelliklerde ve hızda olacak? Network kablosu hangi switch’e bağlanacak, IP’ler ve VLAN’lar neler? Lokal diskleri ne kadar olacak, SAN’den disk alacaksa hangi zone’dan alacak?

·         Uygulamayı ve veritabanını kim kuracak? Dış kaynak kullanımı ile bir şirket mi aracılık edecek? Şirket gelecekse işletim sistemi için başka hangi özel paketler isteyecek? Uygulama veya veritabanı için iyileştirme/ayar(tuning) yapmak gerekecekse hangi ayar dosyaları değiştirilecek?

·         Servis bakım anlaşması 7/24 mü,7/8 mi,5/8 mi olacak, sistem izleme araçları kurulup operasyon ekibine(monitoring) bildirilecek mi?

 

Bu temel adımlar gözünüzü korkutmasın çünkü bu planlamayı yapmaz,“ben kurdum, oldu bitti” anlayışından çok uzak olmazsınız veri merkeziniz ilerleyen yıllarda hangi sistemin ne için kullanıldığını veya kimin kullandığını bilemediğiniz bir çöplük haline dönüşür ve sistemleri takip edemezsiniz, dolayısıyla takip edemediğiniz, ölçemediğiniz bir şeyi yönetemezsiniz.

 

Masaüstü Sanallaştırma uygulaması olarak yaygın olduğu için VMware® Workstation(7.1.3 build-324285) seçtim. İsteyen Oracle VirtualBox'la kurulum yapabilir.

 

Kurulum metodu olarak birden fazla yol var, bu bağlantıdan

 

(http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/5/html-single/Installation_Guide/index.html ) kurulumların NFS,FTP,HTTP,Harddrive,CD/DVD. gibi seçeneklerle olabileceğini görebilirsiniz fakat eğitim metodolojisi olarak bu konuları anlatmadan, bu kurulum yöntemlerini anlatmak anlamsız geldiği için şimdilik böyle bir kurulum metodu izliyoruz.

 

Vmware Workstation’a Centos 5.6 Linux Kurulumu

 

İndirmiş olduğumuz iso dosyasını CD/DVD’ ye yazdırabileceğiniz gibi direk olarak da kullanabilirsiniz.

Workstation ekranında File -> New -> Virtual Machine adımından gelecek olan sihirbazda Typical seçeneği ile

 

 

image002

 

 

Iso dosyasının bulunduğu yeri seçip Next’le devam ediyoruz. Eğer iso kalıp dosyasını Nero gibi bir programla CD/DVD’ ye yazdırmış iseniz CD/DVD sürücüsünü(Installer Disc) seçip Next’le devam edebilirsiniz.

 

 

image003

 

 

Full Name; Proje ismi veya hangi amaçla kullanılacağına dair bir açıklama girdik.

 

User Name; İşletim sistemi kurulurken Vmware belirttiğimiz kullanıcının  ve root(super kullanıcı)’un
şifresini verdiğimiz şifre yapacak.

 

Eğer sistemde otomatik kurulum yapılacaksa bu kullanıcı bilgileri geçerli olacak fakat biz otomatik kurulum yapmayacağımız için ileride işletim sistemi kurulurken tekrar kullanıcı belirteceğiz.

 

 

image004

 

 

Sanal makinemize bir isim vereceğiz (Virtual Machine Name) ve CentOS işletim sisteminin dosyalarının nereye kaydedileceğini seçeceğiz. Farklı bir yer seçmek istemezseniz standart olarak My Documents -> My Virtual Machines altında kurulum dosyalarını görebilirsiniz. Biz farklı bir yere kaydettik, Next’le devam ediyoruz.

 

 

image005

 

 

Dosya boyutu olarak bize sadece işletim sistemini kuracak kadar yer gerekli 3-4GB yeterli bir alan aslında ama biz 8GB olarak belirttik. Eğer bir uygulama ve veritabanı kuracak iseniz daha fazla yere ihtiyacınız olacak, planlamanızı ona göre yapın. Bu alana İşletim sistemi kurulduktan sonra başka bir diskte uygulama veya veritabanı için ekleyebilirsiniz. Biz bu haliyle Next’le devam ediyoruz.

 

 

image006

 

 

Eğer bu haliyle bırakırsanız VMware autoinst aracı ile sistemi kendisi otomatik kuracaktır fakat biz bazı donanımları değiştirmek istiyoruz ve otomatik kurulum yapmak istemiyoruz. Onun için Customize Hardware’le devam ediyoruz.

 

 

image007

 

 

Memory’yi 512MB’a indirdik, Network’ü bridge mod’a getirdik, Floppy ve Printer’ı remove ettik. Power on this virtual machine after creation  seçilmemiş halde bıraktık ve Finish dedik.

 

 

image008

 

 

Vmware Workstation ana ekranında en son hali şu şekilde olacak. Burada “Power On this virtual Machine” derseniz bahsetmiş olduğumuz autoinst direk sistemi kuracak fakat biz bunu istemiyoruz demiştik. Ama uğraşmak istemeyenler olursa bu haliyle autoinst.iso’yu kaldırmadan “Power on” diyerek kurulum yapabilirler.Ben uğraşırım diyenler için ise tekrar “Edit virtual machine settings” diyerek “CD/DVD(IDE) Using file autoinst.iso” donanımını kaldıracağız.

 

 

image009

 

 

Autoinst. iso’yu CD/DVD sürücülerden kaldırdıktan sonra “Power On” dedik ve iso kalıbından boot etti, Enter’a bastık

 

 image010

 

 

image011

 

 

bize içeriğin doğru olup olmadığını kontrol etmemizi isteyip istemediğimizi soruyor, biz sağ yön klavye tuşuyla “Skip/Atla” diyerek devam ediyoruz.

Memory’e gerekli dosyaları yükledikten sonra grafiksel kurulum ekranı gelecek, bu ekranda Next’le devam.

 

 

image012

 

 

 

Dil paketlerinden istediğimiz dili seçiyoruz. Biz ingilizceyi seçip Next’le devam ettik.

 

 

image013

 

 

Klavyeyi Türkçe seçip Next’le devam ettik.

 

 

image014

 

 

 

Bize işletim sistemini kuracağımız alanı tamamen sileceğini belirten bir uyarı gelecek. Biz Vmware workstation’da kurulum yapacağımız için gönül rahatlığıyla “Yes” deyip Next’le devam edeceğiz. Fakat bunu tek sunucu üstüne kurarken veya kendi pc’nize dual boot olarak kuracaksanız farklı ayarlar yapmanız gerekir, unutmayın!

 

 

image015

 

 

 

image016

 

 

Burada disk alanını nasıl ayarlayalım diye soruyor,bizRemove all partitions on selected drives and create default layout” seçili halde Next’le devam edeceğiz. Bu haldeyken verdiğimiz disk üstündeki bütün bölümlendirmeleri silecek , sildikten sonra ext3 dosya sistemiyle formatlayarak diski mantıksal olarak ikiye bölecek,ilk parçaya sistemin boot edebilmesi için gerekli olan /boot’u ekleyecek, diğer parçaya Logical Volume Management (LVM) oluşturup(sonraki makalelerde  detaylı anlatılacak)  onun üstünde /, ve swap alanı oluşturacak.

 

 

image017

 

 

Tekrar emin misiniz diye soruyor, yine “Yes” deyip Next’le devam edeceğiz,

 

 

image018

 

 

Az once anlattığım yapıyı size görsel halde sunacak, burada değiştirme yapacaksanız üstteki araçları(New, Edit, Delete, Reset, RAID, LVM) kullanarak yapabilirsiniz. Ama şimdilik altyapıyı bilmeden değiştirmeye girişmeyi ben uygun bulmuyorum. Next’le devam ediyoruz.

 

 

image019

 

 

Bizim tek diskimiz vardı, onu da /dev/sda olarak isimlendirdi ve GRUB boot loader’I bunun üstüne kuracağını söylüyor, isterseniz başka bir alan seçebiliriz veya boot loader ayarlarını değiştirebiliriz, biz şimdilik birşeye dokunmadan Next’le devam ediyoruz.

 

 

image020

 

 

Burada eğer elimizde bu sisteme vereceğimiz IP, DNS, Subnet Mask bilgileri varsa ve bu ayarları DHCP üstünden almasını istemiyorsak, Network Devices kısmında yer alan interface seçili olacak şekilde Edit tıklanarak gelen ekranda bu bilgiler girilir. DHCP tarafından bu bilgilerin atanması isteniyorsa bu haliyle bırakabilirsiniz, sonrasında sistem ismini(hostname) verdik ve Next’le devam ettik.

 

 

image021

 

 

Saat dilimi olarak Avrupa/İstanbul kısmını seçtik, sunucunuzun bulunduğu veya çalışması gerektiği zaman dilimini buradan seçiyoruz. Next’le devam ettik.

 

 

image022

 

 

Root şifresini verirken unutmayacağınız; çokta karışık olmayan bir şifre verin çünkü sistem kurulup üstünde çeşitli düzenlemeler yapıncaya kadar karmaşık bir şifreye sahip olmasına gerek yok. Sistemi sahibine veya canlı ortama(production environment) vereceğiniz zaman karmaşık bir şifre verebilirsiniz.

 

 

image023

 

 

Paket olarak ilk başta Desktop-KDE, Server, Server-Gui seçtik. İleride konuları anlatırken ve paket meselelerini hallederken sistemin ilk başta sade olması önemli. Kurulum paketlerini sadece kalıp dosyasından sağlayacağınız gibi “Add additional software repositories diyerek network’e erişim varsa network üstündeki bir repo’yuda gösterebiliriz. Eğer alt paketlere bakmak istemiyorsanız “Customize Later diyerek geçiş yapabilirsiniz. Ama biz “Customize Now” diyerek biraz içlerini kurcalayacağız. Next’le devam ediyoruz,

 

 

image024

 

 

Bu bölümde paketlerin genel başlıklar altında toplanmış olduğunu göreceksiniz ve her alt paket yumağının içini açıp incelemek isterseniz Optional Packages I tıklayarak gelen listede bütün rpm paketlerini görebilirsiniz. Sistemi ilk kurarken dikkat etmeniz gereken konu gereksiz paketleri kesinlikle sisteme kurmamanız çünkü bu paketler ileride güvenlik ve paketler arası bağımlılık problemlerine yol açabilir. Bazı paketleri kaldırmak veya sürümü yükseltmek istersiniz ama gereksiz paketler yüzünden başınız ağrıyabilir.

 

·         Desktop Environments; Windows ortamında alışık olduğunuz masaüstünün hepsi ve belki daha fazlası ile Linux ortamında da Gnome ve Kde olarak son kullanıcıya sunuluyor. Arada çok fark yok. Windows’taki tema mantığı gibi düşünebilirsiniz. Biz sadece “KDEyi “seçiyoruz.

·         Applications; Sistemin üstünde standart olarak gelen çeşitli uygulamalar; internet, grafik yönetim araçları, editörler, ses ve video düzenleme uygulamaları gibi. Biz sadece “Editors” ve “Graphical Internet” I seçtik.

·         Development; Bu sistem bir uygulama geliştirme platform olacaksa, burada listelenen dil destekli geliştirme araçlarını seçmemiz gerekecek. Ama biz temelde şimdilik öyle bir şey istemediğimiz için sadece “Development Libraries”,”Development Tools” kısmını seçiyoruz.

·         Servers; Kuracağımız sistemi ne için kullanacak isek, sunucu özelliğini buradan seçmemiz gerek. Mail,FTP,Samba,DNS,DHCP,Network gibi.  Şimdilik burada da hiçbir şey seçmiyoruz. İhtiyaç oldukça ve konular ilerledikçe ilerleyen makalelerde bu sunucuları teker teker kuracağız. Bir şey seçmiyoruz.

·         Base System; Eğer sistemde grafiksel ara yüz(desktop, gui) kullanmak istiyorsanız X Windows System seçili olmalı, biz burada hepsini seçtik. Hepsini seçiyoruz.

·         Virtualization; KVM ve Xen gibi sanallaştırma teknolojileri şimdilik olmasın, bir şey seçmiyoruz.

·         Clustering; Cluster (Kümeleme) sistemde yapmayacağız, bir şey seçmiyoruz.

·         Cluster Storage; “Cluster” yapmadığımız için “Cluster Storage” desteğine de gerek yok. Bir şey seçmiyoruz.

·         LanguagesDil olarak hangi dilde işletim sisteminin desteği olmasını istiyorsanız, o dilleri bu listeden seçebilirsiniz. Biz “Turkish Support” kısmını seçtik.

 

Bütün paket seçimlerimizi yaptıktan sonra Next’le devam ediyoruz,

 

 

image025

 

 

image026

 

 

Kurulumla alakalı bir log dosyası üreteceğini ve bunu /root/install.log yolunda olduğunu ayrıca bu sistem için seçilmiş olan kurulum ayarlarını ileride Network üstünden kurulum dosyası olarak kullanmak istersek bununda /root/anaconda-ks.cfg dosyası olduğunu söylüyor.

 

 

image027

 

 

Bu şekilde kurulum devam edecek ve ne kadar az paket seçmiş iseniz o kadar kısa kurulum süreniz olacak doğal olarak. En yüklü halde kurulum gerçekleştirseniz bile en fazla 20dknızı alır.

 

 

image028

 

 

Kurulum devam ediyor, kurulum esnasında her kurduğu paketin ismin ve genel paket grubunu vermekte.

 

 

image029

 

 

Kurulum bittikten sonra sistemin tekrar başlatılması gerekmekte.”Reboot “ diyerek devam ediyoruz,

 

 

image030

 

 

Sistem yeniden başlatıldıktan sonra birkaç ayar(Firewall, SELinux, Kdump, Date&Time, Extra User, Sound Card ve başka kurulum yapılacak uygulamalar) yapmak için yeni bir liste getirecek. Bu listeyi “Forward” diyerek devam ediyoruz.

 

 

image031

 

 

İlk başta firewall kapalı “Disabled” durumda bırakıyoruz ve Forward ile devam ediyoruz,

 

 

image032

 

 

Linux sistemler için özel geliştirilmiş olan güvenlik uygulaması SELinux’u da “Disabled “ durumda tutarak, Forward ile devam ediyoruz. Firewall ve SELinux ‘un sistem kurulurken en başta kapalı olması biz bir şeylerle uğraşırken bizi engellememesi çünkü uygulama veya veritabanı kurulum ve ayar işlemlerinde bunlar başımıza iş açabilir ve fark edemeyebiliriz. İşletim sistemi ve diğer bütün kurulumlar bittikten sonra bulunduğunuz  şirketin güvenlik politikalarına göre Firewall ve SELinux’u ayarlayabilirsiniz.

 

 

image033

 

 

Sistem arızalandığında yani işletim sistemi çekirdeği(kernel) hata alıp çökerse, son çöküşle ilgili memory’de sürekli olarak tuttuğu ve sonradan kurtarabildiği bilgileri diskte bir bölgeye yazıyor. Biz şimdilik gelecekteki makalelerde daha detaylı anlatacağımız için bunu da “Disabled” durumda bırakıp “Forward “ ile devam ediyoruz,

 

 

image034

 

 

Sistemin gün ve saatini ayarladıktan sonra genel olarak bu bilgileri nereyle senkronize etmesi gerektiğini belirtmemiz gerekiyor, isterseniz hiç kullanmayabilirsiniz “Enable Network Time Protocol” hiç seçili olmaz, ya da lokalde başka bir sunucuyu “Add” diyerek IP veya hostname vererek o sunucuyu bu kuracağımız sunucu için NTP server yapıp zamanı oradan alabilirsiniz, ya da bu kurulum yaptığımız sunucu dış network’e çıkabiliyorsa “Enable Network Time Protocol” diyerek standartta gelen sunucu listesine dokunmadan “Forward ile devam ederiz.

 

 

image035

 

 

Sisteme bir kullanıcı ekledik ve kullanıcı ile ilgili açıklama girip, şifresini belirledik. Kullanıcı lokalden kimlik tespiti ve doğrulama yapacağı için “Use Network Login” kısmına hiç dokunmadık çünkü burada LDAP, NIS, Kerberos gibi ayarlar yapmak gerek, bizim şimdilik öyle bir ayara ihtiyacımız yok. “Forward”  ile devam ediyoruz,

 

 

image036

 

 

Sistemde bir ses kartının varlığını tespit etti ve sürücülerini test etmek için ufak bir doğrulama yaptı, ses kartının çalışır olmasından emin olup “Yes” dedik, “Forward “ ile devam ediyoruz.

 

 

image037

 

 

Başka bir kurulum gerçekleştirmeyeceğimiz için bu kısma dokunmadan “Finish” diyoruz ve bu yaptığımız son ayarların geçerli olabilmesi için sistemi tekrar başlatmak istediğini söylüyor, bizde “Ok” diyerek, sistemi tekrar başlatacağız.

Gelen ekranda kullanıcı adı ve şifresini girdikten sonra size CentOS’un ve özellikle Linux dünyasının kapılarını aralama fırsatı vermiş olacağız.

 

 

image038

 

 

Vmware-Tool kurmak isterseniz, VMware Workstation ekranından VM -> Install VMware Tools tıklanır ve Linux sistemde otomatik olarak bir CD sürücü bağlanır. Cancel denilip, Ekranın boş bir yerinde Mouse ile sağ tık Konsole tıklanır ve konsol gelir.

   

 

 

image039

 

 

image040

 

 

Sonra gelen konsolda aşağıdaki komutlar uygulanır;    

 

   su -                                                                      à biz cozumpark kullanıcısı ile sisteme girdik, root kullanıcısı olmak için su – komutu ardından root şifresini girdik root olduk.

   mkdir -p /tmp/vmware-tools

   cp /media/VMware\ Tools/* /tmp/vmware-tools

   cd /tmp/vmware-tools

   ls -rlt

   tar -zxvf VMwareTools-8.4.5-324285.tar.gz

   cd vmware-tools-distrib/

   ls -rlt

   ./vmware-install.pl

 

Sonrasında gelen her soruya „Enter diyerek geçebilirsiniz. Kurulum bittikten sonra ayarların aktif olması için Masaüstündeki „CentOS simgesine tıklayın“ ->  „Log out“ -> “End Current Session“. Log out olduktan sonra kullanıcı adı(cozumpark) ve şifreyi girerek tekrar sisteme login olabiliriz.

 

 

 

Linux RPM Paket Yönetim

$
0
0

Centos, Redhat, Fedora, Oracle Linux gibi Redhat türevli işletim sistemlerinde uygulama yönetiminde kullandığımız Rpm Paketini inceleyeceğiz. Paket yönetiminde kullanılan 2 araçtan biridir Rpm bir diğeri ise Yum dur. Rpm le indirdiğimiz paketleri kurabilir, kaldırabilir, güncelleyebilir ve uygulama hakkında bilgi temin edebiliriz.

Rpm (Redhat Package Manager ) açılımından da anlaşılacağı gibi Redhat tarafından geliştirilmiştir. Şuan da birçok GNU/Linux dağıtımcısı tarafından kullanılmaktadır. Rpm paket yönetimiyle ” *.rpm ” uzantılı dosyaları yönetebiliriz. Uygulamaları kurulum DVD sinden temin edebileceğimiz gibi internet üzerinden indirerek de kurulumlarını gerçekleştirebiliriz.

Paketleri kurduğunuz işletim sisteminin firmasının web sayfa sından ilgili linkler altında bulabilirsiniz. Demo amaçlı kullandığım Centos un paketlerini temin ettiğim adrese buradan ulaşabilirsiniz. Paketlerin i386 ( 32 bit ) ve x86_64 ( 64 bit ) iki adet farklı sürümleri bulunmaktadir. Sizin kurduğunuz işletim sisteminin tipine göre paketleri indirmeniz gerekmektedir.

Kurulu olan İşletim sisteminin Platformu ” uname -i ” komutuyla görebilirsiniz.

Rpm ile paketleri tek tek kurduğumuz için birbiriyle bağımlı paketleri kurarken hata alabilirsiniz. Bunun için kurulumu başlattıktan sonra ekrana gelen bağımlı paketleri öncesinde kurmanız gerekecek.

rpm -i *.rpm komutuyla istediğimiz paketleri kurabiliriz. Ekrana yapılan işlemlerle ilgili olarak bir şey yazmakacakdır. Tamamlanıp tamamlanmadığın dan emin olmamız için yaptığımız işlemleri takip etmek adına ” vh ” la birlikte kullanmamız bizim için daha iyi olacaktır. rpm -ivh *.rpm komutuyla yükleme işleminin ne durumda olduğunu görebilmekteyim. İnternet üzerinden ilgili paketin kurulumunu yapabilirim.

image001

Veya ” wget ” le dosyayı öncelikle bilgisayarıma indirebilirim. İşime yarayan bir paketi daha sonra kurmak istediğim zamanlara için bu şekilde kullanabilirim.

image002

Kurmak istediğim zamanda paketin olduğu dizine giderek rpm -ivh “paket adı”.rpm şeklinde komutu çalıştırarak kurulumu gerçekleştirebilirim.

image003

rpm -Uvh *.rpm komutuyla paketin Güncellemesi varsa bu işlemi aynı zamanda sistem de yüklü olmayan paketin de yükleme işlemini gerçekleştirebilirim. Aşşağıdaki örnekte kurulu olmayan bir paketin kurulumunu da yaptığını görebilirsiniz.

image004

rpm -e paket adı komutuyla kurduğumuz paketleri kaldırmak istediğimiz zaman kullanırız. Burada rpm diye uzantısını belirtmemize gerek yok kendisi direk bu işlemi yapacaktır. Vh la ekrana yazdıramıyoruz silme işleminde. Emin olmak için kurulu olan paketler içerisinde arama yapabiliriz. Bu komuta birazdan değineceğiz.

image005

İşletim sistemimizin üzerine kurduğumuz bütün paketlerin takibini yapabiliriz.

rpm -q komutuyla aramalar gerçekleştirebiliriz. rpm -qa ilen bütün yüklü paketleri listeleyebiliriz. Çok hızlı geçeceğinden ekran birşey anlaşılmayacaktır bunun için sonuna ” |more ” veya ” | less” şeklinde yazınki kendiniz ilerletebilesiniz.

image006

Yüklü olan paketlerin içeriğini daha da kısıtlandırarak sadece istediğimiz paketin bilgisine ulaşabiliriz.

rpm -qa | grep ” paket adı “ şeklinde yazdığımız komut bize paketin yüklü olup olmadığının bilgisini verecektir.

image007

Yüklü olan paketlerin ayrıntılı bilgisini almak için rpm -qi ” paket adı “ nı kullanabiliriz.

image008

Sistemimize yüklemek istediğimiz bir paket hakkında da bilgi sahibi olmak için rpm -qpi ” paket adı “ kullanabiliriz.

Paketi indirmemize gerek kalmadan internetteki paketin ayrıntılı bilgisini alarak ihtiyacımız doğrultusunda yükleme işlemini yapabiliriz.

image009

Rpm paket yönetimi genel anlam da tamamlamış olduk bu işlemleri otomatik yapmak içinse yum paket yönetimini ele alacağız.

Linux YUM Paket Yönetim

$
0
0

Redhat türevli işletim sistemlerinde uygulama yönetiminde kullandığımız Yum ( Yellowdog Updater Modified ) aracını inceleyeceğiz. Yum aracı paketleri yönetmek istediğimiz zaman bize yardımcı olan bir uygulamadır. Paketleri otomatik olarak kurmak, kaldırmak, bilgi almak için kullanılabilir.

İhtiyacımız olan paketleri gruplar halinde de indirebildiği gibi tek tek de indirip yüklememizi veya aynı şekilde kaldırma işlemleri içinde kullanabildiğimiz pratik bir paket yönetme uygulamasıdır.

Rpm bilgisayarımıza indirdiğimiz veya internet üzerinden paketleri tek tek kurmamıza olanak verirken Yum ise bir paketin ihtiyaç duyduğu diğer paketleri de otomatik olarak kurabilir. Yum için rpm tabanlı paket yönetimi de diyebiliriz.

rpm -qa | grep yum komutu yardımıyla Yum paket yöneticisinin yüklü olup olmadığını kontrol edelim.

 

image001

image002İşletim sistemini kurduktan sonra çalışmalarımıza başlamadan önce uygulamaları güncellemek istersek. Güncelleme konumundaki bütün paketleri yükleme işlemini yum update le yapabiliriz.

 

image003

Yüklenebilir durumdaki güncellemeleri ve paketler li listelemek için yum list kullanabilirsiniz. Liste hızlı geçeceği için " | less " " |more " kullanınız. Yüklenmiş paketler de dahil olmak üzere yüklenebilir durumdaki bütün paketleri listeleyecektir.

 

image004

Yüklenmiş paketlerin tamamını yum list installed la getirebiliriz.

 

image005

Bildiğimiz bir paketin yüklü olup olmadığını anlamak için yüklenen paketler içerisinde arama yapabiliriz.

yum list installed " Paket adı " şeklinde diye aradığımda yüklü ise paketi göreceğim yüklü değilse Error: No matching Packages to list diye uyarıyı verecektir.

 

image006

Paket adını biliyorsam eğer Install " paket adı " şeklinde direk kurulumu gerçekleştirebilirim. Paket adını tam bilemediğimiz durumlarda yukarıdaki arama adımlarını kullanabilirim yada hatırladığım bir kaç kelimeden yola çıkarak bulabilirim örnek vermek gerekirse yum Install jo* şeklinde arama yapabilirim . ilk iki harfi jo ilen başlayıp sonundaki harfleri ne olursa olsun manasında " * " kullanabilirim. Sonucunda joe ve joystick olarak iki tane paket buldu yüklemeye devam etmeyip sonrasın da dire joe paketini kurabilirim.

 

image007

Paketin güncellemesinin olup olmadığını kontrol edebilirim. Bütün güncellemeleri yapmadıysam sadece kullandığım uygulamanın güncellemesi yapmak istiyorsam yum update " Paket adı " ile o pakete ait güncelleme var mı onun kontrolünü yapabilirim.

 

image008

Kaldırmak istediğim bir paket var ise yum remove " Paket adı "

 

image009

image010

Paketleri kurma işleminde. Kurulama başlamadan önceki bize gelen emin misiniz sorusunun cevabını başta da belirleyebilir. Kurmak istediğim paket den eminim bunun için yes komutunu paketi yükleme işleminde yazıyorum yum -y Install " Paket adı ".Yukarıda belirttiğim " * " aramalarda bunu kullanmayın gereksiz paketleri de yükleyebilirsiniz. Sadece net bildiğiniz paket adlarına kullanınız.

 

image011

Kullandığımız uygulamayı yeniden yükleme ihtiyacı duyabiliriz kimin başına gelmez ki =)

yum reinstall " Paket adı "

 

image012

Yüklenen paketler hakkında bilgileri almak istediğinizde info yu kullanabiliriz.

 

image013

Paketlerin i386 ( 32 bit ) ve x86_64 ( 64 bit ) iki adet farklı sürümleri bulunmaktadır. Sizin kurduğunuz işletim sisteminin tipine göre paketleri seçebilirsiniz.

Kurulu olan İşletim sisteminin Platformunu ” uname -i ” komutuyla görebilirsiniz.

 

image014

Bir paketi listelediğimde. Paketin yüklü olduğunu ve yeni güncellemesinin olduğunu available packages da gördüm

 

image015

Yukardaki örnek de gördüğüm güncellemeyi yum update " Paket adı " şeklinde paketin güncellemesini yapabilirim.

 

image016

Yum paket yöneticisinin güzel bir özelliği de grup lar halinde gerekli olan paketleri kurmasıdır. Sistem de yüklü olan grup paketlerini ve yüklenebilir durumdaki grup paketlerini grouplist komutuyla listeleyebilirsiniz.

 

image017

Yükleme ihtiyacı duyduğum grup paketlerini

yum groupinstall " dns name server " şeklinde yazarak dns server için gerekli paketlerin kurulumunu yaratırabiliriz. Dns server için 4 tane paket gerekliymiş bunları hatırlamaya biliriz eğer hatırlarsanız grup şeklinde değil de tek tek de kurulumunu yapabilirsiniz. Fakat bu dns server için 4 paket webserver için 22 paket :) grup kurulumu bize hepsini tek bir komutta kurmamıza olanak sağlamaktadır.

 

image018

Bir grup paketinin yüklü olup olmadığını kontrol etmek için grouplist " Grup adı " şeklinde arama yapabiliriz.

 

image019

Var olan bir grubu silmek için

yum groupremove " Grub adı " Gruba ait olan bütün paketleri kaldıracaktır.

 

image020

Güncellemeleri kullandığımız grub içinde yapabiliriz sadece

yum groupupdate " Grub adı " ile grubun içindeki bütün paketlerle ilgili olan güncellemeleri yapacaktır.

 

image021

Paket ler içerisinde aramalarda kullanabileceğimiz bir kaç örnek verelim

mys le başlayanları getirmek istersek.

 

image022

Sonu dns le bitenleri listelemek istersek.

 

image023

image024

Yum paket yönetimi bizim işimizi oldukça rahatlatıyor. Paketleri otomatik olarak repolist lerinden arayıp getirilen güzel ve kullanışlı bir uygulamadır.

Linux Audit Sistemi

$
0
0

 

 

Linux tabanlı işletim sistemleri ve Linux Audit

 

Audit Nedir?

 

Sözlük manası incelemek, denetlemek olan audit kelimesi işletim sistemlerinde kullanıcı ve sistem aktivitelerinin kayıt altına tutulup ileriye dönük inceleme yapılabilmesine olanak sağlayan bir altyapıdır. Her işletim sisteminin kendine ait bir audit alt yapısı mevcuttur.

 

Audit loglaması ve Syslog loglaması arası fark nedir?

 

Syslog sistem tarafında log atmak ve almak için kullanılan bir bileşendir. Fakat syslog’a nelerin, hangi işlemlerin log atılacağı tamamen uygulamanın yazarının tercihidir. Bu şekilde olan bir sürecte tam bir kayıt altına alma işlemi gerçekleşmeyecektir. Onun yerine uygulamanın veya kullanıcıların yaptığı her işlemin çekirdek tarafında loglanabileceği bir arabirim olan audit mekanızması gerçellenmiştir. Ayrıca syslog olayın olduğunu loglarken , audit biro lay olmadan ÖNCESİNİ ve SONRASINI da kayıt altına alabilmektedir.

 

Linux Audit Nedir?

 

Linux çekirdeğinin ve dolayısıyla çekirdek içinde bulunan system call adı verilen sistem çağrılarının kayıt altına alınıp ileriye dönük analiz yapılabilmesini sağlar. Yanlız unutulmamalıdır ki her audit işlemi , işletim sistemi çekirdeğini az veya çok meşgul edecektir. Bu yüzden audit yapılacak bileşenlerin dikkatli seçilmesi gerekmektedir.

 

Linux audit sistemi aşağıdaki 4 bileşenden oluşur.

 

 

1.       Sistemlerde oluşan çekirdek olaylarının (syscall) toplanması ve de audit altyapısını kullanan kullanıcı programların loglaması için bir altyapı

2.       Audit sisteminin yapılandırma dosyaları (/etc/audit/auditd.conf ve /etc/audit/auditd.rules)

3.       Her bir audit olayının sistemde okunabilir halde durduğu dosya ( /var/log/audit/audit.log)

4.       Binary olan audit loglarını incelemek için yardımcı programlar.

audispd(8), ausearch(8), aureport(8), auditctl(8).

 

 

Linux audit Red Hat firması tarafından geliştirilmesine başlanmış ve Linux çekirdeğine girmiş bir çekirdek (kernel) bileşenidir. http://people.redhat.com/sgrubb/audit/ adresinden geliştirilmesi takip edilebilen Linux audit sistemi sadece Red Hat tarafından değil diğer bütün Linux dağıtımları tarafından da desteklenmektedir.

 

Linux Audit Büyük Resim

 

 

Linux Audit sisteminin daha iyi anlaşılabilmesi için aşağıdaki resimden faydalanabilirsiniz.

 

 

image001

 

 

Linux Audit Çekirdek Bileşeni

 

 

Red Hat Enterprise Linux 5 ile gelen çekirdek içine audit bileşeni otomatik olarak gömülmüştür. (Kernel module olarak değil, çekirdek dosyasının içinde yer almaktadır) /boot/vmlinuz-2.6.18-92.el5 gibi bir dosya olan çekirdek dosyası içinde gömülü geldiği için audit sistemini başlangıçta kapatılması istenirse /boot/grub/grub.conf dosyası içinde ilgili kernel stanza’sı sonuna audit=0 eklenmelidir. Örnek vermek gerekirse:

 

 

 

# grub.conf generated by anaconda

#

# Note that you do not have to rerun grub after making changes to this file

# NOTICE: You have a /boot partition. This means that

# all kernel and initrd paths are relative to /boot/, eg.

# root (hd0,0)

# kernel /vmlinuz-version ro root=/dev/sda2

# initrd /initrd-version.img

#boot=/dev/sda

default=0

timeout=5

splashimage=(hd0,0)/grub/splash.xpm.gz

hiddenmenu

title CentOS (2.6.18-92.el5)

root (hd0,0)

kernel /vmlinuz-2.6.18-92.el5 ro root=LABEL=/ audit=0

initrd /initrd-2.6.18-92.el5.img

 

 

 

Bu işlemden sonra işletim sistemi tarafında da auditd servisi kapatılmalıdır. (chkconfig auditd off && service auditd stop) ve daha sonra işletim sistemi reboot edilmelidir. Eğer reboot edilmeden auditd servisi geçici olarak kapatılmak istenirse

# audictl –e 0



komutu ile audit sisteminin kernel tarafı kapatılır. Ayrıca ek olarak uditd servisi kapatılmalıdır. (chkconfig auditd off && service auditd stop). Eğer auditctl –e 0 verilmek yerine sadece chkconfig auditd off && service auditd stop komutu verilirse çekirdek tarafından gönderilen audit logları auditd’ye değil syslog’a gönderilecek ve bu sefer bu loglar /var/log/audit/audit.log dosyası yerine /var/log/messages dosyasına akmaya başlayacaktır.

Audit sistemini enable etmek için Red Hat Enterprise Linux 5’te herhangi birşey yapılmasına gerek yoktur. Zaten öntanımlı olarak açık gelmektedir. Fakat kurmak, servisi enable etmek ve başlatmak için aşağıdaki komutlar verilir.

 



# yum –y install audit

# chkconfig auditd on

# service auditd start

 

 

 

Linux Audit yapılandırma dosyaları

 

 

Red Hat Enterprise Linux işletim sisteminde iki adet yapılandırma dosyası mevcuttur.

 

/etc/audit/auditd.conf

 

Bu dosya auditd servis yazılımının (daemon) yapılandırma dosyasıdır.Bu servis nelerin audit edileceğini değil sadece bu mesajları işleyen auditd servisinin aldığı audit mesajlarını ne yapacağını ve sistem diski dolması durumunda ne yapılacağı gibi işlerden sorumlu bir bileşendir. Aşağıda RHEL ile gelen öntanımlı auditd.conf gösterilmektedir.

 

 

 

#

# This file controls the configuration of the audit daemon

#

 

log_file = /var/log/audit/audit.log

log_format = RAW

log_group = root

priority_boost = 4

flush = INCREMENTAL

freq = 20

num_logs = 4

disp_qos = lossy

dispatcher = /sbin/audispd

name_format = NONE

##name = mydomain

max_log_file = 5

max_log_file_action = ROTATE

space_left = 75

space_left_action = SYSLOG

action_mail_acct = root

admin_space_left = 50

admin_space_left_action = SUSPEND

disk_full_action = SUSPEND

disk_error_action = SUSPEND

##tcp_listen_port =

tcp_listen_queue = 5

tcp_max_per_addr = 1

##tcp_client_ports = 1024-65535

tcp_client_max_idle = 0

enable_krb5 = no

krb5_principal = auditd

##krb5_key_file = /etc/audit/audit.key

 

log_file

 

 

auditd tarafından alınan logların düz okunabilir metin olarak nereye kayıt edileceği bu direktif ile belirtilir.

 

log_format

 

Log dosyasının hangi formatta olacağı burada belirtilir. RAW veya NOLOG kullanılabilir. RAW ise mesajın kernel’ın gönderdiği şekilde ama düz metin olarak kayıt eder.

 

log_group

 

/var/log/audit/ dizini altındaki log dosyalarının hangi gruba ait olacağını belirtir. Eğer root dışında başka bir grup belirtilirse dosyanın sahibi root, grubu ise belirtilen grup olur.

 

 

log_group=root

-rw------- 1 root root 390129 Oct 31 16:16 audit.log

-r-------- 1 root root 5243040 Oct 31 12:12 audit.log.1

-r-------- 1 root root 5243064 Oct 29 06:24 audit.log.2

-r-------- 1 root root 5243057 Oct 26 23:38 audit.log.3

log_group=baskagrup

 

-rw-r----- 1 root baskagrup 389166 Oct 31 16:16 audit.log

-r-------- 1 root root 5243040 Oct 31 12:12 audit.log.1

-r-------- 1 root root 5243064 Oct 29 06:24 audit.log.2

-r-------- 1 root root 5243057 Oct 26 23:38 audit.log.3

 

priority_boost

 

auditd sürecinin başlanğıçta hangi priorty’de başlayacağını belirtir. Buradaki 4 değeri öntanımlı değerdir.

 

flush ve freq

 

none, incremental, data ve sync değerlerini alan flush, logların ne kadar sürede bir diske yazılacağını belirtir. İncremental değerini almış ise bir sonraki satır olan freq değeri diske flush etmeden önce ne kadar kadar kayıtı diske yazacağını belirtir.

 

num_logs

 

log dosyalarının kaç adet tutulacağını belirtir. Değeri 4 log dosyaları en fazla 3 kere döndürülür.

 

 

num_logs=4

 

-rw------- 1 root root 390129 Oct 31 16:16 audit.log

-r-------- 1 root root 5243040 Oct 31 12:12 audit.log.1

-r-------- 1 root root 5243064 Oct 29 06:24 audit.log.2

-r-------- 1 root root 5243057 Oct 26 23:38 audit.log.3

 

disp_qos

 

auditd’nin dispatcher adı verilen program ile nasıl haberleşeceğini belirtir. blocking/lossless veya non-blocking/lossy değerlerini alır. Bu iki program arasında 128k ‘lık bir tampon değeri vardır.

 

Dispatcher

 

auditd tarafından başlatılan ve de auditd’ye gelen dosyaların bir kopyasınında burada belirtile n programa gönderilmesini sağlayan bir opsiyondur.

 

name_format , name

 

auditd log satırlarında makinaların adlarının nasıl gösterileceğini belirtir. Default değeri none’dır. Bu değer fqd değerini alırsa

 

node=server.endersys.com type=CONFIG_CHANGE msg=audit(1320072332.262:549010): audit_enabled=1 old=1 by auid=4294967295 res=1

 

numeric olursa

 

node=10.123.18.10 type=CONFIG_CHANGE msg=audit(1320072332.262:549010): audit_enabled=1 old=1 by auid=4294967295 res=1

 

NONE olursa

 

type=CONFIG_CHANGE msg=audit(1320072376.797:549022): audit_enabled=1 old=1 by auid=4294967295 res=1

 

name_format= user yapılıp , name = TEST yapılırsa

 

node=TEST type=CONFIG_CHANGE msg=audit(1320072421.562:549026): audit_enabled=1 old=1 by auid=4294967295 res=1

 

max_log_file

 

auditd.log dosyalarının en fazla kac MB olabileceğini belirtir.

 

max_log_file_action

 

max_log_file boyutuna ulaşıldıktan sonra ne yapılacağını beliritir. Red Hat’te default olara rotate seçilmiştir. Yani 5 MB a ulaşınca dosyalar rotate edilir num_logs adedi kadar

 

space_left

 

/var/log/audit ‘in olduğu disk bölmesi yüzde kaç dolunca mesaj atmaya başlanacağını belirtir.

 

space_left_action

 

Disk belirli bir seviyede dolunca uyarı mesajının ı hangi metodla belirtileceğini ifade eder. Olası değerler ignore, syslog, email, exec, suspend, single ve halt ‘tır. RHEL 5 syslog değerini kullanır.

 

admin_space_left , admin_ space_left_action

 

space_left değerinden daha küçük olma durumunda olan bu değer admin userını ne zaman uyarılacağını belirtir.

 

disk_full_action

 

ignore, syslog, exec, suspend, single ve halt değerlerini alan ve Red Hat’in suspend aksiyonunu kullandığı bu değer disk dolunca hangi işlem yapılacağını belirtir. Suspend ile auditd hala çalışmaya devam eder fakat diske yazma işlemi yapılmaz.

 

disk_error_action

 

Red Hat’te default aksiyonu SUSPEND olan bu değer diskte hata durumu olması durumunda ne yapılacağını beliritir. Alabileceği değerler ignore, syslog, exec, suspend, single ve halt tır.

 

tcp_listen_port , tcp_listen_queue , tcp_max_per_addr, tcp_client_ports, tcp_client_max_idle

 

auditd ‘nin başka hostların audit loglarını alması için bir tcp portunu dinlemesi için kullanılan parametrelerdir.

 

enable_krb5, krb5_principal, krb5_key_file

 

Uzak bir makinadan audit mesajları geliyorsa bu gelen mesajların önce authenticate olunmasını sonra şifreli bir şekilde alınmasını sağlar.

 

 

Auditd yapılandırması ile alakalı daha fazla bilgi için man auditd.conf komutu vererek man sayfasına bakabilirsiniz.

 

/etc/audit/audit.rules

 

Bu dosya çekirdeğe yüklenen ve çekirdeğin hangi sistem çağrılarını veya hangi durumları audit log’u olarak üreteceğinin yapılandırıldığı yapılandırma dosyasıdır. Bu dosya audit servisi başlangıç dosyası (/etc/init.d/auditd) içinde auditctl komutuna parametre olarak yüklenip çekirdeğe auditctl tarafından gönderilir. Aşağıda RHEL 5 ile gelen ön tanımlı audit.rules dosyası gösterilmektedir. Aslında buradaki her bir satır auditctl komutuna verilen bir parametredir. (Ör: -D satırı aslında , auditctl –D şeklinde çalıştırılır)

 

 

 

# This file contains the auditctl rules that are loaded

# whenever the audit daemon is started via the initscripts.

# The rules are simply the parameters that would be passed

# to auditctl.

 

# First rule - delete all

-D

 

# Increase the buffers to survive stress events.

# Make this bigger for busy systems

-b 320

 

# Feel free to add below this line. See auditctl man page

 

 

Audit kurallarının yazıldığı dosyadır. Genelde auditctl komutları 3 ana başlıktan oluşur. Bu ana parametreler

 

 

1)      Control : Kontrol komutları. Neyin dinleneceğini belirtmek yerine kural ekleme , silme gibi işlemler için kullanılır.

2)      File System: Watches olarak ta adlanrılabilen bu tip komutlar istenilen dosya veya dizin ile alakalı audit loglarının oluşturulmas için kullanılır.

3)      System Call: Çekirdekte çalışan sistem çağrılarını n loglanması için kullanılır.

 

den oluşmaktadır.

 

Bu üç ana parametrelerin nelerden oluştuğuna girmeden önce Red Hat Enterprise Linux ile gelen ön tanımlı yapılandırmadaki –D ve –b 320 satırlarını açıklayalım. –D, kernela yüklenen bütün audit kuralların silinmesini sağlar. –b 320 ise 320 adet buffer tanımlaması yapmaktadır. Eğer bu buffer dolarsa audit eventleri kayıp olur. Bu değer tamamen ne kadar çok audit logunun istenildiğine göre ayarlanabilir. Yoğun bir sistem için başlangıç olarak -b 8192 kullanılabilir.

 

Kontrol Kuralları

 

-D Kernela yüklenen bütün audit kuralların silinmesini sağlar. Genelde audit.rules dosyasındaki ilk satır budur.
-b backlog tampon boyutunu belirler. Dosya sisteminin yazma hızına ve sistemin yoğunluğu ve istenilen audit eventlerin çokluğuna göre bu değer uygun bir boyuta ayarlanmalıdır.
-f Çekirdeğin kritik durumlarda ne yapacağını belirtir. Alacağı değerler 0,1,2 dir. 0=silent 1=printk 2=panic masına gelmektedir. Bu kritik durumlar
- auditd servisine iletim hataları
- backlog limitinin aşılması
- sistem hafızasının bitimesi
- anlık oran limitinin aşılması (rate limit exceed)

 


-e enable flag. Bu audit sisteminin kernelda kapatılması, açılması ve kalıcı olarak ve değiştirilmeyecek şekilde açılmasıdır. –e 0 , e 1 veya –e 2 şeklinde değerler alır. 0 audit sistemini kapatır, 1 açar ve 2 de kalıcı olarak açılmasını sağlar ( 2 değeri verildikten sonra audit kurallarında bir değişiklik yapılması için reboot gerekmetedir.)

-l audit kurallarının listelenmesini sağlar.

 

Dosya Sistemi Kuralları

 

 

Sistem üzerindeki dosyalar (UNIX’te dosya sistemi üzerindeki herşeyin bir dosya olduğunu belirtelim) üzerinde yapılan işlemlerin kuralları aşağıdaki gibi tanımlanır.

 

 

-w <dosya veya dizin> -p <izinler> -k <anahtar kelime>

-w ‘ye parametre olarak dosya veya dizin verilir.

-p ‘ye parametre olarak verilen izinler aşağıdaki anahtar kelimelerden biri veya birden fazlası birleştirilerek kullanılabilir.

 

 

r - dosyanın okuması
w - dosyaya yazma
x – dosyanın çalıştırılması
a – dosya tanımlarının değiştirilmesi (izin veya özellik)

 


-k benzer kural setlerini gruplamak için kullanılan bir anahtar kelimedir. Tamamen istenilen 31 karakteri aşmayacak şekilde bir değeri olabilir. –D veya –l ‘ye parametre olarak verilerek sadece istenilen keyword’e sahip kuralların silinmesi veya listelenmesi sağlanabilir.

 

Sistem Çağrıları Kuralları

 

 

-a aksiyon,list -S syscall -F alan=değer -k <anahtar kelime>

 

-a iki değer alır. Aksiyon ve list.

 

Aksiyon always veya never değerini alır ilgili kural için bir event oluşturulup oluşturulmayacağını içerir.

List (bazı durumlarda filtre olarak ta tanımlanabiliyor) olarak alabileceği değerler entry , exit , user , task ve exclude ‘tur . Linux çekirdeği bu 5 filtreden birini kullanmaktadır.

Entry , sistem çağrılarının başında exit ise sistem çağrılarının sonunda kullanılmaktadır. Daha çok tercih edilen exit filtresidir zaten ileriki Linux çekirdeği sürümlerinde entry filtresinin kaldırılması düşünülmektedir.

User filtresi userland programlarda oluşacak durumların loglanması için kullanılır ve alabileceği filtre alanları ise uid, auid, gid ve pid tir.

Task çok nadir kullanılmakta ve sadece fork ve clone sistem çağrıları için kullanılır.

Exclude filtresi bazı eventleri loglama dışı bırakmak için kullanılır.

En çok kullanılan aksiyon ve list çifti always,exit ‘dir. Zaten internet üzerinde bulunabilecek çoğu örnekte de bu çift kullanılmaktadır.

-S ile kural yazılacak ve loglanması istenen sistem çağrıları belirtilir.

-F alan=değer Burada istenilen filtreler belirtilir. Mesela -F auid>=500 -F auid!=1002 ile user id’si 500 den büyük ve 1002 olmayan kullanıcılar için bir filtre yazılır. Birden fazla –F satırı varsa and’lenerek ilgili filtre oluşturulur.

-k benzer kural setlerini gruplamak için kullanılan bir anahtar kelimedir. Tamamen istenilen 31 karakteri aşmayacak şekilde bir değeri olabilir. –D veya –l ‘ye parametre olarak verilerek sadece istenilen keyword’e sahip kuralların silinmesi veya listelenmesi sağlanabilir.

 

Örnek audit.rules kuralları

 

Yukarıda anlatılan audit.rules kural satırlarını birkaç örnekle açıklayalım.

 

-w /etc/passwd -p wa -k identity

/etc/passwd dosyasına yazılma veya attribute değişikliği yapıldığında identity ifadesi ile taglenerek audit logu oluşturulur.

-w /etc/shadow -p ra -k identity

/etc/shadow dosyası okunduğunda veya attribute değişikliği yapıldığında identity ifadesi ile taglenerek audit logu oluşturulur.

-a always,exit -F arch=ARCH -S adjtimex -S settimeofday -S stime -k time-change

Üssteki örnekte ARCH yerine 32 bit veya 64 bit olmasına göre b32 veya b64 değeri kullanılabilir. Adjtimex , settimeofday ve stime sistem çağrılarının çıkışında time-change anahtar kelimesi ile etiketlenerek loglanılması sağlanır.

-a always,exit -F arch=ARCH -S creat -S open -S openat -S truncate -S ftruncate -F exit=-EACCES -F auid>=500 -F auid!=4294967295 -k access

-a always,exit -F arch=ARCH -S creat -S open -S openat -S truncate -S ftruncate -F exit=-EPERM -F auid>=500 -F auid!=4294967295 -k access

Yukarıdaki iki örnek sistemde uid’si 500’den büyük olan normal kullanıcıların izin verilmeyen (EPERM ve EACCESS’i başarısız olan) dosyaları okumaya çalıştığında log oluşmasını sağlar ve acesss anahtar kelimesi ile etiketler.

Daha fazla örnek için Audit sisteminin yazarının tavsiye yazdığı örnek audit rules dosyası incelenebilir. /usr/share/doc/audit-*/stig.rules dosyasında daha fazla ayrıntı bulabilirsiniz.

 

Linux Audit log dosyası - /var/log/audit/audit.log

 

Çekirdek tarafından auditd ‘ye gönderilen audit logları ön tanımlı olarak (/etc/audit/auditd.conf ‘taki log_file = /var/log/audit/audit.log satırı ile) /var/log/audit/audit.log dosyasına yazılır okunabilir dosya olarak.

 

Linux Audit raporlama komutları

 

Ausearch

 

ausearch komutu auditd tarafından loglanan audit olaylarında belirli kriterlere göre arama yapılması için kullanılır. Her eklenen yeni kriter bir önceki ile “and” lenerek istenen kritere uyan audit logları gösterilir. Bu arama /var/log/audit altındaki dosyalar içinden yapılmaktadır. En çok ullanılan parametreleri

 

-l, --line-buffered : Line buffered olarak bütün kayıtları ekrana basar

-r, --raw : Event’leri formatlamadan, olduğu gibi ekrana basar. –l ve –r birbirinin karşıt parametreleridir.

-a, --event Eventid numarasına göre arama yapılır.

-e, --exit: exit code veya error no’ya göre arama yapar.

-f, --file : audit eventlerinde geçen ve auditlenen dosyalara göre arama yapılmasını sağlar.

-k, --key: audit.rules veya auditctl ile girilen anahtar kelimeye göre (keyword) arama yapılmasını sağlar.

-p, --pid: Süreç numarasına göre (PID) filtreleme yapılmasını sağlar.

-ts , --start: Audit loglarında başlangıç tarihi verilerek bu başlangıç tarihiden sonraki eventlerde filtreleme sağlar.

-te , --end: Loglarda en son hangi tarihe göre arama yapılacağını belirtir.

-tm, --terminal: Terminal adına göre arama yapılması sağlanır. Cron ve atd gibi uygulamalar terminal olarak kendi binary adlarını yazar (terminal=cron gibi)

-ui, --uid : Userid ye göre filtreleme yapılması için kullanılır.

-gi, --gid Group id’ye göre filtreleme yapılması için kullanılır.

-x, --executable verilen paramtre olarak bir komut alan bu arguman bu komutlara uyan eventleri arar.

Daha fazla ausearch parametresi için ausearch klavuz sayfasına man ausearch komutu ile bakabilirsiniz.


Ausearh Örnek Komutlar

 

# ausearch --key access --file /etc/fstab –raw

 

Access keywordu kullanılarak tanımlanmış kurallardan /etc/fstab dosyasının erişildiği logları raw olarak göster.

 

 

 

type=SYSCALL msg=audit(1320176312.990:564657): arch=c000003e syscall=2 success=yes exit=3 a0=7fffed6eac22 a1=0 a2=7fffed6ea130 a3=3 items=1 ppid=11365 pid=12569 auid=4294967295 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts0 ses=4294967295 comm="cat" exe="/bin/cat" key="access"

type=CWD msg=audit(1320176312.990:564657): cwd="/root"

type=PATH msg=audit(1320176312.990:564657): item=0 name="/etc/fstab" inode=133136 dev=08:02 mode=0100644 ouid=0 ogid=0 rdev=00:00

type=SYSCALL msg=audit(1320176330.103:564658): arch=c000003e syscall=2 success=yes exit=3 a0=7fffbfcf0c22 a1=0 a2=7fffbfcf0740 a3=3 items=1 ppid=11365 pid=12574 auid=4294967295 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts0 ses=4294967295 comm="cat" exe="/bin/cat" key="access"

type=CWD msg=audit(1320176330.103:564658): cwd="/root"

type=PATH msg=audit(1320176330.103:564658): item=0 name="/etc/fstab" inode=133136 dev=08:02 mode=0100644 ouid=0 ogid=0 rdev=00:00

type=SYSCALL msg=audit(1320332207.622:591961): arch=c000003e syscall=2 success=yes exit=3 a0=7fffe39c9c22 a1=0 a2=7fffe39c9410 a3=3 items=1 ppid=310 pid=1984 auid=4294967295 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts0 ses=4294967295 comm="cat" exe="/bin/cat" key="access"

type=CWD msg=audit(1320332207.622:591961): cwd="/root"

type=PATH msg=audit(1320332207.622:591961): item=0 name="/etc/fstab" inode=133136 dev=08:02 mode=0100644 ouid=0 ogid=0 rdev=00:00

 

 

# ausearch -ts today -k Password

 

Keyword olarak password verilmiş kurallarda bügün içinde şu ana kadar oluşan audit loglarını gösterir.

 

# ausearch -ts today -k password-file -x rm

 

# ausearch -ts 3/11/11 -k password-file -x rm

 

rm komutu ile bugün içinde kimin şifre dosyalarına eriştiğini gösterir. ( -ts today veya –ts direkt tarih)

 

#ausearch –x cat

 

Cat komutu kullanımı sonucu oluşan eventleri gösterir.

 

 

----

time->Tue Nov 1 21:38:32 2011

type=PATH msg=audit(1320176312.990:564657): item=0 name="/etc/fstab" inode=133136 dev=08:02 mode=0100644 ouid=0 ogid=0 rdev=00:00

type=CWD msg=audit(1320176312.990:564657): cwd="/root"

type=SYSCALL msg=audit(1320176312.990:564657): arch=c000003e syscall=2 success=yes exit=3 a0=7fffed6eac22 a1=0 a2=7fffed6ea130 a3=3 items=1 ppid=11365 pid=12569 auid=4294967295 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts0 ses=4294967295 comm="cat" exe="/bin/cat" key="access"

----

time->Tue Nov 1 21:38:50 2011

type=PATH msg=audit(1320176330.103:564658): item=0 name="/etc/fstab" inode=133136 dev=08:02 mode=0100644 ouid=0 ogid=0 rdev=00:00

type=CWD msg=audit(1320176330.103:564658): cwd="/root"

type=SYSCALL msg=audit(1320176330.103:564658): arch=c000003e syscall=2 success=yes exit=3 a0=7fffbfcf0c22 a1=0 a2=7fffbfcf0740 a3=3 items=1 ppid=11365 pid=12574 auid=4294967295 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts0 ses=4294967295 comm="cat" exe="/bin/cat" key="access"

----

time->Tue Nov 1 22:59:05 2011

type=PATH msg=audit(1320181145.366:565387): item=0 name="/etc/shadow" inode=131817 dev=08:02 mode=0100400 ouid=0 ogid=0 rdev=00:00

type=CWD msg=audit(1320181145.366:565387): cwd="/root"

type=SYSCALL msg=audit(1320181145.366:565387): arch=c000003e syscall=2 success=yes exit=3 a0=7fffc51afc21 a1=0 a2=7fffc51aebf0 a3=3 items=1 ppid=11365 pid=14236 auid=4294967295 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts0 ses=4294967295 comm="cat" exe="/bin/cat" key="identity"

----

time->Thu Nov 3 16:56:47 2011

type=PATH msg=audit(1320332207.622:591961): item=0 name="/etc/fstab" inode=133136 dev=08:02 mode=0100644 ouid=0 ogid=0 rdev=00:00

type=CWD msg=audit(1320332207.622:591961): cwd="/root"

type=SYSCALL msg=audit(1320332207.622:591961): arch=c000003e syscall=2 success=yes exit=3 a0=7fffe39c9c22 a1=0 a2=7fffe39c9410 a3=3 items=1 ppid=310 pid=1984 auid=4294967295 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts0 ses=4294967295 comm="cat" exe="/bin/cat" key="access"


Aureport

 

Audit loglarından arama yapmanın dışında (ausearch komutu ile yapılır) , bu loglardan özet bilgi çıkarmak için aureport komutu kullanılır. Kullanılan parametreleri ise

 

-au, --auth: Authentication (Kimlik doğrulama) işlemleri hakkında özet bilgi alınmasını sağlar.

-a, --avc : SELinux AVC (Access Vector Cache) mesajları hakkında özet bilgi verir.

-e, --event: Event tipleri hakkında özet bilgi verir.

-f, --file: Dosya işlemleri ile alakalı özet bilgi verir.

-k, --key: Anahtar kelimelere göre özet bilgi verir.

-l, --login : Sistem girişleri hakkında özet bilgi verir.

-p, --pid : PID (Süreç numarası) na göre özet bilgi verir.

-s, --syscall: Sistem çağrılarına göre özet bilgi verir.

--summary: Tekrar eden event’leri sadece rakkamsal olarak kaç defa geçtiğine göre ekrana bilgi verir.

-tm, --terminal: Ayrıt edici özelliğin terminal tipi olmasına gore özet bilgi verir.

-ts, --start Ayrıt edici özelliğin başlangıç tarihi olmasına gore özet bilgi verir. (tek başına verilirse bu tarihten şimdiki vakite kadar.)

-te, --end Ayrıt edici özelliğin bitiş tarihi olmasına gore özet bilgi verir. (tek başına verilirse en baştan bu belirtilen tarihe kadar)

-u, --user Ayırt edici özelliği user yaparak özet bilgi verir.

-x, --executable Ayırt edici çalıştırılabilir dosyalar olan eventlerde özet bilgi verir.


aureport Örnek Komutlar

 

# aureport -l -i -ts yesterday -te today

 

 

Login Report

============================================

# date time auid host term exe success event

============================================

1. 11/03/2011 14:29:16 root ? tty1 /bin/login no 3368

2. 11/03/2011 14:29:21 root ? tty2 /bin/login no 3370

3. 11/03/2011 14:29:27 root ? tty1 /bin/login no 3372

4. 11/03/2011 14:29:31 root ? tty2 /bin/login no 3374

5. 11/03/2011 14:30:00 ofsen ? tty4 /bin/login no 3376

6. 11/03/2011 14:30:11 ofsen ? tty4 /bin/login no 3378

7. 11/03/2011 14:30:19 ofsen ? tty4 /bin/login no 3380

8. 11/03/2011 14:30:25 root ? tty2 /bin/login no 3382

 

 

Son bir gün içinde sisteme kimlerin girdiğini (login olduğunu) öğrenmek için kullanılır.

 

# aureport --key –summary

 

 

Key Summary Report

===========================

total key

===========================

4440 identity

4 access

 

 

# aureport –anomaly

 

Sistem üzerinde oluşan, sistemin normal çalışması dışında anormal aktiviteleri görmek için

 

 

Anomaly Report

=========================================

# date time type exe term host auid event

=========================================

1. 04/27/2011 16:35:47 ANOM_PROMISCUOUS /usr/sbin/tcpdump pts0 ? -1 816

2. 04/27/2011 16:35:53 ANOM_PROMISCUOUS /usr/sbin/tcpdump pts0 ? -1 817

3. 04/27/2011 16:35:57 ANOM_PROMISCUOUS /usr/sbin/tcpdump pts0 ? -1 818

4. 04/27/2011 16:36:00 ANOM_PROMISCUOUS /usr/sbin/tcpdump pts0 ? -1 819

5. 04/27/2011 16:36:07 ANOM_PROMISCUOUS /usr/sbin/tcpdump pts0 ? -1 820

6. 04/27/2011 16:36:27 ANOM_PROMISCUOUS /usr/sbin/tcpdump pts0 ? -1 821

7. 04/27/2011 16:36:36 ANOM_PROMISCUOUS /usr/sbin/tcpdump pts0 ? -1 822

8. 04/27/2011 16:36:36 ANOM_PROMISCUOUS ? ? ? -1 823

9. 04/27/2011 16:36:57 ANOM_PROMISCUOUS /usr/sbin/tcpdump pts0 ? -1 824

10. 04/27/2011 16:37:17 ANOM_PROMISCUOUS /usr/sbin/tcpdump pts0 ? -1 825

11. 04/29/2011 04:03:41 ANOM_ABEND httpd ? ? -1 1180

12. 05/15/2011 04:02:13 ANOM_ABEND httpd ? ? -1 3599

13. 05/15/2011 04:02:13 ANOM_ABEND httpd ? ? -1 3600

14. 07/17/2011 04:02:24 ANOM_ABEND httpd ? ? -1 3819

15. 07/17/2011 04:02:24 ANOM_ABEND httpd ? ? -1 3820

16. 07/26/2011 17:03:49 ANOM_ABEND yum-updatesd-he ? ? -1 6071

17. 07/26/2011 18:05:29 ANOM_ABEND yum-updatesd-he ? ? -1 6084

18. 07/26/2011 19:06:46 ANOM_ABEND yum-updatesd-he ? ? -1 6091

19. 07/26/2011 20:08:49 ANOM_ABEND yum-updatesd-he ? ? -1 6104

20. 07/26/2011 21:10:37 ANOM_ABEND yum-updatesd-he ? ? -1 6111

21. 07/26/2011 22:13:26 ANOM_ABEND yum-updatesd-he ? ? -1 6124

22. 07/26/2011 23:17:25 ANOM_ABEND yum-updatesd-he ? ? -1 6131

23. 07/27/2011 00:21:33 ANOM_ABEND yum-updatesd-he ? ? -1 6144

24. 07/27/2011 01:23:36 ANOM_ABEND yum-updatesd-he ? ? -1 6157

25. 07/27/2011 02:25:21 ANOM_ABEND yum-updatesd-he ? ? -1 6170

27. 10/24/2011 17:55:37 ANOM_PROMISCUOUS ? ? ? -1 1034

28. 10/24/2011 17:55:44 ANOM_PROMISCUOUS ? ? ? -1 1036

31. 10/24/2011 17:55:50 ANOM_PROMISCUOUS ? ? ? -1 1038

32. 11/03/2011 15:12:51 ANOM_PROMISCUOUS /usr/sbin/tcpdump pts0 ? -1 3389

33. 11/03/2011 15:12:51 ANOM_PROMISCUOUS /usr/sbin/tcpdump pts0 ? -1 3390

34. 11/03/2011 15:12:54 ANOM_PROMISCUOUS /usr/sbin/tcpdump pts0 ? -1 3391

35. 11/03/2011 15:44:39 ANOM_PROMISCUOUS /usr/sbin/tcpdump pts0 ? -1 3392

 

 

# aureport –success

 

Başarılı olan eventlerin özet raporu

 

 

 

Success Summary Report

======================

Range of time in logs: 08/22/2010 12:01:01.383 - 11/03/2011 23:01:01.338

Selected time for report: 08/22/2010 12:01:01 - 11/03/2011 23:01:01.338

Number of changes in configuration: 70

Number of changes to accounts, groups, or roles: 67

Number of logins: 4

Number of failed logins: 0

Number of authentications: 221

Number of failed authentications: 0

Number of users: 1

Number of terminals: 11

Number of host names: 2

Number of executables: 9

Number of files: 0

Number of AVC's: 0

Number of MAC events: 0

Number of failed syscalls: 0

Number of anomaly events: 16

Number of responses to anomaly events: 0

Number of crypto events: 0

Number of keys: 0

Number of process IDs: 12914

Number of events: 99661

 

 

# ausearch –x cat | aureport –summary

 

ausearch cat komutunun geçtiği audit eventlerinin özet raporunun çıkartılması sağlanır.

 

 

 

Summary Report

======================

Range of time in logs: 05/22/1512804 10:59:45.8968 - 11/03/2011 16:56:47.622

Selected time for report: 05/22/1512804 10:59:45 - 11/03/2011 16:56:47.622

Number of changes in configuration: 0

Number of changes to accounts, groups, or roles: 0

Number of logins: 0

Number of failed logins: 0

Number of authentications: 0

Number of failed authentications: 0

Number of users: 0

Number of terminals: 1

Number of host names: 0

Number of executables: 1

Number of files: 2

Number of AVC's: 0

Number of MAC events: 0

Number of failed syscalls: 0

Number of anomaly events: 0

Number of responses to anomaly events: 0

Number of crypto events: 0

Number of keys: 2

Number of process IDs: 4

Number of events: 12


Audispd

 

Auditd tarafından alınan event’lerin kendi içindeki plugin sistemine aktarıp (Syslog ve AF_UNIX plugin gibi) logların başka yöntemlerle gerçek zamanlı olarak incelenmesini sağlayan bir programdır. Audispd servisi auditd tarafından başlatılır ve sonlandırılır. Auditd.conf dosyası içinden yapılan (dispatcher = /sbin/audispd satırı ile) bu ayar sayesinde auditd dispatcher programını yönetmektedir.

 

 

/etc/audisp/audispd.conf ana yapılandırma dosyası ve pluginler için /etc/audisp/plugins.d/*.conf dosyasını okuyan dispatcher programı belirtilen plugin yöntemlerine göre auditd’den aldığı logları bu pluginlere gönderir. Şu ana kadar fazla gelişmemiş olan bu özellik sayesinde audit eventlerinin real-time olarak farklı programlara yönlendirilmesi amaçlanmaktadır.

 

Yardımcı Sayfalar

 

http://people.redhat.com/sgrubb/audit/visualize/

http://people.redhat.com/sgrubb/audit/

http://www.suse.com/documentation/sled10/pdfdoc/auditqs_sp2/auditqs_sp2.pdf

http://code.google.com/p/aureport-gui/

http://www.cyberciti.biz/tips/linux-audit-files-to-see-who-made-changes-to-a-file.html

Linux Runlevel Çalışma Seviyeleri - Bölüm 1

$
0
0

 

 

 

Redhat türevli Linux işletim sisteminin boot işlemi sırasındaki çalışacak servislere, hangi mod da açılmasına karar verdiğimiz sistem olarak adlandırabiliriz Runlevel ‘ i. Runlevel in Windows ta güvenli mod, güvenli mod ağ desteğiyle, en son açılan düzgün ayarlarım vb. da aç gibi tam olarak işlevleri farklı olsa da bu şekilde düşünebilirsiniz.

 

 

Linux işletim sistemlerinde birden fazla açılış modu bulunmaktadır. Her bir modun çalıştırdığı servisler farklıdır. Her modun çalıştırdığı servislere müdahale edebilir. Açık olan sistemde istediğimiz moda geçiş yapabiliriz. Standart olarak gelen 6 modu değinecek olarsak.

 

 

Runlevel 0 ----- Açık olan sistemi kapatır.

Runlevel 1 -----Kullanıcı gerektirmeden sisteme erişir.

Runlevel 2 ----- Kullanıcı logon gerektirir. Network servisleri çalışmaz.

Runlevel 3 ------Kullanıcı logon gerektirir.CLI (Komut Arayüz) olarak sisteme erişilir.

Runlevel 4 ------Kullanılmamakta dir.

Runlevel 5 ------Kullanıcı logon gerektirir.GUI (Grafik Arayüz) olarak sisteme erişilir.

Runlevel 6 ------Açık olan sistemi yeniden başlatır.

               

 

Genellikle kullandığımız mod lar 1,3,5 dir. Bunlar da 1 single user mode 3 CLI (Command line interface ) 5 GUI (Grafical User Interface ) şeklinde dir. 2 ve 4 mod larını kullanmıyoruz genel olarak ihtiyacımız olduğu takdirde configure edip o şekilde kullanmamız daha doğru olacaktır. 0 ve 6 birisi sistemi kapatır diğeri yeniden başlatır bunun için kritiktir.

 

 

 

image001

 

 

 

Single user mod da sisteme erişerek başlayalım.Singel user mod önemlidir root parolasını unuttuğumuz takdirde konsol dan sisteme erişerek şifreyi değiştirmemize olanak sağlanyan mod dur.

Boot ekranında e ye basarak boot da değişiklik yapalım.

 

 

 

image002

 

 

 

Açılacak olan kernel a gelip e ye basarak edit leyelim.

 

 

 

image003

 

 

 

Hangi mod da açacak sak bunu belirtelim. Single yazabiliriz veya Runlevel değerlerini yazabiliriz. İkisini de kabul edecektir.Single veya 1 yazabilirsiniz.

 

 

 

image004

 

 

 

Kullanıcı gerektirmeden sisteme eriştim bu sayede en çok kullandığımız root parolasının da değişikliğini yapabilirim. Ekran da runlevel yazarak hangi modda açıldığına bakalım.

 

 

Sistemim açılmıyorsa eğer öncelik li olarak mode 1 erişim sağlayabiliyor muyum ona bakarım. Daha sonrasında 3 ve 5 denerim. Örnek verelim mode5 de açılmayan mode 3 de açılan bir sistem için ekran kartında bir sorun olabilir diyebilirim. Mode 5 de grafik sel servisleri çalıştırdığı için onlarda hata almış olabilir.

 

 

 

image005

 

 

 

Çalışan sistemlerde mode lar arası geçiş yapabilirim. Aşağıdaki örnek de putty le bağlandığım için çalışan sistemim mode 5 de fakat konsoldan logon olsaydım eğer grafik ara yüzünden sisteme erişecektim. Mode lar arasında init komutuyla geçiş yapıyorum. İnit 3 dersem eğer runlevel 3 geçmiş olacağım putty den gözükmeyecektir ama konsol dan bu işlemi yapıyorsanız eğer grafiksel işlemlerin kapandığını görebilirsiniz.

 

 

 

image006

 

 

 

İnit 3 dedikten sonra bu ekranda konsol dan.Logon olduktan sonra runlevel diyerek hangi mode da çalıştığımızı görebiliriz.

 

 

 

image007

 

 

 

Runlevel yerine who –r komutunu da kullanabilirsiniz.

 

 

 

image008

 

 

 

Hangi mode da hangi servisleri çalıştığına bakmak istiyorsanız eğer /etc/rc.d nin altındaki rc [0-6].d bulabilirsiniz.

 

 

 

image009

 

 

 

Mode 6 da kapanan veya çalışan servislere bakalım./etc/rc.d/rc6.d nin altındaki dosyaların başındaki harfler bana yapılan işlemi belirtmektedir.K (Kill) durdur , S (Start ) çalıştırır. K veya S den sonraki numaralar ise işlem sırasını belirtmektedir. Mode 6 için konuşuyorduk 2 tane S var gerisi hep K. İnit 6 dediğim zaman olacak işlem S00killall bütün çalışan servisleri durduracak ve bu işlem bittikten sonra S01reboot işletim sistemi yeniden başlatılacak.

 

 

 

image010

 

 

 

Runlevel 3 için ise /etc/rc.d/rc3.d altındakilere bakabilirsiniz.

 

 

 

image011

 

 

 

/etc/rc.d nin altında rc.local i herhangi bir editörle açın.Açtığınız mode daki servisler çalıştıktan sonra buradaki ne tanımlı ise onu da uygulayacaktır.Örnek vermek gerekirse iscsi tanımlamalarınızı rc.local e yazarsanız sisteminiz her açılışta buraya bakacak buradaki tanımları alacaktır.

 

 

 

image012

 

 

 

Açılacak olan sistemimizin runlevel ini değiştirebilmek için /etc/inittab ı bir editörle açın en alttaki id: den sonraki rakamı açmak istediğiniz runlevel numarasını yazınız bundan sonraki her açılışta sizin istediğiniz runlevel seviyesinde açacaktır.

 

 

 

image013

 

 

 

Runlevel ler deki çalışan servislere müdahale etmek için chkconfig komutunu kullanıyoruz.

 

Bir sonraki makalemizde chkconfig işleyeceğiz. Görüşmek üzere.

Linux Chkconfig Servis Yönetimi - Bölüm 2

$
0
0

Redhat türevli Linux işletim sisteminin runlevellarda çalışan servislere müdahale etmek için chkconfig komutunu kullanırız.Hangi runlevel da hangi servislerin çalışmasını istiyorsak bunların konfigürasyonunu yapabiliriz.

 

Chkconfig komutu servislerin çalışmasına direk müdahale etmez yani start veya stop yapmaz servisleri. Yapmakta olduğu işlem ise runlevel ler de çalışacak olan servislerin açılmasını veya durdurmasını sağlar. Bunların dışında xinetd altında çalışan servisleri direk start veya stop yapar.

 

Chkconfig yazdığımız da runlevel lerimizin 0 dan 6 ya kadar servislerin on veya off model arını görebilirsiniz.

 

0:off dan kasıt runlevel 0 da servisin çalışmayacağını gösterir.

 

 

image001

 

 

Chkconfiglist iptables dersek eğer firewallumuzun hangi runlevel da çalışıp çalışmadığına bakabiliriz. Şuan benim sistemimde firewall servisim hiçbir runlevel da çalışmıyormuş.Bütün hepsinde off olarak geldi iptables listelediğimde.

 

 

image002

 

 

Servisleri /etc/init.d nin altında bulabilirsiniz.

 

 

image003

 

 

Chkconfig iptables on yaptığımda 0 ve 6 hariç diğer runleveldaki servisleri on yapacaktır. Servis eğer stop durumdaysa start olmayacaktır.Direk servisi start yapmak için ise service komutunu kullanmak gerekmekte./etc/rc.d/rc[2-5].d/*iptables yaparsanız runlevel 2 den 5 e kadar ki iptables servislerinin S olduğunu görebilirsiniz.

 

 

image004

 

 

Chkconfig iptables off yaptığımda 0 ve 6 hariç diğer runleveldaki servisleri off yapacaktır.

 

/etc/rc.d/rc[2-5].d/*iptables yaparsanız runlevel 2 den 5 e kadar ki iptables servislerinin K olduğunu görebilirsiniz.

 

 

image005

 

 

Herhangi bir runlevel belirtmesek eğer 2-5 arasındaki runlevellarda bu servislere müdahale edecektir. Belli runlevel lar içinde bu işlemi yaptırabilirim.

 

Chkconfiglevel 35 iptables on dersem eğer level 3 ve 5 deki iptablesları on yapar.

 

 

image006

 

 

Aynı şekilde belli runlevelları da off yapabilirim.

 

Chkconfiglevel 35 iptables off dersem level 3 ve 5 deki iptablesları off yapar.

 

 

image007

 

 

Ntsysv komutu da çalışan runleveldaki servisin on veya off yapmamızı sağlar. İstediğiniz servise gelip tikini kaldırabilirsiniz.

 

 

image008

 

 

Aşağıdaki örnek te runlevel 5teyim öncelikli olarak iptables servislerini off yapıyorum. Ntsysv ilen iptables servisin açıyorum ve görüyorum ki sadece çalışan runlevelımdaki servis on durum da.Ntsysv de chkconfig gibi start veya stop yapamaz.

 

 

image009

 

 

Ntsysv ile istediğim runlevel lar değişiklik yapabilirim. Ntsysvlevel 2345 dersem bunlardaki servislerin istediğimi on veya off yapabilirim.

 

 

image010

 

 

Chkconfig servisleri start veya stop yapmayacaktır. Servisleri direk start stop yapmak için services komutunu kullanırız.

 

Bir sonraki makalemizde görüşmek üzere.

 

Linux Service Yönetimi

$
0
0

Redhat türevli Linux işletimlerinde servislere müdahale etmek için daha öncesine chkconfig komutuna değinmiştik.

Chkconfig sistem hangi levelda açılacaksa ondaki servislerin konumunu on veya off yapar fakat servis lerin start veya stop etme işlemi yapmaz demiştik. Bir servisi start veya stop yapmak için service komutunu kullanmaktayız.

Service –status-all dediğimiz de çalışan ve çalıştırmadığımız servisleri listeleyecektir. Çalışan servislerin hepsinin bir pid (process ID) değeri bulunmaktadır. Servisin adı daha sonrasında pidleri görülmektedir.

image001

Öncelikli olarak servis leri start stop ederek başlayalım. Service “ servisin adı “ start-stop-restart-status şeklinde kullanabilirsiniz. Aşağı daki örnek de firewall’un servisini açıyorum daha sonrasında kapatıyorum.

image002

Servislerin hepsini /etc/init.d nin altında bulabilirsiniz. service komutunu kullanmadan da servislerin durumlarına müdahale edebilirsiniz. Hangisi kolayınıza gider ise o şekilde kullanabilirsiniz.

image003

Düzgün çalışmadığını düşündüğünüz bir servisi yeniden başlatmak için service “ servis adı” restart komutunu kullanınız.

image004

Start veya stop yapmadan önce baktığım hep servisin durumudur. Service “servis adı” status yazarak servisiniz durumunu görebilirsiniz. Aşağıdaki örnekte Firewall için bu şekilde gördüğünüz de servis start durumda olduğunu anlayabilirsiniz diğer servisler için is running yada is stopped çıktısını göreceksiniz.

image005

Ps ile de çalışan process’leri bulabilirsiniz. Pid değerini de buradan görebilirsiniz. Pid değerini birde pidof “servis adı “ şeklinde öğrenebilirsiniz. Pid değerini bazen kitlenmiş servisleri direk kill etmek için kullanabilirsiniz.

image006

Umarım yararlı olmuştur.


Linux SSH ve SCP

$
0
0

Bu makalemde host lar arasında SSH (Secure Shell ) güvenli bağlantı ve SCP ( Secure Copy ) güvenli dosya kopyalamasını ele alacağım.

 

SSH hostlar arasında güvenli bağlantı sağlayan bir protokoldür. Scp güvenli kopyalamayı ssh üzerinden yapmaktadır. Bunun için öncelikle ssh-client ın yüklü olup olmadığına bakmanız da fayda var. Bir çok Linux dağıtımı OpenSSH ı kullanmaktadır. Benim üzerinde çalıştığım Centos dağıtımı da OpenSSH kullanmakta #rpm -qa openssh komutuyla hangi sürümünü kullandığını görebilirsiniz.

 

SSH default olarak 22 portunu kullanmakta dır. Conf dosyasında port numarasını değiştirebilirsiniz. SSH servisi runlevel larda start olarak gelmektedir. Kontrol etmek için # ls -l /etc/rc.d/rc[3,5].d/*sshd komutunu kullanabilirsiniz. Çıktısı aşağıda dır.

 

/etc/rc.d/rc3.d/S55sshd -> ../init.d/sshd

/etc/rc.d/rc5.d/S55sshd -> ../init.d/sshd

 

Bu yazıyı hazırlamak için oluşturduğum iki adet hostum var. Yapacağım örneklerde ip adresleri yerine hostnamelerini kullanacağım. Sizde bu şekilde çalışma yapmak isterseniz /etc/hostname mi editörle açın ip adreslerini ve karşılığındaki hostname ni giriniz.

 

Hostlardan bir tanesinde # ssh-keygen komutunu veriyorum karşılığında benden parola girmemi istiyor ama ben hostlarım arasındaki bağlantı da parola kullanmayacağım için buraları enter layarak boş bırakıp geçiyorum. Public ve Private key ler oluşturulur.

 

 

image001

 

 

Oluşan dosyalar. ssh ın altındadır. Bu dosyaya gidip public key ‘in olduğu dosyayı kopyalamamız gerekiyor. Pub dosyasını authorized_keys dosyasına kopyalıyorum.

 

 

image002

 

 

Şuana kadar daha bağlantı yapmadık. Bilinen host dosyasının oluşması için hostlara sırasıyla ssh la bağlantı yapıyorum.

 

 

image003

 

 

image004

 

 

.ssh dosyasının altında known_hosts dosyasının oluştuğunu ve içeriğine baktığımda iki hostuma ait bilgilerin girildiğini kontrol ettim. Herhangi bir editörle known_hosts dosyasını açıp bakabilir ya da cat komutunu kullanabilirsiniz.

 

 

image005

 

 

.ssh dosyasının içine gittik ten sonra scp ile buradaki dosyalarımı diğer hostuma gönderiyorum. Scp komutuna değineceğim.

 

 

image006

 

 

Diğer sunucumdaki .ssh dosyasına baktığımda scp ile gönderdiğim dosyalarımı görebildim. Bu zamana kadar yaptığımız bütün işlemlerde şifre kullandık.

 

 

image007

 

 

Hostlar arasında ssh bağlantısını denediğimde artık bana şifre sormadığını görmekteyim bunun sebebi de hostlar arasında paylaştırdığım key dosyalarıdır.

 

 

image008

 

 

Aynı şekilde güvenli kopyalamayı da denediğim zaman bana şifre sormamaktadır.

 

Scp komutuna değinelim.

 

Scp (göndermek istediğim dosya) (kullanıcı adı)@(hostname yada ip ): (dosyanın kopyalanacağı yeri)

 

Buna göre aşağıdaki örnek de install.log dosyasını logserver daki root kullanıcısının /kur dosyasının içine atıyorum.

 

 

image009

 

 

Logserver daki /kur dosyasının içine baktığımda install.log dosyası gelmiştir.

 

 

image010

 

 

Scp ile güvenli dosya paylaşımı yapabilirsiniz hostlarınız arasında.

 

Yukardaki örnekte Public key ve Private key dosyalarımı paylaşarak yaptım 2 den fazla hostunuz için bu işlemi yapacaksanız sadece public key dosyanızı paylaşınız.

 

Bunu yapmak içinde her hostunuzda ssh-keygen komutunu çalıştırarak public key ler üretiniz. Ürettiğiniz public key i authorized_keys dosyasına kopyalayın. authorized_keys dosyasını editörle açın ve her hostun public keyini bir yerde authorized_keys dosyasında toplayın bunuda scp ile hostlarına paylaştırdığınız vakit hostlarınız arasında güvenli ve şifresiz bağlantı kurabilirsiniz.

 

Linux File System - Linux Dosya Sistemleri - Bölüm 2

$
0
0

Dosyalarımız fiziksel depolama alanları üzerinde tutulur.Bu alanlar bilgisayarımızdaki dahili harddisk ,harici hard diskimiz ,CD/DVD ROM,SAN,NAS.. gibi biçimlerde olabilir. Peki bu alanlardaki bilgilere nasıl erişiriz sorusunun cevabı File System(Dosya Sistemi) oluyor arkadaşlar. File System olmadan depolama alanına ne bir şey kopyalayabiliriz, ne paylaştırabiliriz, ne güvenlik ve erişimini sağlayabiliriz ne de herhangi bir şekilde kullanabiliriz. İşletim sistemimizin verilere erişimi için yine onun bileceği bir biçimde diski biçimlendirmeliyiz. Nasıl ki Windows ortamlarında diskimizi biçimlendirirken NTFS dosya sistemini kullanıyorsak, Linux vari işletim sistemlerinde de ext2,ext3,ext4 gibi dosya sistemlerini kullanıyoruz. Linux işletim sistemi birden fazla dosya sistemine destek verir. File System tarafında güçlü olmasında çoğu kişinin hemfikir olduğu noktadır. Şimdi sırasıyla Linux’un dosya sistemi gelişim seyrini ve diğer destek verdiği dosya sistemlerini inceleyelim.



ext2,ext3,ext4 à Linux dosya sistemleri(native file systems-kendi üzerinde geliyor)

 

·         Extendend File System (extfs); 1992 yılında Linux için Minix File System’deki(MFS) yetersizliklerden dolayı ilk geliştirilmiş dosya sistemidir. MFS’de dosya isimleri en fazla 14 karakter, maksimum dosya boyutu da 64MB olabiliyordu. Sonrasında extfs2,3,4 diye geliştirmeleri devam etmiştir. Günümüzde kullanılmıyor diyebiliriz.

 

·         Second Extended (extfs2); extfs’in performans eksiklikleri ve geliştirilmesi gerekliliği sebebiyle 1993 yılında yeni bir tasarım anlayışıyla Virtual File System(VFS) mantığı getirilerek dosya sistemi işlemleri sistem çekirdeğinden çıkartılmış araya VFS’le çekirdekle diğer dosya sistemleri arasına bir ara yüz eklenmiştir.VFS sayesinde sistem çekirdeği sadece dosya işlemleri için VFS’le muhatap oluyor ama VFS’in önüne kim gelirse gelsin aynı şekilde isteyeceği için VFS bu istekleri anlamakta zorluk çekmiyor. Extfs2 dosya sistemi journaled(günlüklü) dosya sistemi değildir. Bu yüzden USB flash tipi veya solid state disks (SSD) gibi depolama alanlarında yüksek hız ve performans sağlar.extfs2 dosya sisteminde bir dosyanın maksimum boyutu 2GB ,dosya ismi de 255 karakter olabilir.

 

·         Third Extended(extfs3);2001 yılında 2.4.15 Linux kerneline dahil olan extfs3 dosya sisteminin extfs2’den farkı journaling meselesi, online FS büyütebilme ve büyük dizinler için HTree indeksleme mekanizması getirmesidir. Journaling ne derseniz ; Sistemimizde disk üstünde bir işlem yapılacağı zaman, diskin kendi üstünde bir değişikliğe gitmeden önce bütün istekleri bit bit, byte byte bir yere yazdığını ve sırasıyla uyguladığını düşünebilirsiniz. Herhangi bir felaket anında(elektrik kesilmesi gibi) disk üstündeki verilerinizin tutarsız kalmaması için alınmış bir önlemdir ve data kurtarma konusunda yine sistem içinde bulunan araçlarıyla(fsck,..) hayatınızı kolaylaştırır. Extfs2 dosya sistemlerinizi rahatlıkla extfs3 tipine dönüştürebilirsiniz.

 

·         Fourth Extended(extfs4); 2006 yılında Theodore Ts'o tarafından geliştirilen,2008’de daha kararlı yapıya kavuşan extfs4 Redhat Enterprise Linux Server ve Centos Ailesinin 6.x sürümlerinde de gelmeye başladı. Theodore bu geliştirmeden sonra 2010 yılında Google’a geçti ve Google kendi sunucularında ayrıca Android İşletim sistemlerinde extfs4’ü dosya sistemi olarak kullanmayı piyasada var olan rakip dosya sistemlerinden daha iyi test sonuçları verdiği için tercih etti.extfs3’te journallemede olmayan bit checksum meselesi extfs4’de işler hale getirildi.Geliştirmeleri devam ettiği için Windows ve Mac OS’la uyumluluk çalışmaları devam etmektedir.

 

Microsoft File Systems; Msdos,vfat,fat,ntfs à MS-DOS ve Windows dosya sistem türleri


Linux ortamından Msdos,fat ve vfat dosya sistemleri için ekstra bir şey yapmadan erişme imkanınız olabilir ama NTFS dosya sistemi için Linux sisteminize ,yine aynı şekilde extfs2,extfs3 için ise Windows ortamına driver yüklemeniz gerekli olacaktır.Mesela bknz.
JFS,JFS2
à OS/2 ve IBM Aix Unix işletim sisteminin günlüklü dosya sistemleridir. Linux kernelinizde modülünüz var ise veya sonradan driver yükleyerek bu dosya sistemlerine de Linux’unuzdan erişebilirsiniz.

 

Network FileSystems; Ağ üstünden dosya paylaşımı için yaygın olarak kullanılan NFS ve Samba mevcuttur.


NFS; Unix ve Linux platformlar arası dosya paylaşımı için kullanılan dosya sistemidir.Linux kerneli hem NFS server olarak hem de NFS client olacak şekilde bir yapıya sahiptir. Yani hem ağda diğer Unix&Linux sistemlere dosya paylaşabilir hem de paylaşılan dosyalara rahatlıkla erişebilirsiniz.


SMB(CIFS); Server Message Block (SMB) protokolü sonradan Core Internet File System (CIFS) olarak işim değiştirmiştir ve Microsoft işletim sistemi ailesinin kendi arasında dosya paylaşımı için kullanılan dosya sistemidir. Eğer Linux sisteminizde Samba paketiniz var ise Linux sisteminizden Windows ailesine dosya paylaşabilir veya paylaşılanları görebilirsiniz.

 

ISO-9660; Sadece CD-ROM içinde kullanılan dosya sistemidir.

 

Peki,iyi güzelde benim Linux sistemim bu dosya sistemlerine destek veriyor mu? Nasıl bilirim derseniz iki yoldan bakmak gerek;


Öncelikle sistem kernelimizin sürümüne bakıyoruz ve sonrasında bizde hali hazırda var olan dosya sistemi modüllerini görüyoruz;

 

[root@artemis fs]# uname –a
Linux artemis 2.6.18-238.19.1.el5 #1 SMP Fri Jul 15 07:32:29 EDT 2011 i686 i686 i386 GNU/Linux
[root@artemis fs]#
ls -l /lib/modules/2.6.18-238.19.1.el5/kernel/fs/

total 116

drwxr-xr-x 2 root root 4096 Sep 12 20:53 autofs4

drwxr-xr-x 2 root root 4096 Sep 12 20:53 cachefiles

drwxr-xr-x 2 root root 4096 Sep 12 20:53 cifs

drwxr-xr-x 2 root root 4096 Sep 12 20:53 configfs

drwxr-xr-x 2 root root 4096 Sep 12 20:53 cramfs

drwxr-xr-x 2 root root 4096 Sep 12 20:53 dlm

drwxr-xr-x 2 root root 4096 Sep 12 20:53 ecryptfs

drwxr-xr-x 2 root root 4096 Sep 12 20:53 exportfs

drwxr-xr-x 2 root root 4096 Sep 12 20:53 ext3

drwxr-xr-x 2 root root 4096 Sep 12 20:53 ext4

drwxr-xr-x 2 root root 4096 Sep 12 20:53 fat

drwxr-xr-x 2 root root 4096 Sep 12 20:53 freevxfs

drwxr-xr-x 2 root root 4096 Sep 12 20:53 fscache

drwxr-xr-x 2 root root 4096 Sep 12 20:53 fuse

drwxr-xr-x 3 root root 4096 Sep 12 20:53 gfs2

drwxr-xr-x 2 root root 4096 Sep 12 20:53 hfs

drwxr-xr-x 2 root root 4096 Sep 12 20:53 hfsplus

drwxr-xr-x 2 root root 4096 Sep 12 20:53 jbd

drwxr-xr-x 2 root root 4096 Sep 12 20:53 jbd2

drwxr-xr-x 2 root root 4096 Sep 12 20:53 jffs2

drwxr-xr-x 2 root root 4096 Sep 12 20:53 lockd

drwxr-xr-x 2 root root 4096 Sep 12 20:53 msdos

drwxr-xr-x 2 root root 4096 Sep 12 20:53 nfs

drwxr-xr-x 2 root root 4096 Sep 12 20:53 nfs_common

drwxr-xr-x 2 root root 4096 Sep 12 20:53 nfsd

drwxr-xr-x 2 root root 4096 Sep 12 20:53 nls

drwxr-xr-x 2 root root 4096 Sep 12 20:53 squashfs

drwxr-xr-x 2 root root 4096 Sep 12 20:53 udf

drwxr-xr-x 2 root root 4096 Sep 12 20:53 vfat

 


Bu listede Linux sistemimizde var olan modulleri gördük ama bu modüller , şu an ki kernelimizin içinde yüklenmemiş olabilir veya sizin çalışmak istediğiniz dosya sisteminin modülü hiç yoksa kernelimize uygun şekilde derleyip o modülü kernelimize eklememiz gerekir. Kerneldeki modülleri görmek istiyorsak;



[root@artemis fs]# cat /proc/modules à Komutu size yardımcı olur.

 

[root@artemis fs]# cat /proc/modules |grep ext à Mesela bizde ext3 dosya sisteminin modülü şu an kernelimizde yüklü,görebiliyoruz

ext3 125385 3 - Live 0xe08e6000

jbd 57321 1 ext3, Live 0xe086a000

[root@artemis fs]#

[root@artemis fs]# cat /proc/modules |grep fat à Fakat FAT için modül sistemde var olmasına rağmen kernelde yüklü görünmüyor.

[root@artemis fs]#

 


Linux sistemlerde dosya sistemleri ile çalışırken bazı hatırlatmalar;

 

·         Linux&Unix sistemlerde her şey birer dosyadır. Bir şey dosya değilse o process’tir diye bir deyiş vardır. Diskler(devices-aygıtlar), bütün kartlar(network, storage kartları) vb.

 

·         Bir dosya ismi 256 karakterden uzun olamaz(ext3 ve ext4) ve de dosya uzantısı diye bir kavram yoktur, örneğin örnek.txt ismindeki bir dosyadaki “.txt” uzantısı Linux da dosyanın ismine dahil edilir ama onun bir text dosyası olduğunu göstermez.

 

·         Dosya isimlendirmelerinde bazı özel karakterler dışında bütün alphanumeric karakterler kullanılabilir(ext3 ve ext4).Ama tavsiye olarak büyük-küçük harfler ve sayıları kullanmanız yeterlidir, boşluk kullanmayın.

 

·         Bir dosyanın büyüklüğü 16G ile 2TB arasında olabilir(ext4’de 16TB’a kadar çıkabilir)

 

·         Bir mantıksal hacim grubunun(Volume Group-VG) maksimum büyüklüğü ext3’de 32 TB,ext4 file sistem’inde 1EB’ye kadar teorikte çıkabiliyor.

 

·         Sistemdeki diskleri görmek ve üzerinde işlem yapmak için temel olarak fdisk komutu kullanılır. Disklerle Create Partition(bölümlendirme), format, delete yapılabilir. Disk kullanımını görmek için df ve du kullanılır. İleri seviyede diskler üstünde işlem yapılacak ise diskler LVM yönetimine devredilip, LVM’le yola devam edilir.

 

·         File System, genel sisteme eklenecekse/bağlanacaksa mount komutu kullanılır, sistemden bağlantısını kaldırmak için umount komutu kullanılır. Mount’un kelime anlamı bağlamak şeklinde anlayabiliriz.

 

·         Dosyaların ve dizinlerin üzerinde işlem yaparken File System ağaç yapısında path(yol) olarak absolute path(tam yol) ve relative path(göreceli yol) kavramları, genel olarak komutların yardım ve kılavuz sayfalarını okumak için man, help,bu pathlerle dizin değiştirmek istenildiğinde cd,File System ağacında nerede olduğumuzu görmek için pwd,boş bir dosya(File) oluşturmada touch,boş bir dizin(Directory) oluşturmada mkdir, ne olduğunu anlamada file,dosyaları okumada cat,more,less,head,tail,kopyalamada cp,taşımada ve isim değiştirmede mv, listelemede ls,dosyaları ve dizinleri silmede rm ve sadece içi boş dizinleri silmede rmdir, sembolik ve hard linkde ln,symlinks,durumlarını görmede stat ve lsof, arşivlenmek istendiğinde tar, sıkıştırılmak istendiğinde zip,arama yapılırken find, dosyalarda pattern(kavram) araması yapılıyorsa grep(egrep,fgrep) kullanılır. Bir sonraki makalemizde bu temel komutlar detaylı bir şekilde incelenecektir.

 

Şimdi de Unix&Linux dosya sisteminde file,i-node, directory, superblock kavramlarını açıklamamız gerekiyor.

 

File; Sisteme kaydettiğiniz verilerin kendisidir. Bu bir mp3 dosyası,txt ascii text dosyası,binary dosya,pdf dosyası olabilir. Aslında bütün dosyalarımız disk üstüne 0 veya 1 olarak kaydediliyor ama yorumlanış kısmında işler değişiyor.ascii text ise farklı bir şekilde yorumlanıyor,mp3 dosyası ise farklı şekilde yorumlanıyor.binary/executable bir dosya ise sistem onu bir emirler dizisi olarak algılayıp içindekileri çözmeye çalışıyor ve execute ediyor.

 

i-node; dosya sistemindeki her nesne i-node (index node) ile gösterilir.Bunu bir etiket olarak düşünebilirsiniz. File System’de her dosya ve dizinin eşsiz bir i-node numarası bulunur. inode da dosyanın ismi ve File System ağacında nerede olduğu bilgisi tutulmaz,tutulan bilgiler ise aşağıdaki gibidir;

 

Dosyanın türü

Dosyanın izinleri(r-okuma,w-yazma,x-çalıştırma)

Dosyanın sahibi ve grubu

Dosyanın boyutu

Dosyanın Access,change,modification zaman etiketleri

Dosyanın silinme zamanı

Link sayısı(soft veya hard link)

Access Control List(ACL) bilgisi

Dosyanın disk üstünde hangi blockta olduğu bilgisi

Locking bilgisi,kullanımda olduğu zaman “kullanılıyor diye dosyayı locklar”

 

Dolayısıyla bu bilgilerle biz dosyanın ne olduğunu ve özelliklerini tutmuş oluyoruz. Peki dosya isimleri i-node da tutulmuyorsa dosyaların i-node ve ismini nerede tutacağız, bunları nerede gruplayacağız? Bu sorunun cevabı da directory oluyor.

 

Directory (dizin); Bize içinde bulunan nesneleri i-node ve isimleriyle gruplamamıza yardımcı olan File System yapısıdır.Aslında bu haliyle özel dosyalardır diyebiliriz.Dizin içinde ayrıca bir üst dizini gösteren “ .. ” ve kendini gösteren “. “ dizinciklerde bulunur.

Dizinler ikiye ayrılır

 

Root Directory (/); Her File System’de sadece bir tane Root(/) dizini bulunur. File System’i bir ağaç gibi düşünecek olursak ağacın kökü Root(/) dizinidir.

 

Sub Directory; Root dizinin altındaki her dizin bir alt dizin olarak geçer.

 

Superblock;Bir File System’in karakteristik özellikteki bilgilerini tutan yapıya superblock denir. Superblock ihtiva ettiği bilgiler nedeniyle hayati önem taşımaktadır. Bu önem itibariyle kopyaları disk üstünde birden fazla noktada tutulur. İçindeki bilgiler ise;

 

File System’in boyutu

Block size(Block boyutu)

Dolu ve boş olan bloklar

İnode tabloların boyutları ve nerelerde olduğu bilgisi,ilk i-node’un nerede olduğu

Diskin block dağılımı ve kullanım bilgisi

Blok gruplarının boyutu ve bilgisi

 

 

image001

 

 

Şekil-1 Linux Native Dosya sistemlerinden ext2 gibi bir File System’in disk üzerindeki durumu

 

Şekil-1’de gördüğümüz gibi, diskimizin ilk bölgesi boot bölümünü oluşturuyor ve sonrasında disk block group’lara bölünüyor. Diskin bloklarının sayısı ve uzunluğu aslında diski biçimlendirirken

İşletim sistemine belirttiğimiz paremetreler arasında. Herhangi bir bloğu açarsanız File System’in karakteristiğini tutan dediğimiz SuperBlock ları her block başında göreceğiz.Güvenlik için her Block Group’unda yer alırlar.Sonra bu grubun disk üzerinde nerde başlayıp, nerede bittiği, ne kadarının kullanıldığı bilgileri group descriptors bölümünde görürüz.Inode bilgileri Inode Map ve Inode Table bölümlerinde tutuluyor.Block group’unun en sonunda verimizi sakladığımız Data Block’un yer aldığını görüyoruz.

 

 

 

image002

 

 

Şekil-2 Data Block’ta Dir1 dizinin içeriği ve bu içeriğin Inode Bilgilerindeki Yerleşimi

 

Disk üstüne sanki bir mikroskopla bakabildiğinizi düşünün ve DIR1 isimli dizinin bölgesine baktığımızı hayal edin. Bu dir1 isimli dizinin içinde dizin tanımında bahsettiğimiz gibi (sözde)içinde olan dosyaların isimleri ve inode numaraları yazacak. Sonra o numaraları Inode Table kısmında tablodaki yerine ve dosyaların inode bilgilerine bakalım. Görecekleriniz aynen bu şekil-2deki gibi olacaktır.Detay için bknz.

 

Dolayısıyla Dosya sistemi (File System) denilince hangi işletim sisteminde olursanız olun genellikle iki anlam çıkartılıyor;

 

Birincisi ; Sistem tarafından bakarsak şekil-1 ve şekil-2’deki gibi dosya ve dizinlerin, herhangi bir depolama(Storage) alanının üzerindeki yerleşimi, ulaşımı, sıkıştırılması, kriptolanması, günlüklenmesi ve kullanılması.

 İkinci olarak kullanıcı tarafından bakıldığında mantıksal olarak dosya ve dizinlerin hiyerarşik ters bir ağaç görünümü veya herhangi mantıksal bir şekilde veri ağacı oluşturmasıdır.

 


image003

 

Şekil-3 Linux&Unix Sistemlerde File System’in Genel Ağaç Görünümü

 

Şimdi hiyerarşik ağaç görünümünde olan File System altında hangi önemli dizinler yer almakta sırasıyla kısa kısa onları inceleyeceğiz. Genel yapı çizim olarak aşağıda gösterilmiştir.

 

/:

 

Kök dizini,root of File System olarak geçen File Sistem’in ilk başlangıç noktasıdır.Linux sistemde yer alan bütün dosya ve dizinler /’un altında yer alır. Bunu ne sistemdeki süper yetkili kullanıcı root’un ev dizini olan/root ile ne de root (superuser) kullanıcısının kendisi ile karıştırmamak gerek.1994 yılında Linux topluluğu tarafından kabul edilen File System Hierarchy Standart (FHS) /’un içinde ne bulundurulması ve nasıl olması gerektiğini bildirmiştir.Buna göre;

 

 / işletim sistemini boot ettirebilmek ve diğer file system’leri mount edebilmek için gerekli olan bütün araçlara ve dosyalara sahip olmalıdır.

 

Sistem yöneticisi için yani root(superuser) için sistemi kurtarmaya yönelik gerekli araç ve gereçleri barındırmalıdır.

 

Olabildiğince boyutu küçük olmalıdır. Çünkü büyük boyutlu file system’lerin kurtarılması her zaman zor olur ve çok zaman alır.Ayrıca / içinde hızlı büyüme riski olan veya paylaşımlı dosyalar olmaması gerekir. Çünkü / fiziksel olarak dolu olması işletim sistemine zarar verebilir.

 

Sisteme kurulan diğer yazılımlar / altına direk olarak dosya koymamalıdırlar.

 

Bu kurallara göre /’u içinde bulunduran disk bölümü(Partition) bu dizinleri mutlaka içermelidir. /bin,/dev,/etc,/lib,/sbin

 

/root:

 

Linux&Unix sistemlerde süper yetkili kullanıcı root’tur. Sistemde her şeyi yapmaya yetkisi mevcuttur. Bu root kullanıcısının ev dizini olarak /root kullanılır.

 

/home:

 

Sistemde yer alan kullanıcıların ev dizinleri bu /home dizinin altında yer alır. Biz sistemimizi kurarken cozumpark kullanıcısı eklemiştik,cozumpark kullanıcısının ev dizini /home/cozumpark olmaktadır.

 

/proc:

 

Sanal ve memory’de yer alan bir FS parçası olup,tamamen kernel’in (işletim sistemi çekirdeği) ve sistemde çalışan process’lerin (süreçlerin,servislerin) bilgilerini tutan bir dizindir. /proc disk üstünde yer almaz ,memory’de yer alır.

 

Dosyalar(Files)

Açıklama

/proc/num

Num yerine sistemde çalışan process’lerin dizinleri yer alır. Mesela sistemdeki 2398 pid’li processin dizini /proc/2398 dur.

/proc/cpuinfo

Sistemde var olan CPU sayısını,tipini,modelini belirtir.

/proc/devices

Kernelde çalışan aygıt(device) sürücülerini listeler.

/proc/filesystems

Kernelde yer alan File systemleri(FS) gösterir.

/proc/ioports

I/O portlarından hangisinin kullanıldığını gösterir.

/proc/kcore

Fiziksel memory’nin imajını tutar.

/proc/kmsg

Kernel tarafından üretilen mesajları gösterir.

/proc/loadavg

Sistemin ortalama load’ unu gösterir.

/proc/meminfo

Sistemdeki memory ‘i ve memory kullanım bilgisini gösterir.

/proc/modules

Kernelde yüklü olan modülleri gösterir.

/proc/net

Network protokollerini gösterir.

/proc/stat

İşletim sistemi istatistiklerini gösterir.

/proc/uptime

Sistemin ne kadar süredir ayakta olduğunu gösterir.

/proc/version

Kernel versiyonunu gösterir.

 

 

/bin:

 

Sistem yöneticisi ve kullanıcılar tarafından kullanılabilen çalıştırılabilir programların/komutların/binary dosyaların olduğu dizindir.

 

/dev:

 

Sistemdeki device’lara(aygıtlara, disk ve terminal gibi) erişmek için gerekli olan dosyaların yer aldığı dizindir.

 

Aygıt İsmi(Device Name)

Açıklama

hd

IDE disk sürücülerini belirtir; 1–4 primary bölümlere; 5 ve sonrası logical bölümlere işaret eder.

sd

SCSI disk sürücülerini belirtir. Sisteme disk ekledikçe sda,sdb,sdc şeklinde isimlendirme devam eder.

scd

SCSI CD-ROM sürücüleri

fd

Floppy diskleri

st

SCSI tape sürücüleri

tty

Terminals,sistemde var olan terminaller tty1,tty2.. isimlendirmesiyle devam eder.

lp

Printer ports,printer portlarını ifade eder.

ttyS

Serial ports,sistemdeki seri portları ifade eder.

md

RAID devices,RAID aygıtlar varsa onları belirtir.

cdrom

CD-ROM device dosyasına linktir.

cdwriter

CD-R veya CD-RW device dosyasına linktir.

modem

Modem device dosyasına linktir.

floppy

Floppy device dosyasına linktir.

tape

Tape device dosyasına linktir.

scanner

Scanner device dosyasına linktir.

 

 

/etc:

 

Sistemdeki bütün yapılandırma dosyaları burada yer alır. Bu dizin sistem açılırken ve sonrasında gerekli ayarları/tuning yapabilmek için önemli dosyaları barındırır.

 

/lib:

 

Ortak kütüphanelerin (Shared libraries) ve Kernel modüllerinin yer aldığı dizindir./bin ve /sbin altındaki binary’ler bu kütüphaneleri kullanırlar.

 

/boot:

 

Sistemi boot etmek için gerekli olan dosyaların olduğu bölümdür. LILO ve GRUB gibi sistemi boot eden programlar /boot dizinindeki dosyaları okurlar.

 

/mnt:

 

Genellikle sisteme geçici olarak bağlanacak(mount etmek) usb stick,cdrom,external hard disk,Floppy gibi aygıtlar için geçici mount etme bölgesidir.

 

/opt:

 

Linux İşletim sistemi üreticileri tarafından kullanılmayan ama başka şirketlerin Linux’a herhangi bir yazılım kurulumu yapacaklarında kullandıkları dizindir.

 

/sbin:

 

Sistem yöneticisi için gerekli olan çalıştırılabilir programların/komutların/binary dosyaların olduğu dizindir.

 

/tmp:

 

Geçici dosyaların olduğu dizindir. Sistem veya kullanıcılar burada istedikleri gibi dosya/dizin oluşturup silebilirler.Sistem boot ettikten sonra silinme ihtimali vardır.

 

/usr:

 

/ altında yer almayan sistem ve kullanıcılar için gerekli olan diğer dosya ve programlar bu dizin altında yer alır. Örnek vermek gerekirse;

 

Dizin(Directory)

Açıklaması

/usr/bin

Sistemdeki kullanıcılar için gerekli olan binary dosyalar ve gerekli araçlar burada bulunur.

/usr/sbin

Sistem yöneticisinin çalıştırdığı binary dosyalar burada bulunur.

/usr/lib

Uygulamalar,programlama dilleri için gerekli olan kütüphaneler(libraries) buradadır.

/usr/games

Oyun dosyaları burada tutulur.

/usr/include

C ve C++ programlama dillerinin header (.h) dosyaları burada tutulur.

/usr/doc

Linux dokümantasyonu burada tutulur.

/usr/local

Lokalde kurulu olan uygulamalar öncelikle bu path altına kurulur.

/usr/share

Mimari bağımsız dosyaların,genellikle dokümantasyon ve genel ayarlar için kullanılan bir bölümdür.

/usr/src

Kaynak dosyalarının tutulduğu yerdir.

/usr/X11R6

X Windows Sisteminin kütüphane ve uygulama dosyalarının olduğu bölümdür.

 

 

/var:

 

Sistem log dosyaları, yazıcı dosyaları, mail ve yazıcı queue(kuyrukları) ları yer alır. Gittikçe büyüyebilen bir dizin olduğu için /var dizinin / ile aynı disk bölümü üstünde olmaması bir avantajdır.

 

Dizin(Directory)

Açıklama

/var/cache

Yardım sayfaları,web Proxy bilgileri,fontlar,bazı uygulamaların özel geçici bilgileri burada tutulur.

/var/crash

Sistem crash dump ‘larının tutulduğu yerdir.

/var/games

Sistemde kurulu olan oyun bilgilerinin tutulduğu yerdir.

/var/local

/usr/local altına kurulan programlar için değişen data’ların tutulduğu yerdir.

/var/lock

Özel bir dosya veya program kullanılırken sistemin o dosya veya program üstüne lock koyduğunu belirten dosyalar burada yer alır.

/var/log

Sistem loglarının tutulduğu bölgedir. Mesela /var/log/messages kernel ve diğer sistem uygulamalarının log attığı dosyadır.

/var/mail

Kullanıcıların mailbox dosyaları yer alır.

/var/opt

/opt dizini altında kurulu olan programlar için değişebilir verilerin tutulduğu yerdir.

/var/run

Sistemde çalışan process’lerin bilgilerinin tutulduğu yerdir.

/var/spool

mail, haber ve yazıcı kuyruğun daki dosyalar burada bulunur.

/var/tmp

Geçici dosyaların tutulduğu yerdir.

/var/www

Web server’a ait web sayfalarının/dosyalarının tutulduğu yerdir.

/var/ftp

FTP server’a ait FTP dosyalarının tutulduğu yerdir.

/var/named

DNS Server’a ait Domain konfigürasyon dosyalarının tutulduğu yerdir.

 

 

 

image004

 

Şekil-3 File System Genel Yapısı

 

File System İşlemlerinde İki Önemli Dosya ve İki Önemli Komut

 

/etc/fstab dosyası; Linux system boot ederken hangi disk üstünde hangi dosya sistemi ne gibi özelliklerle yer alacağı bilgisini bu dosyaya bakarak bilir. Sistem açılırken hayati önem taşıyan ve içeriği bozulmamış olması gereken bir dosyadır. Her satır bir dosya sistemini gösterir ve # işareti ile başlayan satırlar comment olarak ele alınıp göz ardı edilir.


device; Disk veya bir bölümü temsil eder.Mount edilecek kısım nereye mount edilecekse o aygıtı gösterir.


Mountpoint; Adı üstünde mount noktasını gösterir. Mesela bizim örneğimizde “/ “dosya sistemi “/dev/VolGroup00/LogVol00” üstüne mount edilecektir.


Fs; Mount edilecek dosya sisteminin türü nedir, extfs2,extfs3 gibi.


Options; Dosya sistemi mount edilirken ne gibi özelliklere sahip olacak.Dosya sistemini mount ederken kullanabileceğimiz seçenekler aşağıdaki gibidir.

 

async veri okuma ve yazma asenkron olacak
atime dosyaya erişildiğinde dosyanın inode bilgisini değiştir,güncelle
auto harici birimler için standart formattır.Sistem boot edince veya mount –a komutu verilince dosya sistemleri otomatik mount olur.
defaults rw,suid,dev,exec,auto,nouser,async -- > defaults dediğinizde bu seçenekler gelmiş olur.
dev aygıtlara(devices) erişim hakkı verilmesi
exec binary dosyaların execute edilebilmesi
noatime dosyaya erişildiğinde inode bilgisini güncelleme
noauto dosya sistemi elle mount edilmelidir.
nodev aygıtlara(devices) erişim hakkı verilmemesi
noexec binary dosyaların execute edilememesi
nosuid setuid ve segid özelliklerinin kullanılamaması
nouser sadece root kullanıcısının dosya sistemini mount edebilmesi
remount dosya sisteminin tekrar mount edilebileceği
ro read only,sadece okunabilir.
rw read and write,okuma ve yazma yapılabilir.
suid setuid ve segid özelliklerinin kullanılabilmesi
sync okuma ve yazmanın aynı anda yapılması
user başka kullanıcıların(root harici) dosya sistemini mount edebilmesi

 


dump; 0 veya 1 olur, dump aracının çalıştırıldığına belirtilen dosya sisteminin dump’ını alıp almayacağını belirtir.


fsck; Dosya sistemi üzerinde fsck(dosya sistemi kontrol aracı) yapılacak ise bunun öncelik sıralaması ne olacağına dairdir.Genelde “/” dosya sisteminin değeri 1 diğerlerinin ki sırayla 2,3,4 şeklinde devam eder.Ama diğer dosya sistemleri zaten ext3,ext4 tipinde ise bunların fsck değeri 0 olmalıdır çünkü bu dosya sistemleri zaten sistem açılırken otomatik olarak fsck yaparlar.

 


[root@artemis ~]# cat /etc/fstab

#device mountpoint fs options dump fsck
/dev/VolGroup00/LogVol00 / ext3 defaults 1 1

LABEL=/boot /boot ext3 defaults 1 2

tmpfs /dev/shm tmpfs defaults 0 0

devpts /dev/pts devpts gid=5,mode=620 0 0

sysfs /sys sysfs defaults 0 0

proc /proc proc defaults 0 0

/dev/VolGroup00/LogVol01 swap swap defaults 0 0

/dev/sdb5 swap swap defaults 0 0

 

/etc/mtab dosyası; Bu dosyada sistemde şu an var olan mount edilmiş dosya sistemleri tutulur. /etc/fstab dosyasından farkı umount edilmiş dosya sistemlerini tutmamasıdır.

 

 

 

[root@artemis ~]# cat /etc/mtab

/dev/mapper/VolGroup00-LogVol00 / ext3 rw 0 0

proc /proc proc rw 0 0

sysfs /sys sysfs rw 0 0

devpts /dev/pts devpts rw,gid=5,mode=620 0 0

/dev/sda1 /boot ext3 rw 0 0

tmpfs /dev/shm tmpfs rw 0 0

none /proc/sys/fs/binfmt_misc binfmt_misc rw 0 0

none /proc/fs/vmblock/mountPoint vmblock rw 0 0

sunrpc /var/lib/nfs/rpc_pipefs rpc_pipefs rw 0 0

 

 

df komutu; (df- disk free) Sisteme mount edilmiş dosya sistemlerinin fiziki olarak kullandıkları boş ve dolu alan oranlarını gösterir.

 

[root@artemis ~]# df -k

Filesystem 1K-blocks Used Available Use% Mounted on

/dev/mapper/VolGroup00-LogVol00

6983168 3151392 3471328 48% /

/dev/sda1 101086 25130 70737 27% /boot

tmpfs 257452 0 257452 0% /dev/shm

[root@artemis ~]#

[root@artemis ~]# df -h

Filesystem Size Used Avail Use% Mounted on

/dev/mapper/VolGroup00-LogVol00

6.7G 3.1G 3.4G 48% /

/dev/sda1 99M 25M 70M 27% /boot

tmpfs 252M 0 252M 0% /dev/shm

 

 

du komutu ; (du-disk usage) Bir dosyanın,dizinin,dosya sisteminin(FS’in) disk üstünde kapladığı alanı bulmak için kullanılan komuttur. Mesela sistemimizde var olan /boot FS’inin disk üstünde kapladığı alana bakmak istersek aşağıdaki gibi bir komut kullanabiliriz.

 

[root@artemis ~]# du -sm /boot

20 /boot

 

 

[root@artemis boot]# du -s *|sort –n -- > Herhangi bir dizin altındaki dosya ve dizinleri boyut ve isime göre sıralamak

 

12 lost+found

70 config-2.6.18-238.12.1.el5

70 config-2.6.18-238.19.1.el5

71 config-2.6.18-238.el5

81 message

111 symvers-2.6.18-238.12.1.el5.gz

111 symvers-2.6.18-238.19.1.el5.gz

112 symvers-2.6.18-238.el5.gz

258 grub

963 System.map-2.6.18-238.12.1.el5

963 System.map-2.6.18-238.19.1.el5

963 System.map-2.6.18-238.el5

1854 vmlinuz-2.6.18-238.12.1.el5

1854 vmlinuz-2.6.18-238.el5

1855 vmlinuz-2.6.18-238.19.1.el5

3371 initrd-2.6.18-238.12.1.el5.img

3371 initrd-2.6.18-238.19.1.el5.img

3405 initrd-2.6.18-238.el5.img

 

 

Df ve du komutlarına seçenek olarak –h human readable biçimi verebilirsiniz,kullanışlıdır veya –k kilobyte için,-m megabyte için kullanabilirsiniz. Mesela yukarıdaki örneği –h seçeneği ile çalıştırırsak bize daha okunaklı bir cevap verecektir ;

 

 

[root@artemis boot]# du -sh *|sort -n

1.9M vmlinuz-2.6.18-238.12.1.el5

1.9M vmlinuz-2.6.18-238.19.1.el5

1.9M vmlinuz-2.6.18-238.el5

3.3M initrd-2.6.18-238.12.1.el5.img

3.3M initrd-2.6.18-238.19.1.el5.img

3.4M initrd-2.6.18-238.el5.img

12K lost+found

70K config-2.6.18-238.12.1.el5

70K config-2.6.18-238.19.1.el5

71K config-2.6.18-238.el5

81K message

111K symvers-2.6.18-238.12.1.el5.gz

111K symvers-2.6.18-238.19.1.el5.gz

112K symvers-2.6.18-238.el5.gz

258K grub

963K System.map-2.6.18-238.12.1.el5

963K System.map-2.6.18-238.19.1.el5

963K System.map-2.6.18-238.el5

 

 

Umarım faydalı bir makale olmuştur. Bir sonraki makalemizde görüşmek üzere

 

Linux Temel Komutlarla Dosya Dizin İşlemleri – Bölüm 3

$
0
0

 

Bu makalemizde dosya ve dizinler üstünde işlemler yaparken hangi temel komutları(cp,mv,mkdir gibi..) kullanacağımızı göreceğiz. Bu temel komutların iyi kullanılabilmesi ileriki dersler açısından ve sizin iyi bir Unix&Linux İşletim Sistemi okur-yazarı olabilmeniz için gereklidir.


Temel komutlara geçmeden önce şunu unutmayın Linux&Unix sistemlerde komut yapısı şu şekildedir.


Komut [options(seçenekler)] parametreler

 

Yani komutun seçeneği (option’i) varsa “–“ (eksi/tire) işareti ile onu hemen komuttan sonra yazarız(birden fazla options kullanmak istiyorsak bütün optionsları bitişik yazarız.) sonra da parametresini ekleriz.

 

 

Şimdi kurmuş olduğumuz CentOS sunucumuza bağlanalım. Şimdilik Vmware Workstation ara yüzünden sistemi -> Power On edip, cozumpark kullanıcısı ve şifresi ile sisteme login olup, masaüstünde sağ Mouse klik ve gelen menüden Konsole diyerek bir konsol açalım.

 

 

 

image001

 

 

İsterseniz bir ssh client programı bularak Putty,Secure Crt gibi sisteme vermiş olduğunuz ip’yi hostname alanına girerek yine cozumpark kullanıcısı ve şifresi ile login olabilirsiniz.Bu servisleri sonra anlatacağımız için şimdilik ara yüzden giriş yapmanızı tavsiye ediyorum.

 

 

 

image002

 

 

Konsolda şöyle bir ifade göreceksiniz;

 

[cozumpark@artemis ~]$ |

 

Login olduğunuz kullanıcı ismi@hostname ve yanıp sönen imleç(cursor)i görebilirsiniz. Kısaca bahsedersek bu konsol bizlere shell(kabuk) üstünden sistem çekirdeğine(kernel’e) komut yollayacağımız bir taşeron görevini görecek. Yani biz ne yazarsak onu yorumlayacak, işleyecek sonra kernel’e gönderecek, kernel’den gelen cevabı da bize getirecek.

 

Sistem bizim kullanıcı bilgimize bakıp konsol’un çalışma dizinini bizim home dizinimizden başlatır.İsterseniz shell ayarları ile başka bir yerden de başlatabilirsiniz.
Ağaç yapısı üstünden gösterecek olursak biz şu an kırmızı ile belirtilmiş(Current Working Directory= bizim çalışma dizinimiz) yerdeyiz.

 

 

 

image003

 

 

Ben File System’de Neredeyim?

 

 

pwd: File System’de nerede olduğumuzu görmek istiyorsak pwd komutunu kullanırız.Açılımı Print Working Directory olarak geçer.Bizim sisteme ilk Login olduğumuzda çalışma dizinimiz ev dizinimiz olduğu için komutun cevabı resimdeki home dizinimizin yolunu vermeli.

 

[cozumpark@artemis~]$pwd


/home/cozumpark

 

Ben File System’de Bir yerlere Gitmek İstiyorum,Nasıl Giderim?

 


cd:
Bulunduğumuz dizinden başka bir dizine gitmek istiyorsak cd komutunu kullanırız. Açılımı da change directory olarak geçer.5 adet seçeneğimiz var.

 

 

cd           -- > sadece cd komutunu çalıştırırsanız nerede olursak olalım, bizi ev dizinimize getirir. Ayrıca ev dizini Linux&Unix sistemlerde ~ karakteri olarakta kullanılır. Path ismi verirken ~ karakterini de kullanabilirsiniz. ~= ev dizinimiz(home directory)!

 

cd ~ahmet ; Ahmet kullanıcısının ev dizinine gidilir.(Root değilseniz tabi o kullanıcının ev dizinine geçmek için izniniz olmayabilir.)

 

cd .         --> cd’yi bir nokta ile kullanırsak bulunduğumuz dizini gösterir. Hiçbir yere hareket etmeyiz.

”.” bulunduğumuz yeri gösterir.

 

cd ..        -- >cd’yi iki nokta ile kullanırsak bulunduğumuz yerden hiyerarşik yapıda bir üst dizine geçeriz.

..” bir üst dizini gösterir.

 

cd -         -- > Bulunduğumuz dizine gelmeden önce neredeysek bizi tekrar oraya götürür.(Bir önceki dizine götürür.)

 

cd path_ismi à cd komutuna parametre olarak bir path ismi verdiğimizde bizi oraya götürür,fakat bu path ismi relative path mi ,absolute path mi olacak ona karar vermek gerekir.Bu relative ve absolute path kavramlarını neredeyse bütün komutlar içinde kullanacağımız için iyi bilmek gerekiyor.

 

 

Full path/Absolute Path: Sizin çalışma dizininize bağlı olmadan /’dan başlayarak dosya veya dizinin yerinin gösterimi. Yani mesela /tmp dizinine gitmek istiyoruz.tmp dizini /’un altında olduğu için full path olarak cd komutuna /tmp vermemiz yeterli.Çizimde siyah ok olarak gösterilmiştir bizim örneğimiz için.

 

[cozumpark@artemis ~]$ cd /tmp

[cozumpark@artemis tmp]$

[cozumpark@artemis tmp]$ pwd

/tmp

 

 

 

 

 

image004

 

 

 

Relative Path: Sizin çalışma dizininize(ağaçta nerede bulunduğunuza) bağlı olarak dosya veya dizinin yerinin gösterilmesi.

 

 

Biz home dizinimizden /tmp dizinine relative path kullanarak gitmek istersek, şekilde mavi okla gördüğünüz gibi iki kere yukarı çıkıp tekrar tmp’ye geri inmemiz gerekiyor ağaçta.

 

 

[cozumpark@artemis tmp]$ cd                 àsadece cd komutu ile /tmp altından ev dizinime döndüm,

[cozumpark@artemis ~]$                            àev dizinimiz altındayız /home/cozumpark

[cozumpark@artemis ~]$ cd ../../tmp   à/tmp’ye gidebilmemiz için iki yukarı çıkıp tmp yazmamız gerek.

[cozumpark@artemis tmp]$

[cozumpark@artemis tmp]$ pwd

/tmp

 

 

Bu Komutların Yardım Sayfaları Nerede?

 


Man,info,help:
Bir komut hakkında sistemde bulunan yardım dosyalarından açıklamaları incelemek istiyorsak bu komutları kullanacağız. Biz şimdiye kadar cd,pwd komutlarını gördük.Hemen bunları inceleyebiliriz.pwd komutu için konsolda “man pwd” diyelim ve enter’a basalım.Karşımıza pwd komutu için man (manual pages) gelecek.

 

 

[cozumpark@artemis ~]$ man pwd

PWD(1) User Commands PWD(1)

 

NAME

pwd - print name of current/working directory

 

SYNOPSIS

pwd [OPTION]

 

DESCRIPTION

Print the full filename of the current working directory.

 

--help display this help and exit

 

--version

output version information and exit

 

 

NOTE: your shell may have its own version of pwd, which usually supersedes the version described here. Please

refer to your shell’s documentation for details about the options it supports.

…..

…..



Bu manual pages’de gezinmek için, sayfa sayfa ilerlemede space tuşunu,satır satır ilerlemede aşağı-yukarı yön tuşlarını ,sayfadan çıkmak içinde q tuşunu kullanacağız.

 

Aynı şekilde info komut_ismi vererek veya komut_ismi –help diyerek eğer komutların sisteme yüklenmiş yardım sayfaları var ise, onlardan yararlanabilirsiniz.

 

 

Dosya ve Dizinleri Nasıl Listelerim?


ls:
Bulunduğumuz dizinin altındaki dosya ve dizinleri listelemek istiyorsak ls komutunu kullanırız. Hiç dosya veya dizin ismi vermezsek current directory(.) yani ağaçta olduğumuz dizini listeler. Listeleme yaparken standart olarak alfabetik sırayı gözetir.

 

ls [seçenekler][dosya_veya_dizin_ismi]

 

Ls komutu ile en çok kullanılan seçenekler aşağıdaki gibidir ama bunlarla sınırlı değildir „man ls“ diyerek diğer seçenekleri inceleyebilirsiniz.

 

Seçenekler(Options)

Açıklama

-a

Gizli dosyalar(. Nokta ile başlayan) dahil dizinin bütün içeriğini listeler.

-l

Liste biçiminde listeleme yapar,daha çok ayrıntı verir.

-h

Dosya boyutlarını okunabilir formatta(human readable) gösterir.Yani byte olarak değil de KB,MB cinsinden.

-R

Recursive(özyinelemeli) olarak dizinin içeriğini gösterir.Yani ağaçta bulunduğumuz dizinden itibaren altlara doğru iner.

-F

Listeleme yaparken dizinleri dosyalardan ayırmak için dizin isimlerinin sonuna / işareti koyar.

-t

Dosya ve dizinlerin time stamp(last modification time)’ine göre listeleme yapar.

-i

Dosya ve dizinlerin i-node numaralarını listeler.

 

 

Örnek;

 

~ tilda karakterinden gördüğünüz gibi ev dizinimdeyim,sadece ls komutunu vererek ev dizinimin altında Desktop dizinin olduğunu görüyorum.
[cozumpark@artemis ~]$
ls  

                    

Desktop

 

 

Şimdi de ls –l komutu ile Desktop dizinin ayrıntılı özelliklerini görmek istiyorum.
[cozumpark@artemis ~]$
ls -l

total 4

drwx------ 2 cozumpark cozumpark 4096 Jun 16 20:46 Desktop

 

 

Şimdi ise ev dizinimin altında gizli dosyalarıda görebilmek için –a seçeneğinide ekliyorum.Dosya isimlerinde “.“ nokta ile başlayan dosyalar gizli dosyalardır.

[cozumpark@artemis ~]$ ls -al

total 116

drwx------ 12 cozumpark cozumpark 4096 Jun 24 12:20 .

drwxr-xr-x 3 root root 4096 Jun 16 20:30 ..

-rw------- 1 cozumpark cozumpark 701 Jun 23 18:38 .bash_history

-rw-r--r-- 1 cozumpark cozumpark 33 Jan 22 2009 .bash_logout

-rw-r--r-- 1 cozumpark cozumpark 176 Jan 22 2009 .bash_profile

-rw-r--r-- 1 cozumpark cozumpark 124 Jan 22 2009 .bashrc

-rw-rw-r-- 1 cozumpark cozumpark 54 Jun 24 12:20 .DCOPserver_artemis__0

 

 

Değiştirilme zamanlarına göre sıralamak içinde –t seçeneğini komuta ekliyorum.

[cozumpark@artemis ~]$ ls -alrt

total 116

-rw-r--r-- 1 cozumpark cozumpark 124 Jan 22 2009 .bashrc

-rw-r--r-- 1 cozumpark cozumpark 176 Jan 22 2009 .bash_profile

-rw-r--r-- 1 cozumpark cozumpark 33 Jan 22 2009 .bash_logout

-rw-r--r-- 1 cozumpark cozumpark 658 Jan 21 04:04 .zshrc

drwxr-xr-x 3 root root 4096 Jun 16 20:30 ..

-rw------- 1 cozumpark cozumpark 26 Jun 16 20:46 .dmrc

drwxr-xr-x 4 cozumpark cozumpark 4096 Jun 16 20:46 .kde

ls komutunun çıktısını yorumlayacak olursak;

 

ilk bölüm,dosya/dizinin izinlerini gösterir.

İlk işaret “–“ olursa normal bir dosya,

“d” olursa onun bir dizin.

“c” olursa onun bir character device’i

“b” olursa onun bir block device’i

“l” olursa başka bir dosyayı işaret eden link olduğunu gösterir.

 

İkinci bölüm,dosya/dizine bağlı olan link sayısını gösterir.

Üçüncü bölüm, dosya/dizinin kime ait olduğunu gösterir.

Dördüncü bölüm, dosya/dizinin hangi gruba ait olduğunu gösterir.

Beşinci bölüm, dosyanın/dizinin boyutunu gösterir.

Altıncı bölüm, dosyanın/dizinin son değiştirilme tarihini gösterir.

Yedinci bölüm, dosyanın/dizinin ismi gösterir.

 

 

 

image005

 

 

BILGILENDIRME!!: İzinler ve sahiplik konularını kullanıcı ve gruplar makalesinde inceleyeceğiz.

 

Dosya oluşturmak (Create File)

 


Touch:
Genelde sıfır boyutlu dosya oluşturmak için kullanılır.

 

 

Touch [seçenekler] tarih [dosya ismi] veya sadece touch dosya_ismi şeklinde kullanılır.

 

 

Örnek;

 

File1 isminde bir dosya oluşturalım.

 

 

[cozumpark@artemis ~]$ touch file1 -> Bir tane file1 isimli dosya oluşturalım.

[cozumpark@artemis ~]$ ls -l file1

-rw-rw-r-- 1 cozumpark cozumpark 0 Jun 24 12:58 file1

[cozumpark@artemis ~]$ ls -l

total 4

drwx------ 2 cozumpark cozumpark 4096 Jun 16 20:46 Desktop

-rw-rw-r-- 1 cozumpark cozumpark 0 Jun 24 12:58 file1

 

 

 

image006

 

 

 

[cozumpark@artemis ~]$ touch file2 file3 ->Birden fazla oluşturmak istiyorsak sırayla dosya isimlerini touch komutuna vermemiz yeterli.

[cozumpark@artemis ~]$ ls -l

total 4

drwx------ 2 cozumpark cozumpark 4096 Jun 16 20:46 Desktop

-rw-rw-r-- 1 cozumpark cozumpark 0 Jun 24 12:58 file1

-rw-rw-r-- 1 cozumpark cozumpark 0 Jun 24 13:00 file2

-rw-rw-r-- 1 cozumpark cozumpark 0 Jun 24 13:00 file3

 

 

 

image007

 

 

 

Ayrıca touch komutu dosyaların son erişim(access time) ve son değiştirme(modification time) zaman etiketlerini değiştirmek içinde kullanılır.Unix&Linux sistemlerde bir dosyanın 3 adet timestamp’i (zaman etiketi) vardır.

 

Access time(atime);Dosya/Dizi ‘ nin son okunma zamanını gösterir.

 

Modification time(mtime); Dosya/Dizi ‘ nin son içeriğinin değiştirildiği zamanı gösterir.

 

Change the status time(ctime); Dosya/Dizi ‘ nin son içeriğinin,sahipliklerinin,izinlerinin değiştirildiği zamanı gösterir.

 

 

 

Seçenekler(Options)

Açıklama

-a

Access time’i değiştirmek için kullanılır.

-c

Eğer öyle bir dosya yoksa oluşturma.

-m

Modification time’i değiştirmek için kullanılır.

-t time

MMDDhhmm[YY] :

  • MM       : Ay bilgisi
  • DD          : Gün bilgisi
  • hh           : Saat bilgisi
  • mm        : Dakika bilgisi
  • YY           : Yıl bilgisi

 

 

Örnek;

 

Dosyanın değişim zamanını 17 Nisan 2009 12:05 yapmak için :

 

                touch –m 0417120509 dosya_ismi

 

Dosyanın erişim zamanını 23 Ocak 2000 16:35 yapmak için :

 

                touch –a 0123163500 dosya_ismi

 

Ayrıca stat komutu ile , bütün bu zaman etiketlerini görebiliriz. stat dosya_ismi diyerek komutu çalıştırıyoruz.

 

[cozumpark@artemis ~]cd /tmp;touch armegedon

[cozumpark@artemis tmp]$ stat armegedon

File: `armegedon'

Size: 0 Blocks: 0 IO Block: 4096 regular empty file

Device: fd00h/64768d Inode: 851973 Links: 1

Access: (0664/-rw-rw-r--) Uid: ( 500/cozumpark) Gid: ( 500/cozumpark)

Access: 2011-07-24 17:09:56.000000000 +0300

Modify: 2011-07-24 17:09:05.000000000 +0300

Change: 2011-07-24 17:09:56.000000000 +0300

 

 

Dizin Oluşturmak (Create Directory)


Mkdir:
Dizin oluşturmak için kullanılır.İç içe dizin oluşturmak isteniliyorsa –p seçeneği ile beraber kullanılmalı.

 

Mkdir [seçenek] [dizin_ismi]

 

Örnek;

 

[cozumpark@artemis ~]$ mkdir dir1                       ->dir1 isimli dizini oluşturduk.

[cozumpark@artemis ~]$ mkdir -p dir2/dir3       ->dir2 ile beraber dir2’nin altında dir3 dizinini oluşturduk.

[cozumpark@artemis ~]$

[cozumpark@artemis ~]$ ls -l

total 12

drwx------ 2 cozumpark cozumpark 4096 Jun 16 20:46 Desktop

drwxrwxr-x 2 cozumpark cozumpark 4096 Jun 24 13:04 dir1

drwxrwxr-x 3 cozumpark cozumpark 4096 Jun 24 13:04 dir2

-rw-rw-r-- 1 cozumpark cozumpark 0 Jun 24 12:58 file1

-rw-rw-r-- 1 cozumpark cozumpark 0 Jun 24 13:00 file2

-rw-rw-r-- 1 cozumpark cozumpark 0 Jun 24 13:00 file3

[cozumpark@artemis ~]$

 

 

 

image008

 

 

 

[cozumpark@artemis ~]$ ls -lR dir2

 

dir2:

total 4

drwxrwxr-x 2 cozumpark cozumpark 4096 Jun 24 13:04 dir3

dir2/dir3:

total 0

 

 

[cozumpark@artemis ~]$ ls -l dir2

total 4

drwxrwxr-x 2 cozumpark cozumpark 4096 Jun 24 13:04 dir3

 

 

 

Dosya ve Dizinlerin Silinmesi(Remove Files and Directories)


Rm,rmdir:
Dosya ve dizinleri silmek için ortak olarak rm komutu ,içi boş dizinleri silmek için ise rmdir komutu kullanılabilir.

Dosyalar için       : rm [seçenekler] dosya_ismi
Dizinler için         :
rm –r [seçenekler] dizin_ismi

Rm komutunda –r seçeneğini içi dolu dizinlerin altını recursive (özyinelemeli) olarak silmesi için kullanıyoruz.

UYARI! Kullanıcıların –r seçeneğini hangi kullanıcı yetkisi ile hangi dizinde çalıştırdıklarına çok dikkat etmeleri gerekir. Eğer yetkili bir kullanıcı ile ağaç yapısında daha üst dizinlerde çalıştırırsanız bilinçsizce sistemin çok önemli dosyalarını silerek sistemi bozabilirsiniz.

 

 

Seçenekler(Options)

Açıklama

-f

Hiçbir şey sormadan siler geçer.

-i

Etkileşimi modda dosyaların silinmesini sağlar.(Sileyim mi,silmeyeyim mi?)

-r

Recursive(özyinelemeli) olarak çalışarak bulunduğu dizinin altından itibaren her şeyi siler.

-v

Verbose mode,ne yapıldığının bilgisini kullanıcıya döner.



Örnek;

 

[cozumpark@artemis ~]$ rm -vi file1 à file1 isimli dosya verbose ve etkileşimli modda sildik.

rm: remove regular empty file `file1'? y

removed `file1'

 

 

[cozumpark@artemis ~]$ ls -lR dir2 à dir2 dizinin altında dir3 dizinin olduğunu gördük.

dir2:

total 4

drwxrwxr-x 2 cozumpark cozumpark 4096 Jun 24 13:04 dir3

 

 

dir2/dir3:

total 0

 

 

[cozumpark@artemis ~]$ rmdir dir2 à dir2 dizinini silmeye çalışıyoruz ama altında dir3 dizini olduğu için hata verecek.

rmdir: dir2: Directory not empty

 

 

[cozumpark@artemis ~]$ rm -r dir2 à dir2’nin altında bulunan dir3 dizininide silmek için –r seçeneğini kullanıyoruz.

[cozumpark@artemis ~]$

[cozumpark@artemis ~]$ ls -lR dir2 à dir2 ve dir3’ün silindiğini teyit ediyoruz.

ls: dir2: No such file or directory

 

 

[cozumpark@artemis ~]$ ls –lrt à ev dizinimiz altında en son duruma bakıyoruz.

total 8

drwx------ 2 cozumpark cozumpark 4096 Jun 16 20:46 Desktop

-rw-rw-r-- 1 cozumpark cozumpark 0 Jun 24 13:00 file3

-rw-rw-r-- 1 cozumpark cozumpark 0 Jun 24 13:00 file2

drwxrwxr-x 2 cozumpark cozumpark 4096 Jun 24 13:04 dir1

 

Dosyalara Link Yapmak (Hard-Link and Soft-Link)

 

 

ln:       Dosyalara farklı isimler verebilmek, sık kullanılan ama sürümlerle değişecek dosya isimlerini standart hale getirebilmek, dosyalara farklı yerlerden ulaşabilmek amacıyla dosyalara link (bağ) tanımı yaparız. Türlerine gore iki çeşit link tanımı yapılabilir.Hard-link ve soft (sembolic)-link.

 

 

ln [seçenekler] hedef link_ismi

 

 

Hard-link adı üstünde link olduğu dosya içeriği değişirse kendi içeriğide değişir. Ama orjinal dosya silinirse hard-linkli dosya sabit kalır ve bağımsız bir dosya haline dönüşür.

Sembolik linkle orjinal dosyaya link atılmış dosyalar sadece kısayol görevi görür. Windows ortamında masaüstünde kullandığımız kısayollardan hiçbir farkı yoktur. Sembolik linkli dosyada yaptığımızı zannettiğimiz değişiklikler aslında orjinal dosyada yapılır.

Örnek;

[cozumpark@artemis ~]$ touch link_ornek à link_ornek isminde bir dosya oluşturduk

[cozumpark@artemis ~]$ ls –lrt link_ornek

total 8

-rw-rw-r-- 1 cozumpark cozumpark 0 Jul 6 23:27 link_ornek

[cozumpark@artemis ~]$ echo "ln komutu icin bir ornek" >> link_ornek à dosyanın içine birşeyler yazdık

[cozumpark@artemis ~]$ cat link_ornek à dosyanın içeriğini okuduk.

ln komutu icin bir ornek

[cozumpark@artemis ~]$ ln link_ornek hard_link à hard_link dosyasını link_ornek dosyasına hard link yaptık; böyle bir dosya olmasada kendisi oluşturur!

[cozumpark@artemis ~]$ ls -lrt

total 16

drwx------ 2 cozumpark cozumpark 4096 Jun 16 20:46 Desktop

-rw-rw-r-- 1 cozumpark cozumpark 0 Jun 24 13:00 file3

-rw-rw-r-- 1 cozumpark cozumpark 0 Jun 24 13:00 file2

drwxrwxr-x 2 cozumpark cozumpark 4096 Jun 24 13:04 dir1

-rw-rw-r-- 2 cozumpark cozumpark 25 Jul 6 23:28 link_ornek

-rw-rw-r-- 2 cozumpark cozumpark 25 Jul 6 23:28 hard_link

[cozumpark@artemis ~]$ diff link_ornek hard_link à diff komutu ile iki dosya arasında içerik olarak fark olmadığını gördük

[cozumpark@artemis ~]$

[cozumpark@artemis ~]$ echo "hardlinkli dosyada gozukmesi gerek" >> link_ornek àorjinal dosyanın içine birşeyler yazdık

[cozumpark@artemis ~]$ cat hard_link à orjinal dosyada yazdığımız şeyleri hard linkli dosyada gördük.

ln komutu icin bir ornek

hardlinkli dosyada gozukmesi gerek

[cozumpark@artemis ~]$ ln -s link_ornek soft_link à orjinal dosyamıza soft link yaptık

[cozumpark@artemis ~]$

[cozumpark@artemis ~]$ ls -lrt

total 16

drwx------ 2 cozumpark cozumpark 4096 Jun 16 20:46 Desktop

-rw-rw-r-- 1 cozumpark cozumpark 0 Jun 24 13:00 file3

-rw-rw-r-- 1 cozumpark cozumpark 0 Jun 24 13:00 file2

drwxrwxr-x 2 cozumpark cozumpark 4096 Jun 24 13:04 dir1

-rw-rw-r-- 2 cozumpark cozumpark 60 Jul 6 23:38 link_ornek

-rw-rw-r-- 2 cozumpark cozumpark 60 Jul 6 23:38 hard_link

lrwxrwxrwx 1 cozumpark cozumpark 10 Jul 6 23:39 soft_link -> link_ornek

[cozumpark@artemis ~]$ echo "soft_linkte gozukmesi gerek" >> soft_link à soft linkli dosyaya birşeyler yazmayı deneyeceğiz

[cozumpark@artemis ~]$

[cozumpark@artemis ~]$ cat soft_link à yazdığımız şeyler softlinkli dosya tarafından gösterildi.aslında orjinal dosyayı gösteriyor.

ln komutu icin bir ornek

hardlinkli dosyada gozukmesi gerek

soft_linkte gozukmesi gerek

[cozumpark@artemis ~]$ rm link_ornek àorjinal dosyayı siliyoruz

[cozumpark@artemis ~]$ cat soft_link àsoftlinki okumaya çalışıyoruz ama gördüğünüz gibi kendisi sadece orjinal dosyaya kısayol olduğu için “No such file or directory” hatası veriyor.

cat: soft_link: No such file or directory

[cozumpark@artemis ~]$ cat hard_link àHardlinkli dosya yerinde duruyor ama hard link olduğu orjinal dosya silindiği için artık bağımsız bir dosya haline geldi.

ln komutu icin bir ornek

hardlinkli dosyada gozukmesi gerek

soft_linkte gozukmesi gerek

 

 

Dosya ve Dizinlerin Taşınması ve Kopyalanması (Copying and moving files and directories)


cp,mv:
Kopyalama işlemini gerçekleştirmek için cp ,taşıma ve isim değiştirme işleminde mv komutlarını kullanacağız.

 


cp [seçenekler] kaynak(source) hedef(destination)

 

cp komutu ile kullanabileceğimiz seçenekler aşağıdaki tabloda belirtilmiştir.Kaynak ve hedef dosya veya dizin olabilirler.

 

Seçenekler(Options)

Açıklama

-f

Hedef bölgede kopyalanacak dosya varsa, orada var olanı hiçbirşey sormadan siler ve diğer dosyaları kopyalar.

-i

Etkileşimi modda dosyaların kopyalanmasını sağlar.(Hedef bölgesinde aynı dosya veya dizin var ise kopyalama yapayım mı? Diye sorar.)

-r

Recursive(özyinelemeli) olarak çalışarak bulunduğu dizinin altından itibaren her şeyi hedef bölgesine kopyalar.

-v

Verbose mode,ne yapıldığının bilgisini kullanıcıya döner.

-p

Bu seçenekle kopyalanacak dosya ve dizinlerin izinlerin ve sahiplerinin korunmasını sağlar.

-u

Kaynak dosya Hedef dosyadan daha yeni ise veya karşı tarafta kaynak dosya yok ise kopyalama yapar.

-d

Cp komutu standart olarak bir linki kopyalarken linkin belirtmiş olduğu asıl dosyayı kopyalar ama bu seçenek ile dosyanın kendisi yerine linkini kopyalarız.

-l

Kaynak dosya ile Hedef dosya arasında link oluşturulur. Eğer Kaynak dosya değişir ise otomatikman Hedef dosyanın içeriğide değişir.

-s

Kopyalama işlemi yerine Hedef dosya kaynak dosyanın bir sembolik linki haline gelir.

 

 

BILGILENDIRME!!: Unix&Linux sistemlerde herhangi bir ayar dosyasının üstünde işlem yapmadan önce muhakkak dosyanın yedeğini alın,sistemde çok büyük değişiklik olacaksa ayar dosyalarını sistemden lokalinize çekin.Eşeğini sağlam kazığa bağlayan dizini dövmez vesselam. Örnek; cp /etc/snmp/snmpd.conf /etc/snmp/snmpd.conf._tarih_isim_original


Örnek;

 

[cozumpark@artemis ~]$ ls -rlt

total 16

drwx------ 2 cozumpark cozumpark 4096 Jun 16 20:46 Desktop

-rw-rw-r-- 1 cozumpark cozumpark 0 Jun 24 13:00 file3

-rw-rw-r-- 1 cozumpark cozumpark 0 Jun 24 13:00 file2

drwxrwxr-x 2 cozumpark cozumpark 4096 Jun 24 13:04 dir1

-rw-rw-r-- 1 cozumpark cozumpark 88 Jul 7 23:43 hard_link

lrwxrwxrwx 1 cozumpark cozumpark 10 Jul 7 23:47 soft_link -> link_ornek

-rw-rw-r-- 1 cozumpark cozumpark 88 Jul 8 00:01 link_ornek

[cozumpark@artemis ~]$

[cozumpark@artemis ~]$ ls -l dir1

total 0

[cozumpark@artemis ~]$ cp file2 dir1

[cozumpark@artemis ~]$

[cozumpark@artemis ~]$ ls -l dir1

total 0

-rw-rw-r-- 1 cozumpark cozumpark 0 Jul 8 00:02 file2

 

 

 

image009

 

 

 

[cozumpark@artemis ~]$ ls -rlt

total 16

drwx------ 2 cozumpark cozumpark 4096 Jun 16 20:46 Desktop

-rw-rw-r-- 1 cozumpark cozumpark 0 Jun 24 13:00 file3

-rw-rw-r-- 1 cozumpark cozumpark 0 Jun 24 13:00 file2

-rw-rw-r-- 1 cozumpark cozumpark 88 Jul 7 23:43 hard_link

lrwxrwxrwx 1 cozumpark cozumpark 10 Jul 7 23:47 soft_link -> link_ornek

-rw-rw-r-- 1 cozumpark cozumpark 88 Jul 8 00:01 link_ornek

drwxrwxr-x 2 cozumpark cozumpark 4096 Jul 8 00:02 dir1

 

 

[cozumpark@artemis ~]$ cp -d soft_link dir1 à -d seçeneği nedeniyle dir1 altına linki kopyalayacak,orijinal dosyayı değil

[cozumpark@artemis ~]$

[cozumpark@artemis ~]$ ls -lrt dir1

total 0

-rw-rw-r-- 1 cozumpark cozumpark 0 Jul 8 00:02 file2

lrwxrwxrwx 1 cozumpark cozumpark 10 Jul 8 00:31 soft_link -> link_ornek

[cozumpark@artemis ~]$

[cozumpark@artemis ~]$

[cozumpark@artemis ~]$ cp soft_link dir1 à hiç seçenek kullanmazsak orijinal dosyayı hedefe kopyalar.

[cozumpark@artemis ~]$

[cozumpark@artemis ~]$ ls -lrt dir1

total 4

-rw-rw-r-- 1 cozumpark cozumpark 0 Jul 8 00:02 file2

lrwxrwxrwx 1 cozumpark cozumpark 10 Jul 8 00:31 soft_link -> link_ornek

-rw-rw-r-- 1 cozumpark cozumpark 88 Jul 8 00:31 link_ornek

 

 

Dosya&Dizinleri Taşımak veya Isimlerini Değiştirmek (Moving files&directories or Renaming files&directories)


mv:
Dosya ve dizinleri taşırken veya isimlerini değiştirmek istediğimizde mv komutunu aşağıdaki şekliyle kullanıyoruz.Kaynak ve hedef, dosya veya dizin olabilir.Seçenek olarak cp komutuna benzer seçenekleri vardır. –f,-v,-i aynı özelliklere sahip seçenekleridir.

 


mv [seçenek] kaynak(source) hedef(destination)

 

Örnek;

[cozumpark@artemis ~]$

[cozumpark@artemis ~]$ mkdir dir2 -- > dir2 isimli bir dizin oluşturduk.

[cozumpark@artemis ~]$

[cozumpark@artemis ~]$ ls –rtl -- > Home dizinimiz altında bulunan dosya ve dizinleri listeledik,dir1 ve dir2 isimli dizinleri gördük.

total 20

drwx------ 2 cozumpark cozumpark 4096 Jun 16 20:46 Desktop

-rw-rw-r-- 1 cozumpark cozumpark 0 Jun 24 13:00 file3

-rw-rw-r-- 1 cozumpark cozumpark 0 Jun 24 13:00 file2

-rw-rw-r-- 1 cozumpark cozumpark 88 Jul 7 23:43 hard_link

lrwxrwxrwx 1 cozumpark cozumpark 10 Jul 7 23:47 soft_link -> link_ornek

-rw-rw-r-- 1 cozumpark cozumpark 88 Jul 8 00:01 link_ornek

drwxrwxr-x 2 cozumpark cozumpark 4096 Jul 8 00:31 dir1

drwxrwxr-x 2 cozumpark cozumpark 4096 Jul 8 00:42 dir2

[cozumpark@artemis ~]$

[cozumpark@artemis ~]$ mv dir1 dir2 -- > dir1 isimli dizini dir2 isimli dizinin altına taşıdık.

[cozumpark@artemis ~]$

[cozumpark@artemis ~]$ ls –lrt -- > dir1’in artık Home dizinimiz altında olmadığını gördük.

total 16

drwx------ 2 cozumpark cozumpark 4096 Jun 16 20:46 Desktop

-rw-rw-r-- 1 cozumpark cozumpark 0 Jun 24 13:00 file3

-rw-rw-r-- 1 cozumpark cozumpark 0 Jun 24 13:00 file2

-rw-rw-r-- 1 cozumpark cozumpark 88 Jul 7 23:43 hard_link

lrwxrwxrwx 1 cozumpark cozumpark 10 Jul 7 23:47 soft_link -> link_ornek

-rw-rw-r-- 1 cozumpark cozumpark 88 Jul 8 00:01 link_ornek

drwxrwxr-x 3 cozumpark cozumpark 4096 Jul 8 00:42 dir2

[cozumpark@artemis ~]$

[cozumpark@artemis ~]$ ls -lR dir2 -- > dir2’nin altına recursive olarak(-R seçeneği ile) baktık ve dir2’nin altına taşınmış olduğunu gördük.

dir2:

total 4

drwxrwxr-x 2 cozumpark cozumpark 4096 Jul 8 00:31 dir1

 

 

dir2/dir1:

total 4

-rw-rw-r-- 1 cozumpark cozumpark 0 Jul 8 00:02 file2

-rw-rw-r-- 1 cozumpark cozumpark 88 Jul 8 00:31 link_ornek

lrwxrwxrwx 1 cozumpark cozumpark 10 Jul 8 00:31 soft_link -> link_ornek

[cozumpark@artemis ~]$ ls -rlt

total 16

drwx------ 2 cozumpark cozumpark 4096 Jun 16 20:46 Desktop

-rw-rw-r-- 1 cozumpark cozumpark 88 Jul 7 23:43 hard_link

lrwxrwxrwx 1 cozumpark cozumpark 10 Jul 7 23:47 soft_link -> link_ornek

-rw-rw-r-- 1 cozumpark cozumpark 88 Jul 8 00:01 link_ornek

drwxrwxr-x 3 cozumpark cozumpark 4096 Jul 8 00:50 dir2

[cozumpark@artemis ~]$

[cozumpark@artemis ~]$ mv dir2 dir4 --> dir2 ‘nin ismini dir4 olarak değiştirdik.

[cozumpark@artemis ~]$

[cozumpark@artemis ~]$ ls -lrt

total 16

drwx------ 2 cozumpark cozumpark 4096 Jun 16 20:46 Desktop

-rw-rw-r-- 1 cozumpark cozumpark 88 Jul 7 23:43 hard_link

lrwxrwxrwx 1 cozumpark cozumpark 10 Jul 7 23:47 soft_link -> link_ornek

-rw-rw-r-- 1 cozumpark cozumpark 88 Jul 8 00:01 link_ornek

drwxrwxr-x 3 cozumpark cozumpark 4096 Jul 8 00:50 dir4

[cozumpark@artemis ~]$

[cozumpark@artemis ~]$

[cozumpark@artemis ~]$ ls -lrt dir4

total 4

-rw-rw-r-- 1 cozumpark cozumpark 0 Jun 24 13:00 file3

-rw-rw-r-- 1 cozumpark cozumpark 0 Jun 24 13:00 file2

drwxrwxr-x 2 cozumpark cozumpark 4096 Jul 8 00:31 dir1

 

[cozumpark@artemis ~]$ mv dir4 /tmp -- > dir4’ü tamamen /tmp altına taşıdık.

[cozumpark@artemis ~]$ ls -ld /tmp/dir4 --> dir4’ü ls’in –d seçeneği ile dizin olarak path’ini gördük.

drwxrwxr-x 3 cozumpark cozumpark 4096 Jul 8 00:50 /tmp/dir4

 

 

[cozumpark@artemis ~]$ ls –rlt -- > Home dizini altında işlem yaptığımız dizinlerin gerçekten taşındığını gördük.

total 12

drwx------ 2 cozumpark cozumpark 4096 Jun 16 20:46 Desktop

-rw-rw-r-- 1 cozumpark cozumpark 88 Jul 7 23:43 hard_link

lrwxrwxrwx 1 cozumpark cozumpark 10 Jul 7 23:47 soft_link -> link_ornek

-rw-rw-r-- 1 cozumpark cozumpark 88 Jul 8 00:01 link_ornek

 

 

Dosya mı, dizin mi, ya da başka ne olabilir?


File:
File komutu ile üstünde herhangi bir fikir sahibi olmadığımız dosya veya dizin hakkında içeriğinin ne olduğuna dair sistem bize yardımcı olabiliyor.

 

File [dosya_veya_dizin_ismi]

 

 

Örnek ;

 

[cozumpark@artemis ~]$ file file1 - > file1 isimli dosyamız boş olduğu için empty olarak gösterdi.

file1: empty

[cozumpark@artemis ~]$ file dir1

dir1: directory

 

 

[cozumpark@artemis ~]$ echo "merhaba cozumpark" > file1 ->echo komutu ile file1 dosyasının içine “merhaba cozumpark” yazdırdık.

[cozumpark@artemis ~]$

[cozumpark@artemis ~]$ file file1 ->şimdi file1 ascii text dosyası olarak gözüküyor.

file1: ASCII text

 

 

(Text) Dosyaları nasıl okurum? (Reading text files)


Cat:
Dosyanın tamamını tek seferde ekrana yazar. En çok kullanılan iki seçeneği aşağıdaki tablodadır.


Cat [seçenekler] dosya_ismi

 

 

Seçenekler(Options)

Açıklama

-E, --show-ends

Ekrana dosyayı yazarken her satırın sonuna $ karakteri koyar.

-n

Dosyayı satır numaraları ile beraber yazar.

 

 

Örnek;


[cozumpark@artemis ~]$ man cat > file1 à cat komutunun manual sayfasını file1 dosyasına yönlendirerek yazdırdık.

 

[cozumpark@artemis ~]$

 

[cozumpark@artemis ~]$ cat file1 à file1 dosyasını cat ile okuyoruz.

 

CAT(1) User Commands CAT(1)

 

NAME

 

cat - concatenate files and print on the standard output

SYNOPSIS

cat [OPTION] [FILE]...

..

..

 

 

More: Dosyayı okurken, dosyayı tek seferde ekrana yazmak yerine, sayfa sayfa halinde getirir. Dosyanın içeriğini ekranda Space tuşu sayfa sayfa,Enter tuşu satır satır ilerletir Dosya içinde arama yapmak istiyorsanız / karakteri deyip, hemen arayacağınız kavramı yazın ve Enter’a basın, başka yerde aramasına devam etsin diyorsanız “n“ ile (next anlamına geliyor) devam edin.

 

more [seçenekler] dosya_ismi

 

Seçenekler(Options)

Açıklama

-h

More komutunun seçeneklerini listeler.=

-n

Dosyayı satır numaraları ile beraber yazar.

=

Bulunduğunuz satır numarasını gösterir.

/pattern

Dosya içinde Pattern(kavram) araması yapar.

f

Dosya ismini ve satır numarasını gösterir.

v

(/usr/bin/vi) VI editörünü bulunduğunuz satırdan başlatır.

 

 

Less: Dosyaları okurken more komutuna benzeyen bir yapıdadır.Fakat büyük dosyaları okumada cat ve more komutlarına gore başarısı yüksektir.İlk seferde dosyanın tamamını okumaya çalışmaz.Dosya okurken ileri ve geri hareketlerde more’dan daha geniş seçenek sunar.

 

less [seçenekler] dosya_ismi

 

Dosyaları Başından Itibaren Nasıl Okurum?


Head:
Dosyayı başından itibaren okumak isterseniz head komutunu kullanırız. Head komutuna hiçbir seçenek vermez isek sadece standartta ilk 10 satırı okur. –n seçeneğine herhangi bir satır sayısı verirsek dosyanın başından itibaren o kadar satır okur.Mesela more -5 dosya_ismi ile o dosyanın ilk 5 satırını okur.

 


Head [seçenekler] dosya_ismi

 

Örnek;

 

Kısa bir bash script ile file6 isminde kendi içinde satır numaralarını yazan bir dosya oluşturduk.file6 dosyasında 15 satır olacak ve her satırda “bu n. satirdir” ifadesi geçecek.

[cozumpark@artemis ~]$ while [ $c -le 15 ]; do echo "bu $c. satirdir " >> file6; ((c++)); done

[cozumpark@artemis ~]$ ls -lrt

total 20

drwx------ 2 cozumpark cozumpark 4096 Jun 16 20:46 Desktop

-rw-rw-r-- 1 cozumpark cozumpark 88 Jul 7 23:43 hard_link

lrwxrwxrwx 1 cozumpark cozumpark 10 Jul 7 23:47 soft_link -> link_ornek

-rw-rw-r-- 1 cozumpark cozumpark 88 Jul 8 00:01 link_ornek

-rw-rw-r-- 1 cozumpark cozumpark 246 Jul 8 01:25 file5

-rw-rw-r-- 1 cozumpark cozumpark 246 Jul 8 01:32 file6

[cozumpark@artemis ~]$ cat file6 à oluşturduğumuz dosyayı okuduk.

bu 1. satirdir

bu 2. satirdir

bu 3. satirdir

bu 4. satirdir

bu 5. satirdir

bu 6. satirdir

bu 7. satirdir

bu 8. satirdir

bu 9. satirdir

bu 10. satirdir

bu 11. satirdir

bu 12. satirdir

bu 13. satirdir

bu 14. satirdir

bu 15. Satirdir

 

 

[cozumpark@artemis ~]$ head file6 à dosyada normalda 15 satır olmasına rağmen ,head komutu seçeneksiz halde standartta sadece ilk 10 satırı verdi.

bu 1. satirdir

bu 2. satirdir

bu 3. satirdir

bu 4. satirdir

bu 5. satirdir

bu 6. satirdir

bu 7. satirdir

bu 8. satirdir

bu 9. satirdir

bu 10. Satirdir

 

 

[cozumpark@artemis ~]$ head -3 file6 à ilk 3 satırı okumak istersek –satir_sayisi seçeneğini vermemiz gerekiyor.

bu 1. satirdir

bu 2. satirdir

bu 3. Satirdir

 


Dosyaları sonundan itibaren nasıl okurum?

 


Tail:
Dosyayı sonundan itibaren okumak istersek tail komutunu kullanırız. Bu komutta head gibi seçenek olmadan kullanılırsa standartta dosyanın son 10 satırını getirir, eğer –satir_sayisi seçeneği kullanılırsa sondan itibaren o kadar satır getirir.

 


Tail [seçenekler] dosya_ismi

 

[cozumpark@artemis ~]$ tail file6

bu 6. satirdir

bu 7. satirdir

bu 8. satirdir

bu 9. satirdir

bu 10. satirdir

bu 11. satirdir

bu 12. satirdir

bu 13. satirdir

bu 14. satirdir

bu 15. Satirdir

 

 

[cozumpark@artemis ~]$ tail -5 file6

bu 11. satirdir

bu 12. satirdir

bu 13. satirdir

bu 14. satirdir

bu 15. Satirdir

 

 

Eğer okuyacağınız dosya log dosyası gibi sürekli içine bir şeyler yazılan ve takip etmeniz gereken bir dosya ise dosyayı sürekli sonundan okuyabilmek için –f seçeneğini kullanmanız gerekir.

 

 

Tail –f dosya_ismi

 

Örnek;

 

Bu örnekte script ile bir dosyaya konsolun birinden sürekli bir şeyler yazdıracağız. Diğer konsoldan bu dosyayı tail –f ile okuyacağız.

Şimdi önünüzde iki konsol açık olsun.(masaüstü sağ klik à konsole) İkisininde çalışma dizini aynı olsun.Yani pwd komutu ile aynı cevaplar alınmalı.Biz iki konsoldada cozumpark kullanıcısının ev dizinindeyiz.

 

 

Birinci konsolda;

 

[cozumpark@artemis ~]$ c=1

[cozumpark@artemis ~]$ while [ true ]; do echo "bu $c. satirdir " >> file7; ((c++));sleep 10; done

 

 

İkinci konsolda;

 

[cozumpark@artemis ~]$ tail -f file7

bu 1. satirdir

bu 2. satirdir

bu 3. satirdir

bu 4. Satirdir

..

..

 

Gördüğünüz gibi her 10 saniyede birinci konsoldaki script çalışıp file7 isimli dosyaya satır numarasını yazacak ve biz tail komutunun –f seçeneği ile diğer konsolda file7 isimli dosyanın sonuna ne yazıldıysa okuduk. İki konsoldaki işlemleri de iptal etmek için Ctrl+C ile çıkabilirsiniz.

 

Dosyaları Tar ile Arşivlemek

 

 

Tar: Tar komutu sistemde yeralan dosyalarınızı arşivlemek için kullanılır. Eğer farklı seçenekler kullanılır ise aynı anda sıkıştırma yapıp arşivleme işlemleride yapabilirsiniz.

 

 

Tar [seçenekler] arşiv_ismi arşiv_yapilacak_dosyalar

 

 

 

Seçenekler(Options)

Açıklama

-c

Tar arşivi oluştur.(create)

-x

Var olan arşivi aç.(extract)

-t

Tar arşivinin içeriğini listele(list)

-v

Verbose mode,kullanıcıya ne olup ne bittiğini söyle

-r

Var olan bir tar arşivine ekleme yapmak için(add)

-u

Var olan bir tar arşivindeki dosyaları yenilemek için(update)

-z

Arşivleme ile beraber gzip/gunzip kullanarak sıkıştırma yapar

-Z

Arşivleme ile beraber compress/uncompress kullanarak sıkıştırma yapar.

-- remove

Arşivleme işi bitince dosyaları sil

 

 

Şimdi ev dizinimizde birkaç tane dosya oluşturup arşivleme ve sıkıştırma örnekleri yapacağız. Arşiv ismi verirken biz veriyoruz sistemin bize bir müdahalesi yok, ama kullanımı kolay olması açısından tar ile arşivlediğimiz dosyaları .tar ile, arşivleme+gzip ile sıkıştırma yapıyorsak .tar.gz ile, arşivleme+compress ile sıkıştırma yapıyorsak .tar.Z ile isimlendirme yapalım.

 

Örnek;

 

[cozumpark@artemis ~]$ mkdir tar_ornek

[cozumpark@artemis ~]$ cd tar_ornek/

[cozumpark@artemis tar_ornek]$ touch a.log b.log c.log d.log

[cozumpark@artemis tar_ornek]$ man cat> a.log

[cozumpark@artemis tar_ornek]$ man touch> b.log

[cozumpark@artemis tar_ornek]$ man cp> c.log

[cozumpark@artemis tar_ornek]$ man mv> d.log

[cozumpark@artemis tar_ornek]$ tar -cvf a.tar a.log

a.log

[cozumpark@artemis tar_ornek]$ ls -rlt

total 28

-rw-rw-r-- 1 cozumpark cozumpark 2460 Jul 16 17:15 a.log

-rw-rw-r-- 1 cozumpark cozumpark 3435 Jul 16 17:15 c.log

-rw-rw-r-- 1 cozumpark cozumpark 2422 Jul 16 17:18 b.log

-rw-rw-r-- 1 cozumpark cozumpark 3435 Jul 16 17:18 d.log

-rw-rw-r-- 1 cozumpark cozumpark 10240 Jul 16 17:18 a.tar

[cozumpark@artemis tar_ornek]$ tar -zcvf ab.tar.gz a.log b.log à arşiv ismine dikkat!-z seçeneği ile .gz isme ekledik.

a.log

b.log

[cozumpark@artemis tar_ornek]$ ls -rlt

total 32

-rw-rw-r-- 1 cozumpark cozumpark 2460 Jul 16 17:15 a.log

-rw-rw-r-- 1 cozumpark cozumpark 3435 Jul 16 17:15 c.log

-rw-rw-r-- 1 cozumpark cozumpark 2422 Jul 16 17:18 b.log

-rw-rw-r-- 1 cozumpark cozumpark 3435 Jul 16 17:18 d.log

-rw-rw-r-- 1 cozumpark cozumpark 10240 Jul 16 17:18 a.tar

-rw-rw-r-- 1 cozumpark cozumpark 1793 Jul 16 17:22 ab.tar.gz

[cozumpark@artemis tar_ornek]$ tar -zcvf loglar.tar.gz *.log --remove à dosyaları arşivledik ve sildik

a.log

b.log

c.log

d.log

[cozumpark@artemis tar_ornek]$ ls -rlt

total 36

-rw-rw-r-- 1 cozumpark cozumpark 10240 Jul 16 17:18 a.tar

-rw-rw-r-- 1 cozumpark cozumpark 1793 Jul 16 17:22 ab.tar.gz

-rw-rw-r-- 1 cozumpark cozumpark 2799 Jul 16 17:52 loglar.tar.gz

[cozumpark@artemis tar_ornek]$ tar -xvf a.tar à Arşivli dosyayı açmak

[cozumpark@artemis tar_ornek]$ ls -rlt

total 24

-rw-rw-r-- 1 cozumpark cozumpark 2460 Jul 16 17:15 a.log

-rw-rw-r-- 1 cozumpark cozumpark 10240 Jul 16 17:18 a.tar

-rw-rw-r-- 1 cozumpark cozumpark 1793 Jul 16 17:22 ab.tar.gz

-rw-rw-r-- 1 cozumpark cozumpark 2799 Jul 16 17:53 loglar.tar.gz

[cozumpark@artemis tar_ornek]$ tar -tvf loglar.tar.gz à Arşivli dosyanın için listelemek

-rw-rw-r-- cozumpark/cozumpark 2460 2011-07-16 17:15:22 a.log

-rw-rw-r-- cozumpark/cozumpark 2422 2011-07-16 17:18:10 b.log

-rw-rw-r-- cozumpark/cozumpark 3435 2011-07-16 17:15:35 c.log

-rw-rw-r-- cozumpark/cozumpark 3435 2011-07-16 17:18:18 d.log

[cozumpark@artemis tar_ornek]$ echo "icerik degisti" >> a.log

[cozumpark@artemis tar_ornek]$ tar -uvf loglar.tar.gz a.log àgzip ile sıkıştırılmış dosyalar update edilemez,arşivi açmanız gerekir

tar: Read 2799 bytes from loglar.tar.gz

tar: This does not look like a tar archive

tar: Skipping to next header

a.log

tar: Error exit delayed from previous errors

[cozumpark@artemis tar_ornek]$ gunzip loglar.tar.gz à arşivi sıkıştırılmamış hale getirdik

gunzip: loglar.tar.gz: decompression OK, trailing garbage ignored

[cozumpark@artemis tar_ornek]$ tar -uvf loglar.tar a.log à sonra a.log dosyasını tar arşivi içinde update ettik.

a.log

[cozumpark@artemis tar_ornek]$ tar -tvf loglar.tar

-rw-rw-r-- cozumpark/cozumpark 2460 2011-07-16 17:15:22 a.log

-rw-rw-r-- cozumpark/cozumpark 2422 2011-07-16 17:18:10 b.log

-rw-rw-r-- cozumpark/cozumpark 3435 2011-07-16 17:15:35 c.log

-rw-rw-r-- cozumpark/cozumpark 3435 2011-07-16 17:18:18 d.log

-rw-rw-r-- cozumpark/cozumpark 2475 2011-07-16 18:00:21 a.log

 

 

UYARI!! : Tar komutu ile dikkat edilmesi gereken önemli bir nokta sıkıştırmanın nerede yapılacağıdır.

 

Mesela cozumpark kullanıcısının ev dizininde yani /home/cozumpark altindaki bütün dosyaları arşivlemek için şu iki yöntem birbiriyle farklılık gösterir,

 

1-      tar –cvf cozumpark.tar /home/cozumpark/* (arşivlemeyi absolute path ile yapmak)

2-      cd /home/cozumpark; tar –cvf cozumpark.tar ./* (arşivlemeyi relative path ile,yani bulunulan yerde/yere göre yapmak)

 

Birinci yöntemde arşiv açılmak istendiğinde eğer açılan yerde /home/cozumpark dizini yok ise sistem o dizini oluşturmaya çalışır ve sonra onun altina dosyaları arşivden çıkarır.

İkinci yöntemde arşiv açılmak istendiğinde komutun çalıştırıldığı yere arşiv dosyalarını çıkartır.

 

 

Dosyaları Gzip veya Zip ile Sıkıştırmak

 

 

Gzip/gunzip, Zip/unzip: Dosyalarda sıkıştırma işlemi yapılmak istendiğinde gzip ve zip komutları kullanılabilir. İkiside sıkıştırma işlevi görür ama sıkıştırma algoritmaları ve oranları birbirinden farklıdır.

 

 

Gzip [seçenekler] sıkıştırılacak_dosyalar

 

 

Seçenekler(Options)

Açıklama

-d

Sıkıştırmayı aç

-f

Dosyalar açılırken bir benzerleri varsa üstüne yaz

-h

Help

-l

Sıkıştırılmış dosyanın içeriğini listele

-r

Eğer sıkıştırma dizin üstünde yapılıyorsa dizin altındakiler almak için kullanılır.

-v

Verbose mode,kullanıcıya ne olup ne bittiğini söyle

-1 / -9

-1 ile sıkıştırmayı çok hızlı yapar,ama sıkıştırma oranı düşük olur,-9 ile sıkıştırma hızı düşük ama sıkıştırma oranı yüksek olur.

 

 

[cozumpark@artemis zip_ornek]$ gzip a.log b.log -- > a.log ve b.log dosyalarını gzip ile sıkıştırdık.

[cozumpark@artemis zip_ornek]$ ls –rlt -- > dosya uzantıları .gz olarak değişti gördüğünüz gibi.

total 20

-rw-rw-r-- 1 cozumpark cozumpark 1122 Jul 16 19:14 a.log.gz

-rw-rw-r-- 1 cozumpark cozumpark 2424 Jul 16 19:15 b.log.gz

-rw-rw-r-- 1 cozumpark cozumpark 2422 Jul 16 19:16 d.log

-rw-rw-r-- 1 cozumpark cozumpark 3435 Jul 16 19:16 c.log

-rw-rw-r-- 1 cozumpark cozumpark 1240 Jul 16 19:16 a.zip

[cozumpark@artemis zip_ornek]$ gzip -d a.log.gz -- > -d seçeneği ile sıkıştırmayı açtık.

[cozumpark@artemis zip_ornek]$

[cozumpark@artemis zip_ornek]$ ls -lrt a.log

-rw-rw-r-- 1 cozumpark cozumpark 2460 Jul 16 19:14 a.log

[cozumpark@artemis zip_ornek]$

[cozumpark@artemis zip_ornek]$ gunzip b.log.gz -- > sıkıştırmayı açmak için isterseniz –d seçeneği yerine gunzip komutunu kullanabilirsiniz.

[cozumpark@artemis zip_ornek]$

[cozumpark@artemis zip_ornek]$ ls -lrt b.log

-rw-rw-r-- 1 cozumpark cozumpark 6275 Jul 16 19:15 b.log

 

 

zip [seçenekler] dosya_ismi sıkıştırılacak_dosyalar

 

 

 

Seçenekler(Options)

Açıklama

-h

Help

-r

Eğer sıkıştırma dizin üstünde yapılıyorsa dizin altındakiler almak için kullanılır.

-v

Verbose mode, kullanıcıya ne olup ne bittiğini söyle

-1 / -9

-1 ile sıkıştırmayı çok hızlı yapar, ama sıkıştırma oranı düşük olur,-9 ile sıkıştırma hızı düşük ama sıkıştırma oranı yüksek olur.

 

 

[cozumpark@artemis ~]$ cd

[cozumpark@artemis ~]$ mkdir zip_ornek;cd zip_ornek -- > kendimize zip komutu için bir yer oluşturduk

[cozumpark@artemis zip_ornek]$ touch a.log b.log c.log d.log

[cozumpark@artemis zip_ornek]$ ls -rtl

total 0

-rw-rw-r-- 1 cozumpark cozumpark 0 Jul 16 19:13 d.log

-rw-rw-r-- 1 cozumpark cozumpark 0 Jul 16 19:13 c.log

-rw-rw-r-- 1 cozumpark cozumpark 0 Jul 16 19:13 b.log

-rw-rw-r-- 1 cozumpark cozumpark 0 Jul 16 19:13 a.log

[cozumpark@artemis zip_ornek]$ zip a.zip a.log -- > a.log dosyasını sıkıştırdık ve a.zip ismini verdik.

adding: a.log (deflated 55%)

 

 

[cozumpark@artemis zip_ornek]$ ls –rtl -- > a.zip’in o dizin altında olduğunu gördük.

total 24

-rw-rw-r-- 1 cozumpark cozumpark 2460 Jul 16 19:14 a.log

-rw-rw-r-- 1 cozumpark cozumpark 6275 Jul 16 19:15 b.log

-rw-rw-r-- 1 cozumpark cozumpark 2422 Jul 16 19:16 d.log

-rw-rw-r-- 1 cozumpark cozumpark 3435 Jul 16 19:16 c.log

-rw-rw-r-- 1 cozumpark cozumpark 1240 Jul 16 19:16 a.zip

 

 

[cozumpark@artemis zip_ornek]$ unzip a.zip à sıkıştırmayı unzip komutu ile açtık.

Archive: a.zip

replace a.log? [y]es, [n]o, [A]ll, [N]one, [r]ename: y -- > aynı dizinde o dosyadan olduğunu anladı ve bize ne yapmak istediğimizi sordu,bizde replace et dedik.

inflating: a.log

[cozumpark@artemis zip_ornek]$cd -- > tekrar Home dizinimize döndük

[cozumpark@artemis ~]$ ls –rtl zip_ornek

drwxrwxr-x 2 cozumpark cozumpark 4096 Jul 16 19:25 zip_ornek

[cozumpark@artemis ~]$ zip -r zip_ornek.zip zip_ornek -- > az önce oluşturduğumuz ornek dosyayı içindekilerle beraber –r seçeneği ile sıkıştırdık.

adding: zip_ornek/ (stored 0%)

adding: zip_ornek/a.log (deflated 55%)

adding: zip_ornek/c.log (deflated 57%)

adding: zip_ornek/d.log (deflated 53%)

adding: zip_ornek/a.zip (stored 0%)

adding: zip_ornek/b.log (deflated 62%)

[cozumpark@artemis ~]$ ls –lrt zip_ornek.zip

-rw-rw-r-- 1 cozumpark cozumpark 8229 Jul 17 00:13 zip_ornek.zip

 

 

Standart Giriş,Çıkış,Hata Yönlendirme,Komut Çıktısını Yönlendirme

 

 

Unix&Linux sistemlerde bir komut çalıştırıldığı vakit , o komut veya iş için 3 adet dosya işaretcisi “file descriptor” denilen Input/Output(I/O) stream,kanalı açılır.

 

Bunlar

 

Standart giriş(Standart input (stdin),0 ile temsil edilir); Çalışan programın giriş/input kaynağını belirtmek için kullanılır, varsayılan giriş kaynağı terminaldir, çalıştığımız konsoldur.

 

Standart çıkış(Standart output(stdout), 1 ile temsil edilir);Çalışan programın normal çıktısını/output yönledirmek için kullanılır, varsayılan kaynak terminaldir, çalıştığımız konsoldur.

 

Standart hata(Standart error(stderr) ,2 ile temsil edilir); Çalışan programın hata çıktısını/error yönledirmek için kullanılır, varsayılan kaynak terminaldir, çalıştığımız konsoldur.

 

 

 

image010

 

 

 

Numara

Isim

Tanımlama

0

stdin

Standart in

1

stdout

Standart out

2

stderr

Standart error

 

 

Ayrıca bir komutun çıktısını, diğer komutun girişi yapmak için “|” işareti kullanılır.Pipe(boru) diyede anılır.İki komut arasında çıktının taşınması gibi bir işlev gördüğü için pipe denilmiştir.

Komut1|komut2 à Komut1’in çalışması neticesinde çıkan output/çıkışı, komut2’nin input/girişi olur.

 

 

Standart Girişin Yönlendirilmesi

 

 

Standart giriş’e terminal ekranından bir input verilmediğinde,”<” işareti ile yönlendirme yapılabilir.

 

Şimdi yonlendir isminde bir dosya oluşturup stdin’den bir dosya ismi bekleyen cat komutuna “<” işareti ile dosyayı vereceğiz.

 

 

[cozumpark@artemis ~]$ echo "selam,yonlendirme ornekleri" >> yonlendir

[cozumpark@artemis ~]$ ls -lrt yonlendir

-rw-rw-r-- 1 cozumpark cozumpark 27 Jul 17 00:36 yonlendir

[cozumpark@artemis ~]$ cat < yonlendir

selam,yonlendirme ornekleri

 

 

Mesela,cat komutunun stdin’dne input beklediğini şu şekilde gösterebiliriz, cat yazın Enter’a basın sonra selam yazın ,size echo yani yankı verecektir.

[cozumpark@artemis ~]$ cat

Selam

Selam

 

Standart Çıkış ve Hatanın Yönlendirilmesi

 

Standart çıkış ve hata yönlendirmesini “>” veya “>>”karakteri ile yapacağız.

 

Komut n>dosya

 

Komut n>>dosya

 

Burada n karakteri verilmez veya standart çıkış olan 1 verilirse, komutun standart çıktısı dosyaya yönlendirilir.

N karakteri yerine 2 verilirse komutun çalışması neticesinde alınan hatalar dosyaya yönlendirilir.

Yönlendirmedeki yönlendirme işaretinin tek olması “>”,eğer yönlendirilecek dosya yok ise oluşturulur, dosya var ise içini sıfırlar ve çıktıyı yönlendirir.

Yönlendirmedeki yönlendirme işaretinin çift olması “>>”,eğer yönlendirilecek dosya yok ise oluşturulur, dosya var ise çıktıyı dosyanın sonuna yönlendirir.

UYARI!!: “>” yönlendirmesi var olan dosyalar var ise içeriğini uçurduğu için kullanırken dikkat edilmeli.

 

 

 

Yönlendirme

Gösterimi

Sdtout’u dosyaya yönlendir

Komut > dosya

Sdterr’yi dosyaya yönlendir

Komut 2> dosya

Sdtout ve sdterr’yi aynı dosyaya yönlendir

Komut > dosya 2>&1,
komut >& dosya,
komut &>dosya

Sdtin’i dosyadan okumak

Komut < dosya

Sdtout’u dosyanın sonuna yönlendir

Komut >> dosya

Sdterr’i dosyanın sonuna yönlendir

Komut 2>> dosya

Sdtout’u ve sdterr’i dosyanın sonuna yönlendir

Komut >> dosya 2>&1

Komut1 çıktısını,komut2’nin girişi yapmak

Komut1|komut2

 

 

Örnek;

 

 

[cozumpark@artemis ~]$ mkdir io;cd io

[cozumpark@artemis io]$ touch a.log b.log c.log

[cozumpark@artemis io]$ man cp> a.log

[cozumpark@artemis io]$ man mv> b.log

[cozumpark@artemis io]$ man touch>c.log

 

 

a.log dosyasını listeledik ve a_dosya_cikti dosyasına yönlendirdik,normal ls komutunun çıktısı bu dosyanın içine yazılacak.

[cozumpark@artemis io]$ ls -lrt

total 16

-rw-rw-r-- 1 cozumpark cozumpark 6275 Jul 17 01:07 a.log

-rw-rw-r-- 1 cozumpark cozumpark 3435 Jul 17 01:07 b.log

-rw-rw-r-- 1 cozumpark cozumpark 2422 Jul 17 01:07 c.log

[cozumpark@artemis io]$ ls -lrt a.log > a_dosya_cikti

[cozumpark@artemis io]$

[cozumpark@artemis io]$ cat a_dosya_cikti

-rw-rw-r-- 1 cozumpark cozumpark 6275 Jul 17 01:07 a.log

 

 

Olmayan bir dosyayı(b_yanlis.log) listelemek istediğimizde normal çıktıyı b_dosya_cikti dosyasına,hataları b_dosya_cikti_hata dosyasına yönlendirdik. Dolayısıyla aradığımız dosya olmadığı için hata dosyasında hatanın yazması gerekli.

[cozumpark@artemis io]$ ls -lrt b_yanlis.log > b_dosya_cikti 2> b_dosya_cikti_hata

[cozumpark@artemis io]$

[cozumpark@artemis io]$ cat b_dosya_cikti

[cozumpark@artemis io]$

[cozumpark@artemis io]$ cat b_dosya_cikti_hata

ls: b_yanlis.log: No such file or directory

 

 

Normal çıktıyı ve hatayı aynı dosyaya b_dosya_ortak_cikti ya yönlendirdik.

[cozumpark@artemis io]$ ls -lrt b_yanlis > b_dosya_ortak_cikti 2>&1

[cozumpark@artemis io]$

[cozumpark@artemis io]$

[cozumpark@artemis io]$ cat b_dosya_ortak_cikti

ls: b_yanlis: No such file or directory

[cozumpark@artemis io]$

[cozumpark@artemis io]$

[cozumpark@artemis io]$ ls -lrt b_yanlis *.log > b_dosya_ortak_cikti 2>&1

[cozumpark@artemis io]$

[cozumpark@artemis io]$

[cozumpark@artemis io]$ cat b_dosya_ortak_cikti

ls: b_yanlis: No such file or directory

-rw-rw-r-- 1 cozumpark cozumpark 6275 Jul 17 01:07 a.log

-rw-rw-r-- 1 cozumpark cozumpark 3435 Jul 17 01:07 b.log

-rw-rw-r-- 1 cozumpark cozumpark 2422 Jul 17 01:07 c.log

 

 

Tee; Standart girişten okuduğunu, hem standart çıkışa hem de belirtilen dosyaya yazar.

Tee [seçenekler] dosya

 

 

 

Seçenek(Options)

Açıklama

-a,--append

Verilen dosyanın sonuna yaz

-i

İnterrupt sinyallerini göz ardı et.

--help

Yardımi görüntüle

--version

Versiyonu görüntüle

 

 

[cozumpark@artemis io]$ echo "selam tee ornek" > ornek.out

[cozumpark@artemis io]$ ls -rlt ornek.out

-rw-rw-r-- 1 cozumpark cozumpark 16 Jul 17 01:53 ornek.out

[cozumpark@artemis io]$

[cozumpark@artemis io]$ cat ornek.out

selam tee ornek

 

 

Cat komutu ile ornek.out’u okurken,tee komutu kenardan kenardan yazılanları okudu ve hem standart çıkışa hem de tee.out dosyasına yazdı.

[cozumpark@artemis io]$ cat ornek.out | tee tee.out

selam tee ornek

[cozumpark@artemis io]$ cat tee.out

selam tee ornek

[cozumpark@artemis ~]$ mkdir teee

[cozumpark@artemis ~]$

[cozumpark@artemis ~]$ cd teee/

[cozumpark@artemis teee]$

[cozumpark@artemis teee]$

[cozumpark@artemis teee]$ ls -rlt |tee tee_cikti1.out tee_cikti2.out tee_cikti3.out -- > ilk önce dizin boşken çıktı dosyalarını oluşturdu,dosyalar oluştuktan sonra ls’le listeledi,ls’in çıktısını o dosyaların içine yazdı.

total 3

-rw-rw-r-- 1 cozumpark cozumpark 0 Jul 17 02:00 tee_cikti3.out

-rw-rw-r-- 1 cozumpark cozumpark 0 Jul 17 02:00 tee_cikti2.out

-rw-rw-r-- 1 cozumpark cozumpark 0 Jul 17 02:00 tee_cikti1.out

[cozumpark@artemis teee]$

[cozumpark@artemis teee]$ ls -lrt

total 16

-rw-rw-r-- 1 cozumpark cozumpark 263 Jul 17 02:00 tee_cikti3.out

-rw-rw-r-- 1 cozumpark cozumpark 263 Jul 17 02:00 tee_cikti2.out

-rw-rw-r-- 1 cozumpark cozumpark 263 Jul 17 02:00 tee_cikti1.out

[cozumpark@artemis teee]$ cat tee_cikti1.out

total 4

-rw-rw-r-- 1 cozumpark cozumpark 0 Jul 17 02:00 tee_cikti3.out

-rw-rw-r-- 1 cozumpark cozumpark 0 Jul 17 02:00 tee_cikti2.out

-rw-rw-r-- 1 cozumpark cozumpark 0 Jul 17 02:00 tee_cikti1.out

 

 

Dosyalarda Metin Taraması ve Içerik Kontrolü Yapmak

 


Grep,Egrep,Fgrep;
Unix&Linux sistemlerde dosyalar içerisinde metin taraması yapmak istiyorsanız Grep,Egrep,Fgrep komutlarını kullanırız. Grep ve Egrep komutları ile bir veya birden fazla dosya içinde sadece bir karakter,bir dizi karakter,bir kelime veya bir cümle halinde,yada regular expression(regex) ifadeleri ile metin(pattern) araması yapabilirsiniz. Fgrep komutu ile regex kullanamazsınız sadece bir dizi karakter taraması yapabilirsiniz.

 

 

Grep; Grep komutları ailesinin yaptığı şey dosya içinde satır satır gezinerek dosyanın orjinaline zarar vermeden aradığınız ifadeyi ekrana veya yönlendirdiğiniz başka bir dosyaya yazmaktır.

Hepsinin kullanım şekli aynıdır.

grep [seçenekler] aranacak_ifade(pattern) dosya_ismi

 

 

-w seçeneği hariç diğer bütün seçenekler egrep ve fgrep tarafında kullanılabilir.

 

 

 

Seçenek(Options)

Açıklama

-i

Büyük ,küçük harf ayırt etmeden arar.

-l

Aranan ifadeyi barındıran dosyaların isimlerini listeler

-n

Aranan ifadenin dosya içinde geçtiği yerleri satır numaraları ile verir.

-c

Aranan ifadenin geçtiği satırların toplam sayısını verir.

-w

Aranan ifadeyi sadece kendisinin geçtiği satırları verir, substring(alt karakter kümesi) olarak geçtiği yerleri almaz.

-v

Aranan ifadenin olmadığı satırları verir.yani tam tersi.

 

 

 

Örnek;

[root@artemis ~]# cd;mkdir grep_ornek; cd grep_ornek/

[root@artemis grep_ornek]# touch a.txt b.txt

[root@artemis grep_ornek]# echo "1.cozumpark,ali,veli,deli" > a.txt

[root@artemis grep_ornek]# echo "2.cozumpark,ALI,veli,geli" >> a.txt

[root@artemis grep_ornek]#

[root@artemis grep_ornek]# echo "3.COZUMPARK,Ali,celi,keli" >> a.txt

[root@artemis grep_ornek]#

[root@artemis grep_ornek]# echo "1.burak,kulak,veli,deli" >> b.txt

[root@artemis grep_ornek]#

[root@artemis grep_ornek]# echo "2.kurak,kabakulak,reli,teli" >> b.txt

[root@artemis grep_ornek]# cat a.txt

1.cozumpark,ali,veli,deli

2.cozumpark,ALI,veli,geli

3.COZUMPARK,Ali,celi,keli

[root@artemis grep_ornek]# cat b.txt

1.burak,kulak,veli,deli

2.kurak,kabakulak,reli,teli

[root@artemis grep_ornek]# ls -rlt

total 8

-rw-r--r-- 1 root root 78 Jul 17 19:08 a.txt

-rw-r--r-- 1 root root 52 Jul 17 19:08 b.txt

[root@artemis grep_ornek]# grep -i cozumpark *.txt -- > büyük/küçük harf önemsiz olarak cozumpark kelimesini bütün sonu “.txt” ile biten dosyalarda ara

a.txt:1.cozumpark,ali,veli,deli

a.txt:2.cozumpark,ALI,veli,geli

a.txt:3.COZUMPARK,Ali,celi,keli

 

 

[root@artemis grep_ornek]#

[root@artemis grep_ornek]#

[root@artemis grep_ornek]# grep -w cozumpark *.txt -- > sadece cozumpark ifadesi gecen satırları getir.

a.txt:1.cozumpark,ali,veli,deli

a.txt:2.cozumpark,ALI,veli,geli

[root@artemis grep_ornek]#

[root@artemis grep_ornek]#

[root@artemis grep_ornek]# grep -w veli *.txt

a.txt:1.cozumpark,ali,veli,deli

a.txt:2.cozumpark,ALI,veli,geli

b.txt:1.burak,kulak,veli,deli

[root@artemis grep_ornek]#

[root@artemis grep_ornek]# grep -v veli *.txt

a.txt:3.COZUMPARK,Ali,celi,keli

b.txt:2.kurak,kabakulak,reli,teli

[root@artemis grep_ornek]#

[root@artemis grep_ornek]#

[root@artemis grep_ornek]# grep -vl veli *.txt

a.txt

b.txt

[root@artemis grep_ornek]# grep -vcl veli *.txt

a.txt

b.txt

[root@artemis grep_ornek]# grep -vc veli *.txt

a.txt:1

b.txt:1

 

 

Dosyalar içerisinde metin taraması yaparken regex metakarakterleri elimizi güçlendirecek. Bu metakarekterleri grep’le beraber Unix&Linux sistemlerde her komutun içinde kullanabilirsiniz. Ama regex’leri ençok kullandığımız komutlar grep ailesi ve find komutu.

 

 

Regular Expression Metakarakterleri

 

 

Metakarakter

Kapsam

Örnek

Sonuç

^

Satır başını belirtir.

‘^silgi’

Satır başlarında “silgi” geçen bütün satırları getirir.

$

Satır sonlarını belirtir.

‘kalem$’

Satır sonları “kalem” ile biten satırları getirir.

.

Sadece bir karakter ile eşleşir,bir karakter ifade eder

‘ if..e’

“if” ile başlayan sonra herhangi iki karakter gelen ve sonu “e” ile biten ifadeler geçen satırları getirir.

*

Kendinden önceki karakterden 0 veya daha fazla olmasını belirtir

‘[a-z]*’

Küçük alfabetik karakterlerle eşleşir veya hiçbirşeyle eşleşmez.

[ ]

Köşeli Parantez içindeki karakterlerden sadece biriyle eşleşir.

‘[Kk]alem

Kalem veya kalem içeren satırları getirir.

[^]

Köşeli parantez içinde olmayan karakterlerle eşleşir.

‘[^a-t]alak’

A ile t harfleri dahil ve bunların arasındaki harflerle başlamayacak ve “alak” ile devam edecek satırlar.

 

 

Şimdi az önce oluşturduğumuz grep_ornek dizini altındaki b.txt isimli dosyaya bazı eklemeler yaparak regex’leri kullanacağız.

 

Örnek2;

 

[cozumpark@artemis grep_ornek]$ echo "vatan,catan,katan,satan,sapan">> b.txt

[cozumpark@artemis grep_ornek]$ echo "anavatan,yurt,kurt,durt,tello" >> b.txt

[cozumpark@artemis grep_ornek]$ echo "yavruvatan,alo,kaylo,caylo,neman" >> b.txt

[cozumpark@artemis grep_ornek]$ cat b.txt

1.burak,kulak,veli,deli

2.kurak,kabakulak,reli,teli

vatan,catan,katan,satan,sapan

anavatan,yurt,kurt,durt,tello

yavruvatan,alo,kaylo,caylo,neman

 

 

[cozumpark@artemis grep_ornek]$ grep -n ^vatan b.txt à satır başında “vatan” kelimesi ile başlayan satırları getirir.

3:vatan,catan,katan,satan,sapan

 

 

[cozumpark@artemis grep_ornek]$ grep -n an$ b.txt -- > satır sonları “an” ile biten satırları getirir.

3:vatan,catan,katan,satan,sapan

5:yavruvatan,alo,kaylo,caylo,neman

 

 

[cozumpark@artemis grep_ornek]$ grep -n '...lo' b.txt -- > 5 harfli olan ve sonu “lo” ile biten kelimelerin geçtiği satırları getirir.

4:anavatan,yurt,kurt,durt,tello

5:yavruvatan,alo,kaylo,caylo,neman

 

 

[cozumpark@artemis grep_ornek]$ grep -n '[a-z]'vatan b.txt -- > içinde “vatan” ifadesi olacak ama başına herhangi bir veya birden fazla harf gelebilecek olan kelimelerin olduğu satırları getirir.

4:anavatan,yurt,kurt,durt,tello

5:yavruvatan,alo,kaylo,caylo,neman

 

 

[cozumpark@artemis grep_ornek]$ grep -n '[a-z]'*vatan b.txt -- > içinde “vatan” ifadesi olacak ama başında herhangi bir veya birden fazla harf olmayabilecek olan kelimelerin olduğu satırları getirir.

3:vatan,catan,katan,satan,sapan

4:anavatan,yurt,kurt,durt,tello

5:yavruvatan,alo,kaylo,caylo,neman

 

 

[cozumpark@artemis grep_ornek]$ grep -w sa[tp]an b.txt -- >ifadenin başında “sa” ,sonunda “an” olan, ortasında t veya p harflerinden biri olan satırları getirir.

vatan,catan,katan,satan,sapan

 

 

egrep; Şimdi egrep komutunu inceleyeceğiz, egrep komutu “extended regular expression” diye bilinir, yukarıda görmüş olduğumuz metakarakterlerden farklı olarak egreple birkaç metakarakter daha eklenir.

egrep [seçenekler] aranacak_ifade(pattern) dosya_ismi

 

 

Metakarakter

Kapsam

Örnek

Sonuç

+

Kendinden önceki karakter en az 1 veya daha fazla karakteri ifade eder.

[a-z]+tane

En az bir küçük harf veya daha fazlası olacak sonra tane ile devam edecek kelimeler.Hastane,pastane,yatakhane gibi kelimeler türetilebilir.

X|Y

Ya X’i ,ya da Y’i ifade eder. İkisinden birisi.

Kavun|Karpuz

Satırda Kavun veya Karpuz geçen ifadeleri getirir.

 

 

Örnek;

 

[root@artemis grep_ornek]# echo "kulak,dala,beli" >> b.txt

[root@artemis grep_ornek]# echo "ckulak,cala,reli" >> b.txt

[root@artemis grep_ornek]# cat b.txt

1.burak,kulak,veli,deli

2.kurak,kabakulak,reli,teli

kulak,dala,beli

ckulak,cala,reli

 

 

[root@artemis grep_ornek]# egrep [a-z]+kulak b.txt -- > sonunda kulak ifadesi olacak ve başında en az bir veya birden fazla harf gelecek.

2.kurak,kabakulak,reli,teli

ckulak,cala,reli

[root@artemis grep_ornek]# egrep 'kurak|beli' b.txt -- > kurak veya beli ifadeleri geçen satırları getirir.

2.kurak,kabakulak,reli,teli

kulak,dala,beli

 

 

fgrep; Fgrep komutu metakarakterleri düz karakter olarak algılar yani ‘*’ ın herhangi bir anlamı yoktur. Yıldız ifadesi geçen satırları getirir. Dümdüz arama yapar.Verdiğiniz string’I birşeylere yorayım derdinde değildir. Seçenek olarak grep komutundaki seçenekleri burada da kullanabilirsiniz.

 

 

fgrep [seçenekler] aranacak_ifade(pattern) dosya_ismi

 

 

[root@artemis grep_ornek]# echo "fgrep * i sadece yildiz olarak anlayacak">> fgrep.txt

[root@artemis grep_ornek]# cat fgrep.txt

1.burak,kulak,veli,deli

2.kurak,kabakulak,reli,teli

kulak,dala,beli

ckulak,cala,reli

fgrep * i sadece yildiz olarak anlayacak

[root@artemis grep_ornek]# fgrep -n '*' b.txt -- > içinde yıldız karakteri geçen satırı getirir.

5:fgrep * i sadece yildiz olarak anlayacak

 

 

wc; word count kısaca wc olarak geçen komut bir text dosyası içindeki satır sayısını, karakter sayısını, kelime sayısını verir.

 

 

 

Wc [seçenekler] dosya_ismi

Seçenekler(Options)

Açıklama

-c

Dosyayı byte olarak ifade eder.

-m

Dosyadaki karakter sayısını verir.

-l

Dosyadaki satır sayısını verir.

-w

Dosya içerisindeki kelimeleri sayar.

 

 

Örnek;

[root@artemis ~]#cd

[root@artemis ~]# mkdir wc_ornek;cd wc_ornek

[root@artemis wc_ornek]# echo "elma armut ceviz" >> wc.txt

[root@artemis wc_ornek]#

[root@artemis wc_ornek]# echo "seftali kavun" >> wc.txt

[root@artemis wc_ornek]#

[root@artemis wc_ornek]# cat wc.txt

elma armut ceviz

seftali kavun

[root@artemis wc_ornek]# wc wc.txt

2 5 31 wc.txt à2- satır sayısını,5-kelime adedini,31-toplam karakter sayısını veriyor.

 

 

Sort; Text dosyası içindeki satırları alfabetik olarak sıralama yapar. Dosyanın içine girmeden veya başka bir programa ihtiyaç olmadan dosyanızdaki değerleri sort komutu ile sıralayabilirsiniz.

Sonuçlar için bir dosya belirtmediğiniz sürece çıktıyı ekrana basar.

 

 

 

Seçenekler(Options)

Açıklama

-b

Boş satırları geçer,göz ardı eder.

-d

Sözlük sıralaması yapar.

-f

Dosyadaki satır sayısını verir.

-n

Numeric-Sayısal sıralama yapar.

-r

Tersine sıralama yapar.

-k pos1 pos2

Pos1. Sıradaki ifadelerden pos2.’ye kadar olan aradaki ifadeleri sıralar.

-o cikti_dosyası

Sıralamanın cevabını dosyaya yazar.

-tx

X’i ayıraç olarak kullanır. X’in yerine , veya : kullanılabilir.

-u

Sıralama yapıldıktan sonra birbirine benzeyen satırlar varsa sadece bir tanesini yazar.

 

 

Örnek;

 

[cozumpark@artemis sort_ornek]$ cat borc2.out

ahmet araba:500:eskisehir

tom ev:400:antalya

veli yat:200:side

mehmet kira:20:mugla

[cozumpark@artemis sort_ornek]$ sort borc2.out -- > borc2.out dosyasını ilk kelimelerine göre sıralar.

ahmet araba:500:eskisehir

mehmet kira:20:mugla

tom ev:400:antalya

veli yat:200:side

[cozumpark@artemis sort_ornek]$

[cozumpark@artemis sort_ornek]$ sort -t: +1 -2 borc2.out -- > : karakterini ayıraç olarak kullanıp,ayrılmış kolonlardan 2. Sine göre sıralama yap

mehmet kira:20:mugla

veli yat:200:side

tom ev:400:antalya

ahmet araba:500:eskisehir

[cozumpark@artemis sort_ornek]$ sort -t: +2 -3 borc2.out -- > : karakterini ayıraç olarak kullanıp,ayrılmış kolonlardan 3. Süne göre sıralama yap

tom ev:400:antalya

ahmet araba:500:eskisehir

mehmet kira:20:mugla

veli yat:200:side

[cozumpark@artemis sort_ornek]$ sort -t: -k 2,2 borc2.out-- > : karakterini ayıraç olarak kullanıp,ayrılmış kolonlardan 2. Sine göre sıralama yap

mehmet kira:20:mugla

veli yat:200:side

tom ev:400:antalya

ahmet araba:500:eskisehir

[cozumpark@artemis sort_ornek]$ sort -t: -k 3,4 borc2.out -o siralama.out-- > : karakterini ayıraç olarak kullanıp,ayrılmış kolonlardan 3 ile varsa 4. Kolan arasını sıralama yap

[cozumpark@artemis sort_ornek]$ cat siralama.out

tom ev:400:antalya

ahmet araba:500:eskisehir

mehmet kira:20:mugla

veli yat:200:side

 

 

Aradığımı bulamıyorum, dosyalarım ve dizinlerim nerede?

 


Find:
Sistemde dosya veya dizin araması yapmak istediğimizde find komutunu kullanırız. Aldığı seçenekler ve paremetrelerle çok güçlü bir komuttur. İstediğiniz türde, istediğiniz şekilde dosya ve dizinleri arayıp, onlar üstünde istediğiniz değişikliği gerçekleştirebilirsiniz.

 


Find [aranmaya_baslanacak_bolge] [seçenekler] yapılacak_islem

 

 

Find komutundaki [aranmaya_baslanacak_bolge] ifadesi aramanın başlayacağı noktayı gösterir.Aradığınız şeyin nerede olduğunu biliyorsanız arama zamanını kısaltmak için o dizinin altından başlatabilirsiniz;mesela tmp altında ise /tmp,bulunduğunuz yerin altında ise sadece “.” gibi,eğer bilmiyorsanız sadece “/” vererek File System’de baştan aşağıya her yeri aramasını isteyebilirsiniz. Ama yetkili bir kullanıcı(root ) değilseniz “/” itibaren aramalarda istediğiniz cevaplar gelmeyebilir.Ayrıca find komutu arama esnasında kriterlere uygun dosya ve dizin bulamazsa komutun çıktısına bir şey gelmez. Yani herhangi Output göremezsiniz.

Find komutunda seçeneklerde sayısal arguman alan ifadelerde +/- işaretleri vardır, bunlar

+sayı = o sayıdan büyük değerleri,+t_süresi olursa t zamanından sonraki değişiklikleri

-sayı= o sayıdan küçük değerleri, -t_süresi olursa t zamanından önceki değişiklikleri

Sayı= sayının kendisini gösterir.

 

 

 

Seçenekler(Options)

Açıklama

-name [expression]

En sık kullanılan seçenektir. Dosya veya dizin ismi vererek arama yapılmasını sağlar. –name “cozum.log” , -name “*.log” gibi

-user [kullanıcı_ismi]

Kullanıcı ismi veya kullanıcı id’si vererek o kullanıcaya ait dosya veya dizinleri bulur. –user cozumpark gibi

-type [bcdflsp]

Türüne göre arama yapmak için belirtilen seçeneklerden biri kullanılmalı. Bu seçeneklerin kısa açıklamaları şöyledir.
b:blok aygıt dosyası,c:karakter aygıt dosyası,d:dizin,f:normal dosya,l:sembolik link,s:soket,p:named pipe

-group [grup_ismi]

Dosya veya dizinin grubunu belirterek arama yapabiliriz.

-perm [izin]

Belirtilen izne sahip dosya veya dizinleri arama yapar.

-size [+/-dosya_boyutu]

Aranılan dosya veya dizinin boyutuna göre arama yapmak için kullanılır.

-nouser

Hiçbir kullanıcya ait olmayan dosya&dizinleri bulur.

-nogroup

Hiçbir gruba ait olmayan dosya&dizinleri bulur.

-newer [dosya_ismi]

Belirtilen dosya_isminden daha yeni olan dosya&dizinleri bulur.

-amin t

t dakika önce erişilmiş dosyalar

-atime t

t*24 saat önce erişilmiş dosyalar

-cmin t

t dakika önce statusu değişmiş dosyalar

-ctime t

t*24 saat önce statusu değişmiş dosyalar

-mmin t

t dakika önce modifiye edilmiş dosyalar

-mtime t

t*24 saat önce modifiye edilmiş dosyalar

-links l

l tane linkli olan dosyalar

-regex patern

Dosya ismi regualar expression pattern olan dosyalar.

 

 

Bulunacak dosyalar üstünde yapılacak_islem ler ise,

Bir komut çalıştırma şeklinde aşağıdaki gibi olabilir;

      -exec komut  {} \; à Direk komutu çalıştır. “{} \;” ifadesi find komutundan çıkan output simgeler. Mutlaka çalıştırılacak komuttan sonra yer alması gerekir.

                    -ok komut {} \; à Komutu çalıştırırken kullanıcıya sonuçları doğrula.

                    -ls à çıkan sonucu listele

                    -print -> çıkan sonucu print et, eğer printf kullanılırsa çeşitli biçimlerde print alınabilir.

                    | xargs komut à find komutunun çıktısını xargs’a vererek komutu işlettirir.

 

 

Örnekler;

 

 

Bulunduğunuz dizin ve altındaki dosyaların tamamını görmek için,her 3 komutta işe yarar;

 

find . -print

find -print

find .

 

/’dan itibaren belli bir dosya ismini aramak için;

 

find / -name dosya_ismi

 

Geçmiş 24 saatte(şimdi ile 1 gün öncesi arası) değiştirilmiş dosyaları bulmak için;

find . -mtime 0

Geçtiğimiz 24 saatten şimdiki ana kadar değişmiş olan dosyalar;

find . -mtime -1

24 saatle 48 saat arasında değişmiş dosyalar;

find . -mtime 1

48 saatten daha eski değişmiş tarihli dosyalar.49,50,51

find . -mtime +1

 

 

/etc’nin altında şimdi ile 10 dk içinde değişmiş dosyaları bulmak için;

find /etc –mmin -10 à yani 9,8,7,6,…

 

 

/etc’nin altında 10 dk öncesinde değişmiş dosyaları bulmak için;

find /etc –mmin +10 à yani 11,12,13,14,…

 

 

 

/etc’nin altında 6. Ve 9. Dk’lar arasında değişmiş dosyalar;

find /etc –mmin +5 –mmin -10 à yani 6,7,8,9dk

 

 

/home dizini altında cozumpark kullanıcısına ait bütün dosyalar;

find /home -user cozumpark

 

 

/tmp altında ve cozumpark kullanıcısına ait izni 755 olan bütün dizinleri listelemek için;

find /tmp –type d –user cozumpark –perm 755 –ls

 

 

/tmp altında uzantısı “.log” olan dosyaları bul ve sil;

find /tmp –type f –name “*.log” -ls à UYARI! : silme işlemi yapmadan önce arama neticesinde çıkan dosyaları bir kere listeleyin emin olun, sonra rm komutunu find’la birleştirirsiniz.Aşağıdaki 3 komutta bulunanan dosyalar üstünde silmeişlemini gerçekleştirir.

find /tmp –type f –name “*.log” | xargs /bin/rm –f

find /tmp –type f –name “*.log” -exec rm {} \;

Find komutu ile dosyaları bulup daha güvenli bir silme işlemi yapmak istiyorsanız

find /tmp –type f –name “*.log” -ok rm {} \; à Bu –ok size işlemi yapmadan önce doğrulattıracaktır!.

 

 

Aramayı aynı anda birden fazla bölgede yapmak istiyorsak mesela hem /var hem de /tmp altını görmek istiyorsak,iki path’ide aranacak bölge kısmına ekleriz.

find /var /tmp -type f -name "*.log" –ls

 

 

/var/html altında bulunan html dosyalarının izinlerini 644’e çekmek için;

find /var/html -name "*.html" -type f -exec chmod 644 {} \;

 

 

Dosyaları bulup arşivlemek için;

cd /tmp

touch a.log b.log c.log

find /tmp -type f -name "[abc].log"| xargs tar -cvf loglar.tar

Dosyaları bulup arşivleyip, sıkıştırmak için;

find /tmp -type f -name "[abc].log"| xargs tar -cjvf loglar.tar.bz2

Dosyaları bulup(sonu .log ile biten) bir yere kopyalamak için;

find /home/cozumpark –type f –name “*.log” -exec cp {} /tmp \;

 

--son--

Linux File System - Linux Dosya Sistemleri - Bölüm 4

$
0
0

 

 

Disk Bölümlendirme (Making Partitions)

 

Makalenin ilk bölümünü okumak için aşağıdaki linki kullanabilirsiniz

 

http://www.cozumpark.com/blogs/linux_unix/archive/2012/02/19/linux-file-system-linux-dosya-sistemleri-b-l-m-2.aspx

 

 

İşletim sistemlerinde çeşitli ihtiyaçlar gereği sistemimizde bulunan disklerde bölümlendirme(partition) yapmamız gerekebilir.

 

·         Birden çok işletim sistemi ihtiyacı; Dual veya daha fazla boot edeceğiniz işletim sisteminiz var ise, diskiniz üstünde diğer işletim sistemine uygun bölümleme yapmanız gerekir.

·         Kullandığınız uygulama veya veritabanı yönetim sistemleri için değişik tipteki ve büyüklükteki dosya sistemi ihtiyaçları gereği.

·         Büyük orandaki disk israfını önlemek için farklı ufak ufak dosya sistemi yapmak.

·         Kullanıcılar için özellikle ayrılması gereken alan ihtiyacı, kullanıcıların dosya boyutlarının büyüklükleri işletim sisteminin çalışmasını olumsuz yönde etkilememesi ihtiyacı gereği.

·         Dosya sisteminde veya sistemde meydana gelen arızalarda bütün veriyi kaybetme riskine karşı, farklı bölümler ve dosya sistemleriyle riski dağıtma stratejisi.

 

 

Disk üzerinde yapılan işlem sırası ise şu şekilde gerçekleşir;

 

·         Diskin formatlanması, üzerine data yazılıp/okunabilmesi için hazır hale getirilmesi. Günümüzde disk fabrikadan çıkmadan yapılmaktadır. Son kullanıcının bir fiil yapmasına gerek kalmamıştır.

·         Diskin bölümlendirilmesi(partitioning), diskin gerekli büyüklükteki alanlara ayrılması.(fdisk veya LVM ile)

·         Dosya sistemi yapılması, diskin tamamında veya Bölümlendirilen alanlarda gerekli dosya sisteminin oluşturulması (mke2fs)

·         Genel dosya sistemine bağlama, yeni yapılan dosya sisteminin genel dosya sistemine bağlanması(mount edilmesi) (mount,umount,/etc/fstab dosyası)

 


Linux&Unix ailesinde format kelimesi low-level formatting ve high level formatting olarak ikiye ayrılır. Low-level biçimlendirme fabrikada yapılan diskin hazır hale getirilmesi veya bölümlendirilmesi olarak niteleyebiliriz. High-level biçimlendirme ise disk bölünme dosya sistemi oluşturmak olarak söyleyebiliriz.

 

Windows ailesinde bulunan formatlama(biçimlendirme) terimi ise hem diski bölümlendirmeyi hem de dosya sistemi oluşturmayı içinde barındıran ortak ifadedir.

 

Eğer disk bölümlendirme işini bir program aracılığı ile yapmak istiyorsanız GNU parted veya Partition Magic gibi programları önerebiliriz.

 

 

Unix&Linux sistemlerde her şeyin bir dosya olduğundan bahsetmiştik. Şimdi disklerle uğraşacağımız için aygıt dosyalarına göz atacağız. Sisteminizde /dev altına bakarsanız hali hazırda var olan aygıt dosyalarını görebilirsiniz.

 

[root@artemis ~]# ls -l /dev

 

 

 

IDE tipli diskleriniz /dev/hdX şeklinde görünecektir. X ifadesi yerine var olan sıraya göre a,b,c..,z diye gidecektir. Mesela iki adet IDE diskiniz var ise bunlar /dev/hda,/dev/hdb şeklinde isimlendirilir ve kullanılır.Bazen CD-ROM’larda IDE olarak gösterilebilmektedir.Benim sanal Centos işletim sistemimde /dev altında CD-ROM şu şekilde görünüyor;

 

 

lrwxrwxrwx 1 root root 3 Feb 8 17:48 cdrom -> hdc

lrwxrwxrwx 1 root root 3 Feb 8 17:48 cdrom-hdc -> hdc

 

 

 

SCSI tipli diskleriniz ise /dev/sdXY şeklinde görünecektir.X ifadesi yerine var olan sıraya göre a,b,c..,z diye , Y yerine bölüm sayısına göre 1,2,.. diye gidecektir.

 

 

 

[root@artemis ~]# ls -l /dev/sd*

brw-r----- 1 root disk 8, 0 Feb 8 17:47 /dev/sda

brw-r----- 1 root disk 8, 1 Feb 8 17:48 /dev/sda1

brw-r----- 1 root disk 8, 2 Feb 8 17:47 /dev/sda2

brw-r----- 1 root disk 8, 16 Feb 8 17:47 /dev/sdb

brw-r----- 1 root disk 8, 17 Feb 8 17:47 /dev/sdb1

brw-r----- 1 root disk 8, 18 Feb 8 17:47 /dev/sdb2

brw-r----- 1 root disk 8, 21 Feb 8 17:47 /dev/sdb5

 

 

 

Burada dikkat etmeniz gereken noktalar,

 

 

1.       /dev altında bir aygıt dosyası gördüğünüzde illa onun sistemde olması gerektiği anlamına gelmez. Yani aygıt dosyası arka tarafta herhangi bir aygıta bağlı olmayabilir nihayetinde. Çünkü bazı aygıt dosyaları sistemde o aygıt olsa da olmasa da sistem kurulurken otomatik olarak yüklenir ilerisi için.

 

 

2.       Bir de /dev altında belirtilen aygıt dosyalarına biz yetkili kullanıcı olarak dokunabiliriz ama bu tavsiye edilmez. Mesela yazıcıdan çıktı almak için ,sistemi kontrol edip, yazıcı aygıt dosyasına herhangi bir text gönderdiğinizde yazıcıdan text çıkar fakat her yetkili kullanıcının sizin gibi yapmak istediğini varsayarsak ortaya kargaşa ve düzensizlik çıkar. Bunun için lpr komutu geliştirilmiştir,yazıcı işlemleri için bu komutun tercih edilmesi gerekir. “with Great power comes great responsibility”

 

 

[root@artemis ~]# ls -l /dev/lp*

crw-rw---- 1 root lp 6, 0 Feb 8 17:48 /dev/lp0

[root@artemis ~]#

[root@artemis ~]#

[root@artemis ~]# cat ornek.txt > /dev/lp0

 

 

3.       Ls komutunun çıktısında /dev altında gözüken satır başlarındaki “b” ve “c” nin ne olduğuna burada tekrar değinelim. “b” aygıtın “block device” olduğunu gösterir, yani okuma yazma işlemlerinde buffer cache denilen ara tampon bellek kullanır demektir. “c” ise “character device” demek olup buffer’ı bulunmaz.

 

 

Şimdi sistemimize disk işlemleri için yeni bir disk eklememiz gerekiyor. Bizim Linux Centos sistemimiz Vmware Workstation içinde olduğu için,şu yolu kullanıyoruz;

 

VmwareWorkstation ekranında VMàSettingsà HardwareàHarddisk seçilir ve Add deniliràNextà”Create a Virtual Disk”àSCSI ile Next àboyut olarak 2gb bize yeterliàNext->Finish.

 

Şimdi Vmware aracılığı ile sistemimize 2GB boyutunda format komutu ile disk üstünde temel işlemler yapabileceğimiz bir disk ekledik. Sistemimizi reboot ettik. Disk işlemlerinde root(yetkili kullanıcı ) olmamız gerekiyor.Sisteme cozumpark kullanıcısı ile tekrar login olup,ekranda boş bir yerde sağ klikàconsoleàsonra konsolda

 

su –“diyerek cozumpark kullanıcısından root kullanıcısının şifresini vererek root’a geçiş yaptık.

 

 

[cozumpark@artemis ~]$ su -

Password:

[root@artemis ~]#

 

 

Fdisk; Fdisk komutu Linux sistemlerde temel seviyede diskleri bölümlemek (partition), bölümleri türlerine göre ayırmak, diski yönetmek için kullanılır.Bir Linux sistem üstünde mimari gereği diskte en fazla 4 adet birincil bölümlendirme (primary partition) yapılabilir, eğer primary bölümlerden birisi genişletilmiş bölüm (extendent partition) olarak ayarlanırsa extendent altına mantıksal bölümler (logical partitions) yerleştirilebilir.

 

 

UYARI!! : Üstünde data olan bir diskte ne yaptığınızı bilmeden fdisk komutu ile iş yaparsanız, datanızı kaybetme riskiniz çok yüksektir.Biz örneklerimizde sistemimize eklediğimiz boş disk üstünde işlem yapıyoruz.

 

 

Fdisk [seçenekler] disk_ismi

 

 

 

Seçenekler(Options)

Açıklama

-l

Sistemde var olan diskleri ve bölümlerini listelemek için kullanılır.

-v

Fdisk komutunun versiyonunu listeler

-s bölüm_ismi

Verilen bölümün block cinsinden boyutunu ekrana basar.

 

 

Fdisk komutu menü içerikli bir programdır. Aşağıdaki seçenekler “fdisk [disk_ismi]” şeklinde verilen komutun akabinde gelen menüde uygulanmalıdır.

 

 

 

Seçenekler(Options)

Açıklama

p

Disk üstündeki bölümlemeleri/bölümleme tablosunu gösterir

m

Yardım komutudur,bütün seçenekleri açıklamaları ile gösterir.

n

Yeni bir disk bölümü oluşturur.

d

Disk bölümünü siler

q

Disk üstündeki değişiklikleri bölümleme tablosuna kaydetmeden çık

w

mevcut disk bölümünü bölümleme tablosuna kaydet ve fdisk menüsünden çık.

t

Disk bölümünün türünü gör veya değiştir.

 

 

BILGILENDIRME!!: Sonraki makalelerde ileri disk yönetimi (Logical Volume Management- LVM) ile diskler üstünde işlem yapılacaktır.

 

 

Fdisk komutunun çıktısını anlamak için aşağıdaki şekilleri inceleyelim. Silindir(Cylinder), track’lerden, track’ler de sector’lerden oluşur.Sector en küçük okuma/yazma birimi olarak geçer, çoğunlukla 512byte dır. Track,yan yana dizilmiş sector’lerden oluşan halkaya verilen isimdir. Diske ise platter denir. Her disk iki yüzlü olduğu varsayılır ve hem altta hem üstte okuyucu/yazıcı kafa (read-write head) olduğu hesap edilir. Diske tepeden baktığınızda sanki aynı sıralı tracklerin alt alta gelerek bir cylinder oluşturduğunu görürsünüz. Dolayısıyla aslında verileriniz iç içe geçmiş silindirlerin üstünde kaydedilir.

 

 

 

image001

 

 

 

Genelde bilgiler aynı silindir üstünde yazılmaya çalışılır, çünkü okuyucu-yazıcı kafanın seyahat süresi ve gerekli veriyi bulması(seek time) okuma hızından çok yüksektir. Eğer bilgileriniz aynı silindir üstünde kayıt edilememişse fragmented denilen parçalı veri halinde disk üzerine kaydedilmiş olur. Disk üzerindeki verinin parçalı olması performansı düşürücü etkenler arasındadır. Disk mimarisine aşağıdaki şekille bakacak olursak diskin ilk alanının MBR denilen Master Boot Record’un yer aldığını görürüz. MBR içinde sistemin hangi primary partitiondan yükleneceğini gösteren bir adres ve diskin genel bölümleme tablosunu tutan bilgiler mevcut. Sistem BIOS’u ilk once diskte MBR’I okur, MBR’da bak şu bölümün boot sektörünü okuyup sistemi aç, orası işletim sistemini boot edeceğin yer diye yol gösterir.

 

 

 

Master Boot Record(MBR)

     

Boot Sector

Primary Partition 1

   

Data bölgesi

   
   
   

Boot Sector

Primary Partition 2

   

Data bölgesi

   
   
   

Boot Sector

 

Extended Partition

 

Unused Boot Sector

Logical Partition 1

 

Data area

 
 
 

Unused Boot Sector

Logical Partition 2

 

Data area

 
 
 

 

 

Sisteminizdeki disklerde en az bir Primary bölümünüz olması gerek.Mimari gereği en fazla 4 adet primary bölümünüz olabilir. Bu mimari kısıtı aşmak için geliştirilmiş extended bölümlerin içine yerleştireceğiniz logical bölümlerle ihtiyacınız kadar diskiniz üstünde bölümleme yapabilirsiniz.Bu şekilde iki adet primary bölüm var, üçüncü olarak extended bölüm içinde de iki adet logical bölüm yerleştirilmiş.

 

 

Örnek;

 

 

[root@artemis ~]# fdisk –l

 

 

Disk /dev/sda: 8589 MB, 8589934592 bytes à1. Diskimiz, sistem kurulduğundan beri var olan disk.

 

 

255 heads, 63 sectors/track, 1044 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

 

 

Device Boot Start End Blocks Id System

 

/dev/sda1 * 1 13 104391 83 Linux

/dev/sda2 14 1044 8281507+ 8e Linux LVM

 

 

Disk /dev/sdb: 2147 MB, 2147483648 bytes à 2. Diskimiz, az önce workstation ekranından eklediğimiz disk. Üstünde herhangi bir bölümleme yok.

 

255 heads, 63 sectors/track, 261 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Disk /dev/sdb doesn't contain a valid partition table


Eklediğimiz 2. Disk /dev/sdb için Toplam Alan Hesabı

 

Toplam Alan= Kafa sayısı (Read-Write head) x bir track’teki sector sayısı x toplam track sayısı x sector boyutu (512 byte)

 

=255 x 63 x 261 x 512 byte

                 =2146798080 byte =~2GB

 

 

Şimdi sistemimize eklediğimiz 2. Disk olan /dev/sdb’yi 2 parçaya bölümleyip (1 primary partition, 1 extended partition) birinci bölüme bir File system oluşturalım, ikinci bölüm olan extended tarafa bir logical partition yapıp onu swap alanı yapalım.

 

 

[root@artemis ~]# fdisk /dev/sdb

Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel

Building a new DOS disklabel. Changes will remain in memory only,

until you decide to write them. After that, of course, the previous

content won't be recoverable.

 

 

Command (m for help): p -- > partitionları listeledik.

 

 

Disk /dev/sdb: 2147 MB, 2147483648 bytes

255 heads, 63 sectors/track, 261 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

 

 

Device Boot Start End Blocks Id System

 

 

Command (m for help): m -- > yardım menüsünü açtık ve komutları listeledik

Command action

a toggle a bootable flag

b edit bsd disklabel

c toggle the dos compatibility flag

d delete a partition

l list known partition types

m print this menu

n add a new partition

o create a new empty DOS partition table

p print the partition table

q quit without saving changes

s create a new empty Sun disklabel

t change a partition's system id

u change display/entry units

v verify the partition table

w write table to disk and exit

x extra functionality (experts only)

 

 

Command (m for help): n -- > yeni partition oluşturacağımızı ilettik

Command action

e extended

p primary partition (1-4)

p -- > Disk üstünde en az bir tane primary partition olmak zorunda !!!

Partition number (1-4): 1

First cylinder (1-261, default 1): -- > Enter ile geçtik, diskin ilk silindirinden başlayacağız.

Using default value 1

Last cylinder or +size or +sizeM or +sizeK (1-261, default 261): 130 à burada isterseniz boyut(size) olarak isterseniz silindir sayısı olarak alan belirtebilirsiniz.

 

 

Command (m for help): p

 

 

Disk /dev/sdb: 2147 MB, 2147483648 bytes

255 heads, 63 sectors/track, 261 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

 

 

Device Boot Start End Blocks Id System

/dev/sdb1 1 130 1044193+ 83 Linux

 

 

Command (m for help): n -- > extended partition için tekrar n dedik.

Command action

e extended

p primary partition (1-4)

e

Partition number (1-4): 2 -- > bu diskin 2. Bölümü olacak.

First cylinder (131-261, default 131): à Enter ile geçtik

Using default value 131

Last cylinder or +size or +sizeM or +sizeK (131-261, default 261): à Enter ile geçtik

Using default value 261

Command (m for help): p

 

 

Disk /dev/sdb: 2147 MB, 2147483648 bytes

255 heads, 63 sectors/track, 261 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

 

 

Device Boot Start End Blocks Id System

/dev/sdb1 1 130 1044193+ 83 Linux

/dev/sdb2 131 261 1052257+ 5 Extended

 

 

Command (m for help): n

Command action

l logical (5 or over)

p primary partition (1-4)

l -- > Extended partition üstüne artık Logical partition oluşturacağız.

First cylinder (131-261, default 131): à Enter ile geçtik, extended partition üstünden istediğimiz alanı seçebiliriz.

Using default value 131

Last cylinder or +size or +sizeM or +sizeK (131-261, default 261): à Enter ile geçtik

Using default value 261

 

 

Command (m for help): p

 

 

Disk /dev/sdb: 2147 MB, 2147483648 bytes

255 heads, 63 sectors/track, 261 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

 

 

Device Boot Start End Blocks Id System

/dev/sdb1 1 130 1044193+ 83 Linux

/dev/sdb2 131 261 1052257+ 5 Extended

/dev/sdb5 131 261 1052226 83 Linux à isimlendirmelere dikkat etmek gerek

 

 

Command (m for help): t -- > swap alanı için logical partition için tip değiştireceğiz.

Partition number (1-5): 5

Command (m for help): L

 

 

0 Empty                                1e Hidden W95 FAT1      80 Old Minix       bf Solaris

1 FAT12                                24 NEC DOS        81 Minix / old Lin              c1 DRDOS/sec (FAT-

2 XENIX root       39 Plan 9                              82 Linux swap / So           c4 DRDOS/sec (FAT-

3 XENIX usr         3c PartitionMagic             83 Linux                                c6 DRDOS/sec (FAT-

4 FAT16 <32M     40 Venix 80286                 84 OS/2 hidden C:            c7 Syrinx

5 Extended         41 PPC PReP Boot            85 Linux extended           da Non-FS data

6 FAT16                                42 SFS                   86 NTFS volume set        db CP/M / CTOS / .

7 HPFS/NTFS      4d QNX4.x           87 NTFS volume set        de Dell Utility

8 AIX                      4e QNX4.x 2nd part         88 Linux plaintext             df BootIt

9 AIX bootable 4f QNX4.x 3rd part           8e Linux LVM     e1 DOS access

a OS/2 Boot Manag         50 OnTrack DM                 93 Amoeba         e3 DOS R/O

b W95 FAT32      51 OnTrack DM6 Aux      94 Amoeba BBT                e4 SpeedStor

c W95 FAT32 (LBA)           52 CP/M                               9f BSD/OS           eb BeOS fs

e W95 FAT16 (LBA)          53 OnTrack DM6 Aux      a0 IBM Thinkpad hi          ee EFI GPT

f W95 Ext'd (LBA)             54 OnTrackDM6                a5 FreeBSD         ef EFI (FAT-12/16/

10 OPUS                               55 EZ-Drive         a6 OpenBSD       f0 Linux/PA-RISC b

11 Hidden FAT12               56 Golden Bow                a7 NeXTSTEP      f1 SpeedStor

12 Compaq diagnost       5c Priam Edisk    a8 Darwin UFS   f4 SpeedStor

14 Hidden FAT16 <3        61 SpeedStor     a9 NetBSD           f2 DOS secondary

16 Hidden FAT16              63 GNU HURD or Sys      ab Darwin boot                 fb VMware VMFS

17 Hidden HPFS/NTF      64 Novell Netware          b7 BSDI fs                            fc VMware VMKCORE

18 AST SmartSleep          65 Novell Netware          b8 BSDI swap     fd Linux raid auto

1b Hidden W95 FAT3      70 DiskSecure Mult         bb Boot Wizard hid          fe LANstep

1c Hidden W95 FAT3       75 PC/IX                               be Solaris boot ff BBT

 

 

Hex code (type L to list codes): 82

Changed system type of partition 5 to 82 (Linux swap / Solaris)

 

 

Command (m for help): p -- > gördüğünüz gibi eklediğimiz 2. Diski istediğimiz formata getirdik.

 

 

Disk /dev/sdb: 2147 MB, 2147483648 bytes

255 heads, 63 sectors/track, 261 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

 

 

Device Boot Start End Blocks Id System

/dev/sdb1 1 130 1044193+ 83 Linux

/dev/sdb2 131 261 1052257+ 5 Extended

/dev/sdb5 131 261 1052226 82 Linux swap / Solaris

 

 

Command (m for help): w -- > Disk üstünde bir değişiklik yaptıktan sonra kaydetmek istiyorsanız MUTLAKA w ile değişiklikleri kaydederek çıkın, kaydetmek istemiyorsanız q ile çıkabilirsiniz.

The partition table has been altered!

 

 

Calling ioctl () to re-read partition table.

Syncing disks.

[root@artemis ~]# fdisk –l -- > fdisk’le sistemdeki disklerin bölümlendirmelerine tekrar bakıyoruz.

 

 

Disk /dev/sda: 8589 MB, 8589934592 bytes

255 heads, 63 sectors/track, 1044 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

 

 

Device Boot Start End Blocks Id System

/dev/sda1 * 1 13 104391 83 Linux

/dev/sda2 14 1044 8281507+ 8e Linux LVM

 

 

Disk /dev/sdb: 2147 MB, 2147483648 bytes

255 heads, 63 sectors/track, 261 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

 

 

Device Boot Start End Blocks Id System

/dev/sdb1 1 130 1044193+ 83 Linux

/dev/sdb2 131 261 1052257+ 5 Extended

/dev/sdb5 131 261 1052226 82 Linux swap / Solaris

[root@artemis ~]#

 

 

Aşağıdaki şekilde de gördüğünüz gibi bu örnekte /dev/sdb diski üzerinde bir tane zorunlu olan primary bölümü yaptıktan sonra ikinci primary alanı extended olarak tanımladık. Sonrasında extended alanın tamamının içine Swap alanı olarak kullanacağımız bir logical bölüm yerleştirdik.

 

 

 

/dev/sdb isimli Disk

   

Master Boot Record(MBR)

     

Boot Sector

Primary Partition 1 /dev/sdb1

   

Data bölgesi

   
   
   

Boot Sector

 

Extended Partition /dev/sdb2

 

Unused Boot Sector

Logical Partition 1 /dev/sdb5

 

Data area

 
 
 
 
 
 
 

 

 

Dosya Sistemi(File System) Oluşturmak


Mke2fs komutu;
ext2,ext3 tipinde dosya sistemleri oluşturmak için kullanılan bir komuttur. –j seçeneği ile ext3 tipinde biçimlendirme yapar. Bizde genellikle –j seçeneği ile kullanacağız.


Diğer seçenekleri için man mke2fs diyerek bakabilirsiniz.

 

[root@artemis ~]# mke2fs -j /dev/sdb1 -- > mke2fs komutu –j seçeneği ile diski ext3 formatında biçimlendiriyor. Biz birinci primary bölümümüzü ext3 tipinde biçimlendiriyoruz.

mke2fs 1.39 (29-May-2006)

Filesystem label=

OS type: Linux

Block size=4096 (log=2)

Fragment size=4096 (log=2)

130560 inodes, 261048 blocks

13052 blocks (5.00%) reserved for the super user

First data block=0

Maximum filesystem blocks=268435456

8 block groups

32768 blocks per group, 32768 fragments per group

16320 inodes per group

Superblock backups stored on blocks:

32768, 98304, 163840, 229376

 

 

Writing inode tables: done

Creating journal (4096 blocks): done

Writing superblocks and filesystem accounting information: done

 

 

This filesystem will be automatically checked every 35 mounts or

180 days, whichever comes first? Use tune2fs -c or -i to override.

 

 

Sonrasında bu biçimlendirilmiş aygıtı dosya sistemine bağlayabilmek için bir bağlama noktasına (mount point) ihtiyacımız var. Onun için aşağıdaki şekilde /myfs diyerek hemen “/” kökünün altına myfs isminde

Bir dizin oluşturduk ve bunu dosya sistemimizi bu noktaya mount komutu ile bağladık.

 

 

[root@artemis ~]# mkdir /myfs -- > Oluşturacağımız yeni FS için bir dizin oluşturduk.

[root@artemis ~]#

[root@artemis ~]# mount /dev/sdb1 /myfs -- > mke2fs komutu ile ext3 formatladığımız /dev/sdb1’e /myfs’I mount ettik.

[root@artemis ~]#

[root@artemis ~]# df –h -- > sistemde var olan FS’leri ve doluluk oranlarını listeledik ve /myfs’in mount edilmiş olduğunu gördük.

Filesystem Size Used Avail Use% Mounted on

/dev/mapper/VolGroup00-LogVol00

6.7G 3.0G 3.4G 47% /

/dev/sda1 99M 19M 76M 20% /boot

tmpfs 252M 0 252M 0% /dev/shm

/dev/sdb1 1004M 18M 936M 2% /myfs

[root@artemis ~]#

 

 

Mount; Bir dosya sisteminin kullanılabilir hale gelmesi için sistemde mount edilmiş olması gerekir. Bunu da mount komutu yardımıyla hallederiz.


Mount –t fstype –o seçenekler aygıt_ismi dizin_ismi

 

Fstype; mount edilecek dosya sisteminin tipini belirtir. Ext2,Ext3,fat,JFS gibi. İsterseniz kullanmayabilirsiniz. Sistem kendisi atamaya da çalışabilir.

 

Aygıt_ismi; Biçimlendirilmiş aygıtın ismi.

 

Dizin_ismi; Biçimlendirilmiş aygıtın genel dosya sistemine bağlanacağa nokta. Bu dizinin boş olması gerekir. Eğer önceden var ve içi dolu olan bir dizin ismini mount point olarak seçerseniz , bağlı olduğunuz aygıtı umount etmeden önceden var olan o dizin içindeki bilgilere erişemezsiniz.

 

 

Bir önceki dosya sistemi makalemizde /etc/fstab dosyasında belirttiğimiz seçenekler kısmındaki seçeneklerle aynıdır. Biz burada en sık kullanılan mount seçeneklerini listeleyeceğiz.

 

 

 

Seçenekler(Options)

Açıklama

defaults

rw,suid,dev,exec,auto,nouser,async -- > defaults dediğinizde bu seçenekler gelmiş olur.

Auto veya noauto

Sistem boot edince veya mount –a komutu verilince dosya sistemleri otomatik mount olur veya olmaz.

User veya nouser

sadece root kullanıcısının dosya sistemini mount edebilmesi,diğer kullanıcılara hak verilip veya verilmemesi.

Ro veya rw

Sadece okuma izinli veya okuma+yazma izinli

remount

Mount edili halde iken tekrar umount,mount işleminin gerçekleştirilmesi.

 

 

 

Umount; Canlı sistemde görmek istemediğiniz veya kullanmadığınız bir dosya sistemini genel sistemden geçici süreliğine pasif hale getirmek isterseniz umount komutunu kullanırız. Umount ederken mount noktasını veya mount noktasının bağlı olduğu aygıt ismini verebiliriz.

 

 

umount [−a][−f][−t fstype] mountpoint | aygıt_ismi

 

 

Seçenekler(Options)

Açıklama

-a

Bütün dosya sistemlerini umount et. Canlı sistemde yapmaMAnız tavsiye edilir.Sistemde çalışan uygulama ve database ‘leriniz bozulabilir.

-f

Umount etmeye force edebilirsiniz.

-t

-t ext3 diyerek ext3 tipindeki dosya sistemlerini umount edebilirsiniz.

Mount point

Dosya sisteminizin bağlı olduğu nokta.

 

 

Bu yaptığımız yeni FS’i yani /myfs ‘i system boot ettikten sonrada gelmesini istiyorsak /etc/fstab dosyasına bunu yazmamız gerekiyor. Şimdilik aşağıdaki echo ile değişiklikleri kaydedebiliriz.

 

[root@artemis ~]# cat /etc/fstab

/dev/VolGroup00/LogVol00 / ext3 defaults 1 1

LABEL=/boot /boot ext3 defaults 1 2

tmpfs /dev/shm tmpfs defaults 0 0

devpts /dev/pts devpts gid=5,mode=620 0 0

sysfs /sys sysfs defaults 0 0

proc /proc proc defaults 0 0

/dev/VolGroup00/LogVol01 swap swap defaults 0 0

 

 

[root@artemis ~]#

[root@artemis ~]# echo "/dev/sdb1 /myfs ext3 defaults 0 0" >> /etc/fstab

[root@artemis ~]#

[root@artemis ~]# cat /etc/fstab

/dev/VolGroup00/LogVol00 / ext3 defaults 1

LABEL=/boot /boot ext3 defaults 1 2

tmpfs /dev/shm tmpfs defaults 0 0

devpts /dev/pts devpts gid=5,mode=620 0 0

sysfs /sys sysfs defaults 0 0

proc /proc proc defaults 0 0

/dev/VolGroup00/LogVol01 swap swap defaults 0 0

/dev/sdb1 /myfs ext3 defaults 0 0

[root@artemis ~]#

[root@artemis ~]# umount /myfs -- > /etc/fstab dosyasına değişiklikleri kaydettik ve denemesini yapıyoruz.umount ettik.

[root@artemis ~]#

[root@artemis ~]# mount /myfs -- > /myfs’I mount etmeye çalıştığımızda system bunu /etc/fstab dosyasına bakarak okuyacak ve mount edecek.

[root@artemis ~]#

[root@artemis ~]# df –h --> gördüğünüz gibi /myfs’i mount etti, gönül rahatlığıyla kullanabilirsiniz.

Filesystem Size Used Avail Use% Mounted on

/dev/mapper/VolGroup00-LogVol00

6.7G 3.0G 3.4G 47% /

/dev/sda1 99M 19M 76M 20% /boot

tmpfs 252M 0 252M 0% /dev/shm

/dev/sdb1 1004M 18M 936M 2% /myfs

 

 

Genelde umount etmek istediğiniz dosya sistemleri üzerinde kullanılan dosyaların varlığı veya bir kullanıcının o dizinde olması nedeniyle umount işlemi başarısız olur. Mesela paralelde cozumpark kullanıcıs ile root’tan cozumpark geçip /myfs mount noktasına geçelim.Root olarak da /myfs’e geçelim ve üçüncü bir shell’den lsof’la /myfs in kullanım durumuna bakalım.

 

 

### Shell-1

[root@artemis ~]# su - cozumpark

[cozumpark@artemis ~]$ cd /myfs

[cozumpark@artemis myfs]$

 

 

#### Shell-2

[root@artemis ~]# cd /myfs

[root@artemis myfs]#

 

 

#### Shell-3

[root@artemis ~]# lsof /myfs

COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME

bash 17061 root cwd DIR 8,17 4096 2 /myfs

bash 18973 cozumpark cwd DIR 8,17 4096 2 /myfs

[root@artemis ~]#

[root@artemis ~]# umount /myfs

umount: /myfs: device is busy

umount: /myfs: device is busy

 

 

Bu konumda –f force ederek umount etme işlemi çalışmayabilir. Onun için tavsiyemiz eğer o bir kullanıcı ise haber vererek, o dizinden ayrılmasını işlemleri bitirmesini söyleyin, eğer bir uygulama ise uygulamayı durdurarak dosya sisteminizi boşa çıkarmaya çalışın. Çünkü zorlayarak veya kill ederek çözüme giderseniz istenmeyen durumlarla karşılaşabilirsiniz.

 

 

Sisteme Swap Alanı Eklemek

 

Swap alanını sistemlerde RAM yeterli olmadığı zaman, sistemin RAM’ın içindeki bazı bilgileri geçici olarak disk üstünde özel bir yere yazma ihtiyacı hissetmesinden doğan alan olarak açıklayabiliriz.

 

Linux sistemimize iki şekilde swap alanı ekleyebiliriz. Birincisi yukarıda elde ettiğimiz gibi bir diskin bölümünü alıp swap alanı olarak tanıtarak veya , herhangi bir dosyayı sisteme swap dosyası diye bildirerek yapabiliriz.

 

 

Sistemimizde var olan swap alanını free –m komutu ile görebiliriz.

 

[root@artemis ~]# free -m

total used free shared buffers cached

Mem: 502 458 44 0 26 329

-/+ buffers/cache: 103 399

Swap: 1023 0 1023

 

 

Method-1 , Swap Olarak Bölümlendirilmiş Diskin Parçasını Sisteme Eklemek

 

Yöntem olarak şu adımlar takip edilir;

 

1.       Fdisk ile belirlediğimiz disk üzerinde swap alanı oluşturulur, yine fdisk içinde tipi x082 olarak değiştirilir.

2.       “Mkswap aygıt_ismi” komutuyla swap’e hazır hale getirilir.

3.       “Swapon aygıt_ismi” komutuyla swap aktif hale getirilir.

4.       Eğer sistem boot ettikten sonrada kullanılmak isteniyorsa, swap alanı (kalıcı olması için)/etc/fstab dosyasına eklenir.

 

Yukarıda swap alanı için hazır hale getirdiğimiz /dev/sdb5’i sisteme swap alanı olarak tanıtıyoruz.Öncesinde fdisk menüsünde swap alanı olarak biçimlendirmiştik hatırlarsanız.

 

Mkswap komutuyla bu bölümü swap’e hazır hale getiriyoruz.

 

[root@artemis ~]# mkswap /dev/sdb5

Setting up swapspace version 1, size = 1077473 kB

[root@artemis ~]#

[root@artemis ~]# swapon /dev/sdb5 -- > Sistem tarafından kullanılır hale getiriyoruz.

[root@artemis ~]#

[root@artemis ~]# free -m

total used free shared buffers cached

Mem: 502 458 44 0 26 329

-/+ buffers/cache: 103 399

Swap: 2051 0 2051 à swap alanımız artmış durumda.

 

 

Bu swap alanının system boot ettikten sonrada kullanılabilmesi için yine öğrendiğimiz gibi /etc/fstab dosyasına kaydetmemiz gerekli.

 

Yine echo komutu yardımıyla aşağıdaki ifadeyi fstab dosyasına yazdırıyoruz.

[root@artemis ~]# echo "/dev/sdb5 swap swap defaults 0 0" >> /etc/fstab

[root@artemis ~]# cat /etc/fstab

/dev/VolGroup00/LogVol00 / ext3 defaults 1 1

LABEL=/boot /boot ext3 defaults 1 2

tmpfs /dev/shm tmpfs defaults 0 0

devpts /dev/pts devpts gid=5,mode=620 0 0

sysfs /sys sysfs defaults 0 0

proc /proc proc defaults 0 0

/dev/VolGroup00/LogVol01 swap swap defaults 0 0

/dev/sdb1 /myfs ext3 defaults 0 0

/dev/sdb5 swap swap defaults 0 0

 

 

Method-2, Swap Olarak Herhangi Bir Dosyayı Sisteme Eklemek

 

Bu metodu eğer diskin üzerinde bölümleyecek kadar alan kalmamış ama önceden bölümlenmiş alanlarda var olan büyük boşlukta kullanılmayan alan varsa tercih edebilirsiniz.

 

Genellikle kriz durumlarında sistemde memory yetmezliği nedeniyle göçüş yaşanmaması için uygulanır. Ama normalde swap alanlarının daha sık disk işlemi( I/O ) gerçekleştirdiğini unutmayın.

 

Günümüzde RAM teknolojisi ucuzladığı için pek de ihtiyaç kalmıyor diyebiliriz.

 

 

Yöntem olarak şu adımlar takip edilir;

 

1.       Swap yapılacak bir dosya sistemi,bir disk,bir alan tayin edilir.

2.       Belirlenen alan üstünde dd komutuyla bir dosya oluşturulur.

3.       “Mkswap dosya_ismi” komutuyla swap’e hazır hale getirilir.

4.       “Swapon dosya_ismi” komutuyla swap aktif hale getirilir.

5.       Eğer sistem boot ettikten sonrada kullanılmak isteniyorsa,swap alanı (kalıcı olması için)/etc/fstab dosyasına eklenir.

 

Blok boyutu 1024 ve dosya boyutu 64MB olan swap dosyasını dd komutu ile oluşturduk.

 

 

                    dd if=/dev/zero of=/swapfile bs=1024 count=65536
 
 

[root@artemis tmp]# dd if=/dev/zero of=swapfile bs=1024 count=65536

65536+0 records in

65536+0 records out

67108864 bytes (67 MB) copied, 0.846699 seconds, 79.3 MB/s

 

 

[root@artemis tmp]# mkswap /tmp/swapfile

Setting up swapspace version 1, size = 67104 kB

[root@artemis tmp]#

[root@artemis tmp]# free -m

total used free shared buffers cached

Mem: 502 494 8 0 101 260

-/+ buffers/cache: 131 371

Swap: 2051 0 2051

[root@artemis tmp]#

[root@artemis tmp]# swapon /tmp/swapfile

[root@artemis tmp]#

[root@artemis tmp]# echo "/tmp/swapfile swap swap defaults 0 0" >> /etc/fstab

[root@artemis tmp]#

[root@artemis tmp]#

[root@artemis tmp]# cat /etc/fstab

/dev/VolGroup00/LogVol00 / ext3 defaults 1 1

LABEL=/boot /boot ext3 defaults 1 2

tmpfs /dev/shm tmpfs defaults 0 0

devpts /dev/pts devpts gid=5,mode=620 0 0

sysfs /sys sysfs defaults 0 0

proc /proc proc defaults 0 0

/dev/VolGroup00/LogVol01 swap swap defaults 0 0

/dev/sdb5 swap swap defaults 0 0

/dev/sdb1 /myfs ext3 defaults,usrquota,grpquota 0 0

/tmp/swapfile swap swap defaults 0 0

 

 

[root@artemis tmp]# free –m à yaptığımız işlemler sonucu 64MB daha swap alanımızı artırmış olduk.

total used free shared buffers cached

Mem: 502 494 8 0 101 260

-/+ buffers/cache: 131 371

Swap: 2115 0 2115

 

 

Dosya Sisteminin Sağlığını Kontrol Etmek

 

 

Fsck; sisteminiz açılırken hangi mount noktalarına dosya sistemlerini nasıl bağlayacağını /etc/fstab dosyasından bakarak ilerlediğini söylemiştik. Ext3 tipli,(günlüklü-journaled) dosya sistemleri için sistem açılırken kontrol işlemi yapıyor veya belirli aralıklarla kendisi kontrol ediyor. Siz ayrıca bir dosya sistemi üstünde içerik kontrol ve tutarlılık testi yapmak istiyorsanız fsck komutunu kullanabilirsiniz.Yalnız kontrol edeceğiniz dosya sisteminin kullanılmadığından ve umount durumda olduğundan emin olun.

 

 

[root@artemis tmp]# fsck /myfs -- > mount edili halde iken fsck çalıştırdık ve system bize uyarı verdi.

fsck 1.39 (29-May-2006)

e2fsck 1.39 (29-May-2006)

/dev/sdb1 is mounted.

WARNING!!! Running e2fsck on a mounted filesystem may cause

SEVERE filesystem damage.

Do you really want to continue (y/n)? no

check aborted.

 

 

[root@artemis tmp]# umount /myfs

[root@artemis tmp]#

[root@artemis tmp]#

[root@artemis tmp]# fsck /myfs

fsck 1.39 (29-May-2006)

e2fsck 1.39 (29-May-2006)

/dev/sdb1: clean, 15/130560 files, 8571/261048 blocks

 

 

Burada bizim sistemimiz temiz çıktı ama sizin dosya sisteminiz hasarlı halde olabilir ve fsck komutu size şunu şöyle yapayım mı? diye bir uyarıda bulunursa default da “yes” diyerek geçmeniz tavsiye edilir.

Çünkü dosya sisteminin yapısını çok detaylı bilmiyor iseniz farklı kararlar vererek işi çözülmez kılabilirsiniz.

 

 

Linux VI Editörü – Bölüm 5

$
0
0


Unix Linux sistemleri yönetmek ve bir şeyler yapmak istiyorsanız konsolda çalışmayı bilmeniz gerekir. Çünkü her zaman masaüstüyle karşılaşmazsınız ayrıca bu çalışmaları yaparken de dosyalarla uğraşırken bir editör kullanmanız şart. Peki, bu Linux âleminde editörler arasında en yaygın olanı ve olmazsa olmazı nedir derseniz? Cevabımız, tabi ki vi. Visual editor = vi.

 

 

Sevgili Linux sistem yöneticisi olmaya aday arkadaşlarım, sadece bir sistemin dosyalarını editlemek kolay bir iş ama yönettiğiniz yüzlerce sistem varsa hepsinde GUI açıp mı editlemek yapacaksınız?

Eğer Vi editöründen haz etmezseniz sizlere Pico ve emacs gibi başka editörleri de önerebilirim.

 

 

Şimdi bir önceki makalede VMware kurduğumuz CentOS 5.4 sistemimize cozumpark kullanıcısı ve şifresi ile login olup bir konsol açalım. Bir önceki makaleden nasıl açıldığına bakılabilir. Komut satırına vi yazıp Enter’a basarsanız size vi içi boş sayfa getirecektir.(network ayarlarını öğrendikten sonra bizde remote bağlanacağız! Şimdilik Vmware ara yüzünden devam ediyoruz.)

 


vi [seçenekler] dosya_ismi

 


[cozumpark@artemis ~]$ vi --> sadece vi dedikten sonra dosya ismi vermezsek içi boş editleme alanı getirir. Sonrasında yapılan işlemleri kaydetmek için bir dosya ismi ister.
[cozumpark@artemis ~]$

 

 

image001

 

 

Editörden çıkmak için : (Colon) ve q ile çıkabilirsiniz. Vi editörü text bazlı full ekran modda çalışan bir editör dür. İki modu vardır.

 

  1. Command mode(komut modu); Dosyanın üstünde dosyanın içine girmeden yapılan işlemler için kullanılır.(ben on the fly mode diyorum)

 

  1. Insert mode(editleme modu/etkileşimli mod); Dosyayı editlemek için kullanılır. Insert Modundan çıkmak için ESC(ESCABE) tuşuna basmak gerekir.

 

 

VI editöründe komutlarda genel olarak aşağıdaki gibi özellikler vardır.

 

  • Case sensitive dir. Yani a ve A birbirinden farklıdır.
  • Herhangi bir komuta bastığınızda ekranda komut belirmez, âmâ değişiklik gerçekleşir.
  • Komutu verdikten sonra Enter’a(Return) basmanıza gerek yoktur.
  • Komut modunda Vi editöründe komuttan önce ayrıca bir sayı verip sonra komut girilirse komut o sayı kadar tekrarlanır.

 

 

VI ile bir dosya editlemek istiyorsak vi o dosyayı belleğe geçirir. Siz “save” değinceye kadar bütün değiştirilenler bellekte kalır. Save” ederseniz dosya orijinalinin üstüne yazılır.

 

 

Dosya Açmak

 

vi [seçenekler] dosya_ismi diyerek bir text dosyayı editlemeye başlayabiliriz. Eğer dosya boş ise ekrana doğal olarak herhangi bir şey gelmeyecektir.

 

 

[cozumpark@artemis ~]$ vi +2 linux.txt -- > İmleci Dosyanın 2. satırına getirerek dosyayı aç.

[cozumpark@artemis ~]$ vi + linux.txt -- > İmleci Dosyanın son satırına getirerek dosyayı aç.

[cozumpark@artemis ~]$ vi +/kaynak linux.txt -- > İmleci içinde “kaynak” ifadesi geçen ilk satırın başına getirerek dosyayı aç.

 

 

Örnek;

 

[cozumpark@artemis ~]$ man cat >> cat_ornek.out à hemen kendimize bir dosya oluşturduk

[cozumpark@artemis ~]$

[cozumpark@artemis ~]$ vi cat_ornek.out à Oluşturduğumuz dosyayı vi editörü ile açtık, karşımıza aşağıdaki gibi ekran gelmiş olması gerekiyor.

 

 

 

image002

 

 

 

Bu dosyadan çıkmak için Esc ve “:” sonra “q” ile çıkabilirsiniz. Şimdide olmayan bir dosya ismini vi ile açmaya çalıştığımızda içi boş bir ekran getireceğini göreceğiz.

 

[cozumpark@artemis ~]$ vi olmayan_dosya

[cozumpark@artemis ~]$

 

 

 

image003

 

 

 

 

  1. Komut Modunda İmleci Dolaştırma

 

 

Klavyedeki yön tuşları ile beraber vi editöründe dosya üstünde gezmek için H,J,K,L tuşları da kullanılırlar.

 

 

h :           sola bir karakter

j :            aşağı bir karakter

k :           yukarı bir karakter

l :             sağa bir karakter

 

 

 

 

image004

 

 

 

İmleç(cursor) 2k derseniz bulunduğunuz yerden 2 satır yukarı çıkar,3h derseniz bulunduğunuz yerden 3 karakter sola gider.

 

 

 

Hareket Komutları(movement commands)

Açıklama

[return]

Bir sonraki satırın başına gider.

$

satırın en sonuna gider.

0 (sıfır)

satırın en başına gider.

^

satırın boş olmayan ilk yerin başına gider.

w

Bir sonraki kelimenin veya noktalama işaretinin olduğu yere git.

W

İlk boşluk karakterini geçip hemen bir sonraki kelimenin başında dur.

b

Bir önceki kelimenin veya noktalama işaretinin olduğu yere gider.

B

Bir önceki kelimenin başına gider, noktalama işaretlerini göz ardı eder.

e

Bir sonraki kelimenin veya noktalama işaretinin olduğu yere gider.

E

Bir sonraki kelimenin sonuna gider, noktalama işaretlerini göz ardı eder.

H

İmleci ekranın en tepesine götürür.

M

İmleci ekranın ortasına götürür.

L

İmleci ekranın en son satırına götürür

G

Dosyadaki son satıra gider.

xG

Dosyada X numaralı satıra git.

 

 

Örnek;

 

 

Şimdi konsola “vi linux.txt” komutunu girin, INSERT mod için “i” ye basın. Aşağıdaki text' i buradan kopyalayın ve Shift+ Insert ile Linux sistemdeki dosyamıza sırasıyla “Esc , : , w” diyerek kaydedin.

 

İlerleyen örneklerde kullanacağımız orijinal metin;

 

“Linux, (telaffuz: Amerikan İngilizcesinde: linək/ Lin-əks, Avrupa ve Kanada'da lɪnʊks / Lin-uks) Unix’e fikirsel ve teknik anlamda atıfta bulunaraktan geliştirilmiş; açık kaynak kodlu, özgür ve ücretsiz bir işletim sistemi çekirdeğidir.

 

Çekirdeğin kaynak kodları GNU Genel Kamu Lisansı çerçevesinde özgürce dağıtılabilir, değiştirilebilir ve kullanılabilir. Linux ismi ilk olarak Linus Torvalds tarafından yazılan ve 5 Ekim 1991 Linux 0.02 etiketiyle duyurusu yapılan, Linux çekirdeğinden gelmektedir.

 

Linux, hemen her bilgisayar platformunda sorunsuzca kullanılabilmektedir. Çok geniş bir donanım desteğine sahip olan Linux; netbook, dizüstü bilgisayar, sunucu bilgisayarlar, iş istasyonu, akıllı telefon, masaüstü bilgisayarlar gibi hemen her platformda tam bir uyum içerisinde çalışabilmektedir.

 

Ağırlıklı olarak sunucu ve iş istasyonu platformlarında tercih edilse de taşınabilir ve masaüstü sistemlerde de kullanım oranını günden güne arttırmaktadır. Ayrıca Linux sunucu-işletim sistemlerinde ilk sırada tercih edilmekte ve dünyanın 10 hızlı süper bilgisayarında da kullanılmaktadır[kaynak belirtilmeli].”

 

 

Bu örnekte cursor(imleç) 2. Satırdaki kaynak kelimesinin başında duruyor. Eğer imlecin bulunduğu satır yani 2. Satırın başına gitmek istersek “0”a basıyoruz. İmleçten sonraki kelimelerin ve noktalama işaretlerinin olduğu yerlere gitmek istiyorsak “w” ile gidiyoruz. Geriye doğru gezinmek için b(ack)’ye basıyoruz. Satır sonu içinde “$” karakterini kullanıyoruz. 1G deseydik imlecimiz 1. Satıra gidecekti.

 

 

 

image005

 

 

 

  1. Editleme moduna Geçmek ve Dosyaya Bir şeyler Yazmaya Başlamak

 

Dosyanın üstünde r hariç diğerleri basıldıktan sonra dosyada Editleme moduna geçer ve dosya içine bir şeyler yazmaya başlarsınız.

 

 

Komutlar

Açıklama

r

İmlecin üstünde bulunduğu karakteri değiştirir. Aslında command modda kalır, dosyayı insert moda geçirmez.

i

İmleçten önceki yere basılan karakteri insert eder.

a

İmleçten sonraki yere basılan karakteri insert eder.

A

Satırın en sonuna basılan karakteri insert eder.

o

Bir sonraki kelimenin veya noktalama işaretinin olduğu yere git.

O

İlk boşluk karakterini geçip hemen bir sonraki kelimenin başında dur.

cw (change word)

İmlecin üzerinde bulunduğu kelimeyi silip insert moda geçer.

 

 

Örnek;

 

İmleç 2. Satırdaki kaynak kelimesindeki k harfinin üzerindeyken

 

  • “i” harfine bastığımızda kaynak kelimesinin hemen başından dosyamızı insert moduna geçirir.
  • “a” harfine bastığımızda kaynak kelimesindeki k harfinden hemen sonra dosyamızı insert moduna geçirir.
  • “A” harfine bastığımızda 2.satırın sonuna gidip dosyamızı insert moduna geçirir.

 

Ve dosyanın sol alt köşesinde dosyamızın insert modunda olduğunu anlamamız için bize “INSERT” işaretini gösterir.

 

 

 

image006

 

 

İmleç 2. Satırdaki kaynak kelimesindeki k harfinin üzerindeyken “o” harfine bastığımızda 2.satırın sonuna gidip sanki Enter’a basmış gibi bir sonraki satırı aşağı indirdi ve boş satırın başına İmleci getirdi.

 

 

image007

 

 

İmleç 2. Satırdaki kaynak kelimesindeki k harfinin üzerindeyken “O” harfine bastığımızda 2.satırın başına gidip, sanki Enter’a basmış gibi bulunduğumuz satırı aşağı indirdi ve boş satırın başına
İmleci getirdi.

 

 

image008

 

 

Kelimeleri değiştirmek içinde “c” (change) harfini kullanıyoruz. C harfine hareket harflerini de ilave ederek daha güçlü bir değiştirme ara yüzüne sahip oluyoruz. Mesela

 

  • c2w; ile imlecin bulunduğu yerden itibaren sonrasındaki iki kelimeyi silerek dosyamızı insert moduna geçirir.
  • c2b; ile imlecin bulunduğu yerden itibaren gerisindeki iki kelimeyi silerek dosyamızı insert moduna geçirir.
  • c0; ile imlecin bulunduğu yerden o satırın başına kadar silerek dosyamızı insert moduna geçirir.
  • c$; ile imlecin bulunduğu yerden o satırın sonuna kadar silerek dosyamızı insert moduna geçirir.

 

 

c2w; İmleç 2. Satırdaki kaynak kelimesindeki k harfinin üzerindeyken c2w komutu ile “kaynak kodları” ifadesini silip dosyamızı insert moduna geçirdik.

 

 

 

image009

 

 

 

c2b; İmleç 2. Satırdaki kaynak kelimesindeki k harfinin üzerindeyken c2b komutu ile “Çekirdeğin” ve “.” ifadelerini silip dosyamızı insert moduna geçirdik.

 

 

 

image010

 

 

 

C0; İmleç 2. Satırdaki kaynak kelimesindeki k harfinin üzerindeyken c0 komutu ile “Çekirdeğin” ifadesini silip dosyamızı insert moduna geçirdik.

 

 

 

image011

 

 

 

C$; İmleç 2. Satırdaki kaynak kelimesindeki k harfinin üzerindeyken c$ komutu ile “Çekirdeğin” ifadesinden sonra ne varsa silip dosyamızı insert moduna geçirdik.

 

 

 

image012

 

 

 

Cc; İmleç 2. Satırdaki kaynak kelimesindeki k harfinin üzerindeyken cc komutu ile 2. Satırı tamamen sildi ve imleci satır başına getirerek insert moduna geçtik.

 

 

 

image013

 

 

 

  1. Silme İşlemi Yapmak

 

Silme işlemlerini dosyanın dışında/üstünde yapıyoruz. Insert modunda dosyanın içeriğini değiştiriyorsak Esc ile dosyanın üstüne geçip dosyada silme işlemlerini yapabilirsiniz. Eğer tek karakter sileceksek “x” bir kelime veya kelimeler sileceksek “d” harfini kullanıyoruz. “c” (change) işleminde yaptığımız gibi “d” (delete) komutuna da hareket harflerini vererek nereye kadar silmesi gerektiğini sisteme söyleyebiliyoruz.

 

 

Komutlar

Açıklama

x

İmlecin üzerinde bulunduğu karakteri siler.

3x

İmlecin üzerinde bulunduğu karakterden sağa doğru 3 karakter siler.

dw

İmlecin üzerinde bulunduğu kelimeyi siler.

d2w

İmlecin olduğu yerden itibaren 2 kelime sil.

dd

İmlecin bulunduğu satırı siler. Aslında cut komutu yerine de geçer. Kesme işlemlerinde de kullanılır.

2dd

İmlecin bulunduğu satırı ve bir sonraki satırı siler.

d)

İmlecin üzerinde bulunduğu cümleyi siler.

d}

İmlecin üzerinde bulunduğu paragrafı siler.

D

İmlecin üzerinde bulunduğu satırdan sonuna kadar siler.

d$

İmlecin üzerinde bulunduğu yerden satırın sonuna kadar siler.

db

İmlecin üzerinde bulunduğu kelimeden bir önceki kelimeyi siler.

dG

Dosyanızın 1. Satırındayken bütün dosya içeriğini silmek için.

 

 

 

d2w; İmleç 2. Satırdaki kaynak kelimesindeki k harfinin üzerindeyken d2w komutu ile “kaynak kodları” ifadesini dosyamızdan sildik.

 

 

 

image014

 

 

 

d$; İmleç 2. Satırdaki kaynak kelimesindeki k harfinin üzerindeyken d$ komutu ile “Çekirdeğin” ifadesinden sonra ne varsa satır sonuna kadar dosyamızdan sildik.

 

 

 

image015

 

 

 

dd; İmleç 2. Satırdaki kaynak kelimesindeki k harfinin üzerindeyken dd komutu ile 2. Satırı tamamen sildik.2. satırın yerine 3. Satır geldi.

 

 

 

image016

 

 

 

  1. Kopyalama ve Yapıştırma Yapmak

 

Kopyalama ve yapıştırma işlemlerini yine dosyanın dışında yapıyoruz. Yani yine ESC’ ye basarak dosyanın üstüne geçip dosyada kopyala ve yapıştır yapabilirsiniz.
Kopyalama için “y” (yank) ve yapıştırmak için “p” (put) harflerini kullanıyoruz. “y” (yank) komutunu yine hareket komutları ile beraber kullanıp y2w,2yy,y$ gibi olayı çeşitlendirebiliriz.
p” (put) komutu “d” delete veya “y” (yank) edilmiş bellekte bulunan ifadeleri dosyamıza yapıştırır.

 

 

Komutlar

Açıklama

yy veya YY

İmlecin üzerinde bulunduğu satırı kopyalar.

y)

İmlecin bulunduğu cümleyi kopyalar.

y}

İmlecin bulunduğu paragrafı kopyalar.

p

İmlecin bulunduğu yerin altına bellektekileri yapıştırır.

P

İmlecin bulunduğu yerin üstüne bellektekileri yapıştırır.

 

 

 

y3w , P; İmleç 2. Satırdaki kaynak kelimesindeki k harfinin üzerindeyken y3w komutu ile “kaynak kodları GNU” ifadesini belleğe kopyaladık. Sonra 1G diyerek 1. Satırın başına gittik. Belleğe kopyaladığımız ifadeleri yapıştırmak için ”P” harfine bastık.

 

 

 

image017

 

 

Genel Örnek;


Bu örnekte imleç (cursor) 6. Satırın başında Konstantinopolis kelimesinde duruyor. Vi dosya_ismi diyerek dosyaya girdik. ESC’ ye bastık sonra : (colon),sonrasında set nu diyerek satır numaralarını gösterdik.


İmlecin bulunduğu yerden gerekli komutları girerek nasıl bir durumla karşılaşılacağı anlatılmaya çalışıldı. İmlecin üzerinde bulunduğu 6. Satırdaki K harfinden yaptığı hareketleri çizgi üstündeki veya sonundaki komutlara bakarak görebilirsiniz. Kendi kendinize komutları kullandıkça vi editörünü gittikçe daha çok sevecek ve vi editörünün gerçek gücünü keşfedeceksiniz.

 

 

image018

 

 

  1. Kaydedip Çıkmak veya Kaydetmeden Çıkmak

 

Esc tuşuna basılır ve : (Colon) ardından wq yani “ :wq “ kombinasyonu yeterli. Dosyadan çıkMAdan sadece yapılan değişiklikleri kaydetmek istiyorsak “ :w “dememiz gerekli. Kaydetmeden çıkmak istiyorsak “ :q! “ demek yeterli.

 

 

Komutlar

Açıklama

:wq!

Dosyada yapılan değişiklikleri kaydet ve çık.

:q!

Dosyada yapılan değişiklikleri kaydetMEden çık.

ZZ

:wq komutuyla aynı işlemi yapar. Dosya üstünde yapılan değişiklikleri kaydeder ve çıkar.

:x

Dosyayı kaydederek çık.

:w dosya_ismi

Dosyayı başka isimle kaydet.

u

Satır üstünde yapılan son değişikliği geri almak için. (tek hamlelik Undo)

U

Satır üstünde yapılan bütün değişiklikleri geri almak için. (çok hamlelik Undo)

 

  1. (İleri) Komut Modunda Çalışmak

 

VI editöründen de önce aslında yeşil siyah terminal ekranlarda çalışılırken “ex” editör denilen vi’nin ata babası bir editör var. İleri vi komutları bölümünde aslında bu “ex” yapısını göreceğiz. ”ex” Komut modunda çalışmak için ESC’nin ardından “:” dersek ekranın sol alt köşesinde : işaretini göreceğiz. Ve vi editörü bizden komut bekleyecek. Aşağıdaki tablolarda “:” karakterinden sonra girilebilecek komutlar açıklaması ve kullanımı ile verilmiştir.

 

 

Komutlar

Kısaltma

Açıklama

delete

d

Satır siler

move

m

Satırı keser.

copy

co

Satırı kopyalar.

 

t

Satırı kopyalar. co komutunun görevce eş anlamlısı.

 

 

 

ex” komut yapısını çoğunlukla dosya içerisinde bir ifadeyi aramak veya değiştirmek için kullanacağız. Yukarıdaki tabloda silme, kesme ve kopyalama kısaltmalarını gösterdik. Eğer bir dosyanın içinde ,büyük değişiklikler yapmak istiyorsak satırlarla çok ilişki kurmamız gerekir, onun için bize bir adresleme mekanizması gerekli. Adresleme için hemen aşağıdaki tablodan yararlanacağız.

 

 

Adres Gösterimi

Açıklama

.

İmlecin üzerinde bulunduğu satır.

n

n. satır

.+m

İmlecin üzerinde bulunduğu satır + m satır daha

$

Dosyanın Son satırı

%

Dosyadaki tüm satırlar. Bunu 1,$ olarak düşünebilirsiniz.

/ifade/

İçinde “ifade” geçen satırlar

[addr1],[addr2]

Verilen satırlar arasında.

 

 

Örnek;

 

:4

4.satıra gider.

:=

Dosyadaki toplam satır sayısını verir.

:.=

İmlecin üzerinde bulunduğu satır dosyada kaçıncı satır olduğunu gösterir.

:/ifade/=

Dosya içinde ilk “ifade” geçen satırın numarası.

:.,$d

İmlecin üzerinde bulunduğu satırdan dosyanın sonuna kadar sil.

:20,.m$

20. satırdan imlecin üzerinde bulunduğu satıra kadar olan kısmı dosyanın sonuna kes(delete) ve yapıştır(put).

:%d

Dosyanın içindeki bütün satırları sil.

:%t$

Dosyanın içindeki bütün satırları kopyala(t=>co ve %=>1,$ unutmayın!!) ve dosyanın sonuna yapıştır.(yank ve put)

:4,25d

Dosyada 4. Satırla 25. Satırlar arasını sil.

:1,$d

Dosyanın içindeki bütün satırları sil.

 

Komutlar

Açıklama

:set nu

Satır Sayılarını gösterir.

:set nonu

Satır sayılarını gösterme.

:set list

Görünmeyen karakterleri göster.

:set nolist

Görünmeyen karakterleri gösterme.

:set autoindent

Enter’a basıldıktan sonra hizalama yap.

:set noautoindent

Turn off autoindent.

 

    1. Dosyada Kayıt Arama

 

 

Dosyamız içerisinde herhangi bir kayıt ararken imleç eğer dosyada aranan ifade varsa, o ifadenin ilk geçtiği satıra gider.

 

Aranılan ifadeyi aynı zamanda her yerde değiştirmek istiyorsak “g” global parametresini “:”dan hemen sonra girmemiz gerekli.

 

 

 

:/ifade veya

:/ifade/

İleriye doğru ifadeyi arar. Bir sonraki ifadeyi gitmek için n, bir önceki ifadeyi gitmek için N’ye basmak gerekli.
Bir önceki makalede öğrenmiş olduğumuz regular expression(regex ) karakterleri vi editöründe arama yaparken kullanabiliriz.

^
Satırın başıyla eşleşir.
$ Satır sonu ile eşleşir.
. Herhangi bir tekil karakterle eşleşir.
* Bir önceki karakterden biriyle eşleşir.
.* Herhangi bir karakterle eşleşir.

:?ifade

Geriye doğru ifadeyi arar. Bir sonraki ifadeyi gitmek için n, bir önceki ifadeyi gitmek için N’ye basmak gerekli.

 

Örnek;

 

Şimdi konsola “vi kaldirimlar.txt” komutunu girin, INSERT mod için “i” ye basın. Aşağıdaki texti buradan kopyalayın ve Shift+ Insert ile Linux sistemdeki dosyamızın içine kopyalayın ve “Esc + : + w” diyerek kaydedin.

 

Kayıt aramasında kullanacağımız orijinal text;

 

“KALDIRIMLAR”

 

Sokaktayim, kimsesiz bir sokak ortasında;

Yuruyorum, arkama bakmadan yuruyorum.

Yolumun karanliga saplanan noktasinda,

Sanki beni bekleyen bir hayal goruyorum.

 

Kara gokler kul rengi bulutlarla kapanik;

Evlerin bacasini kolluyor yildirimlar.

In cin uykuda,yalniz iki yoldas uyanik;

Biri benim,biri de serseri kaldirimlar.

 

Icimde damla damla bir korku birikiyor;

Saniyorum,her sokak basini kesmis devler...

Ustume camlarini,hep simsiyah,dikiyor;

Gozune mil cekmis bir ama gibi evler.

...

NFK”

 

:/asinda à Esc’ye bastık,sonra “:” dedik,sonrasındaasinda” ifadesini dosyamızda aradık ve bize 3. Ve 5. Satırda aranılan ifadenin olduğunu vurguladı.

Eşleşen Satırlar arasında dolaşmak için “N” ile devam ettik.

 

 

 

image019

 

 

 

:/asinda/d -- > dediğimizde sadece 3. Satırı sildi.4.satırı silmemiz için “g” dememiz gerekliydi hatırlarsanız.

 

 

 

image020

 

 

 

:g/asinda/d à Yapılan değişikli Esc’ye ve “u” ya basarak geri aldık.sonrasında :g/asinda/d dedik.ve gördüğünüz gibi içinde “asinda” geçen 3. Ve 5. Satırları dosyamızdan sildik.

 

 

 

image021

 

 

 

:/^San/ à Dosyamızda “San” ile başlayan ifadeleri aradık.

 

 

 

image022

 

 

 

:4,/Evlerin/m13 à 4. Satırdan itibaren “Evlerin” ifadesi geçen satıra kadar yani yukarıdaki resimde gördüğünüz gibi 4.,5. Ve 6. Satıra kadar olan satırları 13. Satıra kes ve yapıştır.

 

 

 

image023

 

 

 

:/[Bb]ir.*/ à Satırın içinde “B” veya “b” ile başlayacak devamında “ir” olacak,”ir”den sonra herhangi bir karakter gelecek ve o karakterden bir veya daha fazla bir şeyler olacak. Yani “ir”den sonra ne gelirse gelsin hepsini bul.

 

 

 

image024

 

 

 

    1. Dosyada Kayıt Değiştirme

 

 

Dosyamız içerisindeki herhangi bir ifadeyi değiştirmek istediğimizde “s” (substitute) komutunu kullanacağız. Aradığımız ifadenin nerede geçebileceğine dair alanı daraltmak için adres verebiliriz,

Sonrasında eski ifadeyi ve yeni ifadeyi aralarında “/” koyarak komutu veriyoruz.

 

 

 

:[adres]s/eski /yeni/flags

Dosya içinde eski_text geçen yerleri yeni_text ile değiştir.İstisnalar flaglerle olur.Ayrıntılar ve örnekler aşağıda.

Flag olarak g --> dosyanın tamamında işlem yap.
c -- > işlem yaparken doğrula (Kullanıcıdan işlemin yapılıp yapılmaması için doğrulama istemek.)

 

 

Örnek;

 

 

:%s/bir/iki/g -- > Dosyamızdaki “bir” geçen satırlarda “bir”i “iki” ifadesi ile değiştirdik. Adres kısmına ne yazdık “%”, yani bu aslında aynı zamanda “1,$” demekti hatırlarsanız. Komutun sonunda ise “g” global bayrağını kullanarak değişikliği bütün dosya içinde yapmasını söyledik.

 

 

 

image025

 

 

 

Yaptığımız değişiklikleri geri aldık.(Esc + U)

 

 

:13,16s/bir/BIRR/g -- > Şimdi de dosyamızda 13. Ve 16. Satırlar arasında yer alan “bir” ifadesini “BIRR” ifadesi ile değiştirdik.

 

 

 

image026

 

 

 

Genel Örnekler;

 

:s/hasret/vuslat/

 

İmlecin bulunduğu satırda imlece hemen yakında hasret kelimesi var ise vuslat ile değiştirir.

 

:s/çile/sabır/g

 

İmlecin üzerinde bulunduğu satırdaki bütün çile kelimesini sabır ile değiştirir.

 

:%s/savaş/barış/g

 

Dosyanın tamamında geçen savaş kelimesini barış ile değiştir.

 

:%s/savaş/barış/gc

 

Yukarıdaki ile aynı işi yapar,yapmadan önce her hamlede kullanıcıdan doğrulama bekler.

 

:.,.+10s/haset/gıpta

 

İmlecin bulunduğu satırdan 10 satır ilerideki satır dahil olarak toplam 11 satırda haset kelimesinin ilk geçtiği yerde kelimeyi gıpta ile değiştirir.

 

:20,100s/teknoloji/yenilik

 

Dosyanın içinde 20 ile 100. Satırlar arasında geçen teknoloji kelimelerini yenilik ile değiştirir.

 

:%s/.$//

 

Dosyanın her satırının son karakterini sil. Bu değiştirme ifadesi Windows’tan Unix’e düzgün kopyalanmayan dosyalarda satır sonlarındaki ^M ifadesini kaldırmak için işinize yarayabilir.

 

:/[a-z]atan

 

Dosyanın içinde kelimenin son ifadesi “atan” olacak şekilde sapan,katan,satan,çatan gibi kelimeleri bulacak.

 

:/[^c]an

 

Dosyanın içinde kelime başında c geçmeyecek ve sonu “an” ile bitecek kelimelere bakar,yani muhtemel ifadeler kan,tan,man gibi.

 

 

    1. Dosyayı Farklı Şekilde Kaydetmek

 

 

Şimdi de en son kısma geldik. Dosyamızı editledik fakat başka bir isimle kaydetmek istiyoruz veya dosyamızın sadece bir kısmını bir yere kaydetmek istiyoruz.”w” (write) komutunu kullanacağız yine,fakat normalde dosyayı sadece kaydederken isim vermiyor idik şimdi argüman olarak bir yeni bir dosya ismi vereceğiz. İsterseniz öğrenmiş olduğumuz adresleme mekanizmasını kullanarak dosyanın sadece belirli bir kısmını bir yere yazabiliriz.

 

 

 

Komutlar

Kısaltma

:w yeni_dosya_ismi

Dosyamıza yeni dosya ismi vererek kaydetmemize yardımcı olur.

:10,200w yeni_dosya_ismi

Dosyamızın sadece 10. Ve 200. Satırları arasındaki bölümü yeni dosya ismi vererek kaydetmemize yardımcı olur.

:300,$w >> var_olan_dosya_ismi

Dosyamızın 300. Satırında sonuna kadar olan bölümünü var olan bir dosyanın sonuna “appendeder,yani o dosyanın sonuna yapıştırır.

 

Kaynaklar;

 

O’Reilly’s Learning the VI Editor 6th Edition.

 

 

Linux Sistemlerde Kullanıcı ve Grup Yönetimi – Bölüm 6

$
0
0

 

Unix&Linux sistemlerde gerçek kişiler, yöneticiler ve sistemlerde yer alan uygulamalar için sistem üstünde kullanıcı tanımlamak gerekli. Gruplarda sistemlerde kullanıcıları mantıksal olarak kümelemek ve o kümelere belli yetkileri vermek için kullanılır. Her sistem kullanıcısının eşsiz(unique) userid (UID)’si ve her grubunda eşsiz(unique) groupid (GID) ‘si olmak zorundadır. Kurumsal sistemlerde çalışırken şirket politikası gereği dikkat edilmesi gerekenler;

 

 

  1. Hangi sistemlerde hangi ekiplerin, hangi ekip üyeleri olmalı.Yani development,test,production ortamlarına göre kullanıcı şablonları çıkartılmalı.
  2. Sistemlerde kullanıcı oluştururken şifre ve erişim politikası ne olmalı.Şifreler değişecek mi,kim nasıl saklayacak ve bunlara erişim hangi izinlere tabi olacak.
  3. Kullanıcı ve grup problemleriyle kim ilgilenecek.
  4. Sisteme direk root girişi veya uygulama kullanıcısı girişi engellenecek mi? Audit mekanizması için bir program mı bulunacak ya da lokalde bir program mı yapılacak.

 

 

Eğer bunlara dikkat edilirse yönetilebilir bir ortam oluşturmuş olursunuz, sistem yöneticisi olan ve olmaya niyetli arkadaşlara şiddetle tavsiye ederiz bu adımları.

 

 

Redhat ailesinde dolayısıyla CentOS’da da kullanıcı ve grup işlemlerini 2 şekilde halledebiliyoruz.

 

 

  1. Ara yüzden,konsolda komut satırında system-config-users diyerek gelen menüde(User Manager) işlemlerimize devam edebiliriz.
  2. Useradd,userdel,usermod,groupadd,groupdel,groupmodgibi komutlarla komut satırından.

 

 

Şimdi sırasıyla iki şekilde de sisteme kullanıcı ve grup tanımlayacağız ardından, bu işlemleri yaparken önemli sistem dosyaları nelerdir onları inceleyeceğiz.

 

 

User Manager

 

Öncelikle sistemde system-config-users programcığının yüklü olması(RPM paketi olmalı)

 

 

[root@artemis ~]# rpm -qa|grep system-config-users à bahsettiğimiz paketin sistemimizde yüklü olup olmadığına baktık.

 

 

system-config-users-1.2.51-4.el5

 

 

ve sizin yetkili bir kullanıcı olmanız gerekli yani root.

 

(Eğer secureCRT veya Putty gibi programlarla Vmware üstünden değilde uzaktan(ssh,telnet) bağlanmış iseniz lokalinizde de X Windows server çalışması gerekli unutmayınız.)

 

 

 

image001

 

 

 

Biz CentOS masaüstünde sağ klik,gelen menüden “Konsole”,konsolda da system-config-users dedik. Sisteme cozumpark kullanıcısı ile bağlandığımız için bize root kullanıcısının şifresini

Sordu. Root şifresini girip “OK” ile devam ediyoruz. Karşımıza “User Manager “gelecek.

 

 

 

image002

 

 

 

Gördüğünüz gibi rahatlıkla herhangi bir yardıma ihtiyaç duymayacak şekilde kullanabileceğiniz basit bir ara yüz geldi.

 

BILGILENDIRME!:Redhat ailesinde sistem kullanıcıları bu ekranda gelmiyor,eklemek için Edit > Preferences kısmında “Hide system users and groups” u uncheck hale getirmeniz gerekli.


UYARI!: Sistem kullanıcılarının User ID ‘leri (UID) 500 ‘ün altındadır,dolayısıyla sizin oluşturacağınız yeni kullanıcılara 1-499 arasında bir user ID ‘si verMEmeniz tavsiye edilir.

 

 

Ara Yüzden Kullanıcı Ekleme,Değiştirme,Silme

 

 

 

image003

 

 

 

“Add User” dedikten sonra User Name kısmına sisteme Login olurken kullanılacak ismi,Password kısmına şifreyi,Shell kısmına standart olarak /bin/bash seçip, kullanıcının EV dizinin ayarlayıp (/home/bilgipark),eğer kullanıcının grubunu ve user ID’sini vermek isterseniz,sırasıyla “Create a private group for the user” checkli halde,501 vererek “OK” dedik.

 

 

 

image004

 

 

 

Eğer var olan bir kullanıcının diğer bilgilerini değiştirmek istiyorsanız listeden kullanıcıyı seçip “Properties” kısmına tıklayarak gelen menüde işlem yapmanız gerekir.

 

 

 

image005

 

 

 

User Data: Kullanıcıyı eklerken kullandığımız bilgiler.

 

Account Info: Belirli bir gün sonra bu kullanıcı hesabının süresinin dolmasını istiyorsanız veya kullanıcıyı sisteme geçici bir süreliğine lock ‘ layacaksınız.

 

Password Info: Kullanıcının şifresini belirli bir günden sonra değiştirmesi için zorlamak,değiştirme öncesi uyarmak gibi işlemler.

 

Groups: Kullanıcının Primary (birincil) grubunu ve diğer Secondary(ikincil) gruplarını değiştirmek için kullanılır.

 

 

Örnek;

 

 

 

image006

 

 

 

Kullanıcıyı silmek için, kullanıcı listesinden silinecek kullanıcıyı seçip “Delete” demeniz yeterli. Kullanıcıyı silerken ev dizinini, eğer varsa maillerini ve varsa ona ait olan bütün geçici dosyaları Sistemden siler.

 

 

 

image007

 

 

Ara Yüzden Grup Ekleme,Değiştirme,Silme

 

Ara yüzden grup eklemek için “Add Group” tıklanır. “Create New Group” ekranı gelir. Burada grup ismi ve group ID (GID)’si verilir OK ile devam edilir.

 

 

 

image008

 

 

 

Eklenmiş olan bir grubun özelliklerini değiştirmek istiyorsak yine ,grubu seçerek “Properties” denir,gelen ekranda .

 

 

 

image009

 

 

 

Group Data: Bu kısımda grup ismini tekrar değiştirebiliriz.

 

Group Users: Bu gruba sistemde yer alan kullanıcılardan ekleme yapabiliriz. Biz bilgipark ve cozumpark kullanıcılarını az önce oluşturduğumuz yonetici grubuna dahil ettik.

 

Sistemden grup silmek isterseniz silinecek grubu seçip “Delete” demek yeterli fakat silinecek grup sistemde bulunan herhangi bir kullanıcının primary group’u ise grubu silebilmeniz için O kullanıcının primary’i group’unu değiştirmeniz gerekir ve size aşağıdaki gibi bir uyarı verir. Bir kullanıcıyı grupsuz bırakmak istemezsiniz herhalde.

 

 

 

image010

 

 

 

Bizim sisteme eklediğimiz cozumpark ve bilgipark kullanıcılarının primary grupları yine kendi isimleriyle. Groups tabında gördüğünüz gibi.

 

İkisininde Secondary group’u yonetici grubu yapmıştık. Yonetici grubunu silmek istersek bizden sadece bir doğrulama isteyecek ve “YES” dediğimizde silebileceğiz.

 

 

 

image011

 

 

 

Komut satırında Kullanıcı ve Grup İşlemleri

 

Komut Satırından Kullanıcı Ekleme,Değiştirme,Silme

 

Useradd, usermod; Kullanıcı ekleme işlemlerini useradd, özellik değiştirmeyi usermod komutlarıyla hallediyoruz. Useradd ve usermod komutları için verilen seçenekler aşağı yukarı aynıdır,ikisi içinde ilk seçenekler tablosunu kullanabilirsiniz,usermod komutu için 2. Seçenekler tablosu ek özellikler vermektedir.

 

Useradd [seçenekler] kullanıcı_ismi

Usermod [seçenekler] kullanıcı_ismi

 

 

 

Seçenekler

Açıklama

-b, --base-dir BASE_DIR

Satır Sayılarını gösterir.

-c, --comment COMMENT

Kullanıcı hakkında detay bilgi,yorum

-d, --home-dir HOME_DIR

Kullanıcının ev dizini belirtilir.

-e, --expiredate EXPIRE_DATE

Kullanıcı hesabının geçersiz olma zamanı. YYYY-MM-DD formatında olacak.

-f, --inactive INACTIVE

Şifre süresi bittikten sonra kullanıcı hesabının ne kadar sürede geçersiz olacağını belirtir.
0 -> şifre süresi dolarsa hesap hemen geçersiz olur,
-1 -> şifre süresi dolsa da hesap geçersiz hale gelmez.

-g, --gid GROUP

Kullanıcının primary grup ismi burada verilir.

-G, --groups GROUPS

Kullanıcının secondary grup isimleri burada verilir.

-h, --help

Komut hakkında yardım almak için.

-m, --create-home

Kullanıcının –d seçeneği ile verilen ev dizini oluşturulsun demektir.

-s, --shell SHELL

Kullanıcının shell’i. Linux sistemlerde genellikle standart olarak /bin/bash olarak verilir.

-u, --uid UID

Kullanıcının user ID’si denilen eşsiz sistem kimlik numarası. >500 olmalıdır.

 

Usermod komutu için ek seçenekler

Seçenekler

Açıklama

-l, --login NEW_LOGIN

Kullanıcının LOGIN ismi için farklı bir ifade verilmesi

-L, --lock

Kullanıcı hesabına kilit konulması.

-m, --move-home

Kullanıcının ev dizinini başka bir yere taşımak için.

-U, --unlock

Kullanıcı hesabındaki kilidi kaldırmak için.

 

 

Sisteme kullanıcı eklemek için ara yüzde olduğu gibi konsolda da sistem yetkili kullanıcısı olan root’a geçiş yapmamız gerekmekte.

Cozumpark kullanıcısından “su –“ dedik, root şifresini verdik ve root’a geçtik. Az önce GUI üstünden yaptığımız işlemi komut satırından yapıyoruz, bilgipark kullanıcısı ve grubunu ekledik.

 



Örnek;


[cozumpark@artemis ~]$ su -

Password:

[root@artemis ~]#

[root@artemis ~]# groupadd -g 501 bilgipark

[root@artemis ~]# useradd -c "cozumpark sistem admin" -d /home/bilgipark -g bilgipark -m -s /bin/bash -u 501 bilgipark

[root@artemis ~]#

[root@artemis ~]# id bilgipark

uid=501(bilgipark) gid=501(bilgipark) groups=501(bilgipark)

 


UYARI!:
Sisteme kullanıcı eklemeden önce kullanıcı grubunun,isminin ve ID’sinin uygunluğunu kontrol etmeniz gerekir.


Biz bilgipark kullanıcısının primary grubunu yine bilgipark yapmak için kullanıcı eklemeden önce mecburen groupadd komutuyla grubunu sisteme eklemiş bulunduk.

 

UYARI!:Kullanıcıyı oluşturduktan sonra passwd kullanıcı_ismi komutu ile şifre vermeyi unutmayınız! Yoksa kullanıcı sisteme login olamaz.

 

CentOS Linux sistemlerde kullanıcı bilgileri /etc/passwd , grup bilgileri /etc/group,şifre ve diğer bilgiler /etc/shadow, kullanıcılarla ilgili genel standart bilgiler /etc/login.defs dosyalarında bulunur. Ara yüzden ve komut satırından işlem yaparken her ikisi de bu ilk üç dosyayı editlemektedir. Eğer yeni oluşturduğumuz bilgipark kullanıcısı için bu dosyaları grep’lersek aşağıdaki örneğe bakalım.

 

Örnek;

 

[root@artemis ~]# cat /etc/passwd|grep bilgipark

bilgipark:x:501:501:cozumpark sistem admin:/home/bilgipark:/bin/bash

[root@artemis ~]# cat /etc/group|grep bilgipark

bilgipark:x:501:

[root@artemis ~]# cat /etc/login.defs|grep USERGROUPS_ENAB -- > Eğer login.defs dosyasındaki bu seçenek YES ise kullanıcı eklenirken –g grup_ismi açıkça verilmezse sistem otomatik olarak kullanıcı ismiyle aynı olan bir grup oluşturup yeni oluşturduğumuz kullanıcıyı o gruba üye yapar.

USERGROUPS_ENAB yes

[root@artemis ~]# cat /etc/shadow|grep bilgipark à kullanıcıya şifre vermez isek isimden sonra !! işaretinin geldiğini görürsünüz

bilgipark:!!:15228:0:99999:7:::

[root@artemis ~]# passwd bilgipark

Changing password for user bilgipark.

New UNIX password:

BAD PASSWORD: it is too simplistic/systematic

Retype new UNIX password:

passwd: all authentication tokens updated successfully.

[root@artemis ~]#

[root@artemis ~]# cat /etc/shadow|grep bilgipark à kullanıcıya şifre verdikten sonra !! işaretinin kriptolanmış şifresini görürsünüz

bilgipark:$1$0Ofzhd2c$GWx0fJTIR4mxVtxx8izkn.:15228:0:99999:7:::

[root@artemis ~]#

 

 

Örnek;

 

[root@artemis ~]# usermod -l silgipark bilgipark -- > bilgipark kullanıcısının ismini silgipark’a çevirdik

[root@artemis ~]#

[root@artemis ~]# id bilgipark -- > id kullanıcı_ismi komutuyla baktığımızda eski ismiyle sistemde olmadığını gördük

id: bilgipark: No such user

[root@artemis ~]#

[root@artemis ~]# id silgipark

uid=501(silgipark) gid=501(bilgipark) groups=501(bilgipark)

[root@artemis ~]# ls -l /home

total 12

drwx------ 4 silgipark bilgipark 4096 Sep 12 20:46 bilgipark

drwx------ 21 cozumpark cozumpark 4096 Sep 12 20:26 cozumpark

[root@artemis ~]# usermod -l bilgipark silgipark -- > değişikliği geri alalım

[root@artemis ~]# usermod -L bilgipark --> kullanıcının hesabına LOCK koyalım,bu LOCK “/etc/shadow” dosyasına şifrenin(ikinci blokta encrypted halde) başına ! (ünlem) işareti gelerek belli olacak.

[root@artemis ~]#

[root@artemis ~]# cat /etc/shadow|grep bilgipark

bilgipark:!$1$oW7lx0wO$zlu9ZvtoVHTchvRokheQP.:15229:0:99999:7:::

[root@artemis ~]#

[root@artemis ~]# usermod -U bilgipark --> Koyduğumuz LOCK’ı kaldıralım.

[root@artemis ~]#

[root@artemis ~]# cat /etc/shadow|grep bilgipark

bilgipark:$1$oW7lx0wO$zlu9ZvtoVHTchvRokheQP.:15229:0:99999:7:::

 

 

Userdel; Kullanıcıları silmek içinde “userdel” komutunu kullanıyoruz.

 

Userdel [seçenekler] kullanıcı_ismi

 

Seçenekler

Açıklama

-f, --force

Kullanıcıyı kökten kazır,sisteme login olsa da,kendi adına sistemde grubu olsa da,o gruba başka biri üye olsa da.. Velhasıl tavsiyemiz bu seçeneği kullanırken dikkatli olun.

-r, --remove

Kullanıcının Ev dizini ve mail spool’u silinecek.

-h, --help

Komut yardımını listeler.

 

 

Şimdi az önce eklediğimiz bilgipark kullanıcısını sistemden –r seçeneği ile silelim.

 

UYARI!: Sistemde kullanıcıyı –r seçeneğiyle silseniz dahi farklı farklı yerlerde o kullanıcıya ait dosyalar kalmış olabilir.Eğer bunlardan da kurtulmak istiyorsanız,o kullanıcıyı silmeden önce , sistemin içinde o kullanıcıya ait bütün dosyaları find komutu ile aratarak listelemek sizin için daha faydalıdır. Nasıl yapıldığını görmek için bir önceki makalede yer alan örneklere bakabilirsiniz.

 

Örnek;

 

[root@artemis ~]# cat /etc/passwd|grep bilgipark

bilgipark:x:501:501:cozumpark sistem admin:/home/bilgipark:/bin/bash

[root@artemis ~]#

[root@artemis ~]# ls -ld /home/bilgipark

drwx------ 5 bilgipark bilgipark 4096 Oct 10 00:55 /home/bilgipark

[root@artemis ~]#

[root@artemis mail]# ls -l /var/spool/mail/bilgipark

-rw-rw---- 1 bilgipark mail 0 Sep 12 21:35 /var/spool/mail/bilgipark

[root@artemis]#

[root@artemis]# userdel -r bilgipark

[root@artemis]#

[root@artemis]#

[root@artemis]# id bilgipark

id: bilgipark: No such user

[root@artemis]#

[root@artemis]# ls -ld /home/bilgipark -- > bilgipark ‘in ev dizini de –r seçeneği ile silinmiş oldu.

ls: /home/bilgipark: No such file or directory

[root@artemis]#

[root@artemis]# cat /etc/passwd|grep bilgipark

[root@artemis]#

[root@artemis]#

[root@artemis]# ls -l /var/spool/mail/bilgipark

ls: /var/spool/mail/bilgipark: No such file or directory

[root@artemis]#

[root@artemis ~]# cat /etc/login.defs|grep USERGROUPS_ENAB -- > Eğer login.defs dosyasındaki bu seçenek YES ise silinen kullanıcının ait olduğu grubu da siler eğer o grupta başka kullanıcı yok ise.

USERGROUPS_ENAB yes

[root@artemis mail]# cat /etc/group|grep bilgipark -- > ama bizim o grupta başka kullanıcılarımızda olduğu için bilgipark grubunu sistem silmedi.

bilgipark:x:501:hayal1,hayal2

 

 

 

Komut Satırından Grup Ekleme, Değiştirme, Silme

 

 

Groupadd, groupmod;Grup eklemeyi “groupadd”,özelliğini değiştirmeyi “groupmod” komutuyla hallediyoruz.

 

 

groupadd [seçenekler] grup_ismi

groupmod [seçenekler] grup_ismi

 

 

 

Seçenekler

Açıklama

-f

Eğer eklenmek istenen grup /etc/group dosyasına mevcut ise,komut hata almadan çıkar.

-r

Sisteme sistem hesabı eklenmek istendiğinde bu seçeneğin kullanılması zorunlu.Yani ID leri <499 olacak hatırlarsanız.

-g GID

Eklenmek istenen grubun group ID’si (GID)

-h, --help

Komut yardımını listeler.

-n new_group_name --> groupmod komutu için!!!

Groupmod komutu ile var olan bir grubun ismi değiştirilmek istendiğinde –n ile beraber yeni grup ismi verilir.

 

 

Örnek;

 

 

[root@artemis ~]# groupadd -g 501 bilgipark

[root@artemis ~]# cat /etc/group|grep bilgipark

bilgipark:x:501:

[root@artemis ~]#groupmod -n cinipark bilgipark

[root@artemis ~]# cat /etc/group|grep park

cozumpark:x:500:

yonetici:x:502:cozumpark

cinipark:x:501:

 

 

Groupdel; Grup silme işlemini “groupdel” komutuyla yapıyoruz.

 

UYARI-1!: Sistemde bir grubu silseniz dahi farklı farklı yerlerde o gruba ait dosyalar kalmış olabilir.Eğer bunlardan da kurtulmak istiyorsanız,o grubu silmeden önce , sistemin içinde o gruba ait bütün dosyaları find komutu ile aratarak listelemek sizin için daha faydalıdır. Nasıl yapıldığını görmek için bir önceki makalede yer alan örneklere bakabilirsiniz.

 

UYARI-2!: Eğer sistemde primary grubu sizin silmek istediğiniz grup ile aynı olan kullanıcı varsa o grubu silemezsiniz dolayısıyla, o kullanıcının primary grubunu “usermod” –g seçeneği ile başka bir gruba değiştirip sonra o grubu silmeniz gerekir.

 

groupdel grup_ismi

 

Örnek;

 

[root@artemis ~]# cat /etc/group|grep cinipark

cinipark:x:501:

[root@artemis ~]# groupdel cinipark

[root@artemis ~]#

[root@artemis ~]# cat /etc/group|grep cinipark

[root@artemis ~]#

 

 

Kullanıcı ve Grup İşlemlerinde Önemli Sistem Dosyaları

 

/etc/passwd Dosyası

 

Linux sistemlerde genel olarak kullanıcı bilgileri /etc/passwd dosyasında tutulur. Bütün kullanıcılar tarafından okunabilir,ama sadece root tarafında değiştirilebilir.Bilgipark kullanıcısı tekrar sisteme ekleyip /etc/passwd dosyasını greplersek;

 

[root@artemis ~]# groupadd -g 501 bilgipark

[root@artemis ~]# useradd -c "cozumpark sistem admin" -d /home/bilgipark -g bilgipark -m -s /bin/bash -u 501 bilgipark

[root@artemis ~]# id bilgipark

uid=501(bilgipark) gid=501(bilgipark) groups=501(bilgipark)

[root@artemis ~]#

[root@artemis ~]# passwd bilgipark

Changing password for user bilgipark.

New UNIX password:

BAD PASSWORD: it is too simplistic/systematic

Retype new UNIX password:

passwd: all authentication tokens updated successfully.

 

 

[root@artemis ~]# cat /etc/passwd|grep bilgipark

bilgipark:x:501:501:cozumpark sistem admin:/home/bilgipark:/bin/bash

 

 

Gördüğünüz gibi değerler : “colon” ile birbirinden ayrılmıştır. Komutla eklemiş olduğumuz özellikler aslında buraya sırasıyla işlenmiş durumda.


Açıklamaları ve kolonların ne olduğunu aşağıdaki resme bakarak da kolayca anlamış olduğunuzu umuyorum.

 

 

image012

 

 

/etc/group Dosyası

 

Linux sistemlerde genel olarak grup bilgileri /etc/group dosyasında tutulur. Bütün kullanıcılar tarafından okunabilir,ama sadece root tarafında değiştirilebilir.Bilgipark kullanıcısının grubu için /etc/group dosyasını girersek

;

[root@artemis ~]# cat /etc/group|grep bilgipark

 

bilgipark:x:501:

 

Bu dosyada da değerler birbirinden : (colon) ile birbirinden ayrılmıştır. Gruba üye olan kullanıcılar aynı satırda yer alır ve birbirinden “,” ile ayrılarak listelenir.

 

 

image013

 

 

Örnek;

 

[root@artemis ~]# useradd hayal1

[root@artemis ~]# useradd hayal2

[root@artemis ~]#

[root@artemis ~]#

[root@artemis ~]# usermod -G bilgipark hayal1

[root@artemis ~]# usermod -G bilgipark hayal2

[root@artemis ~]#

[root@artemis ~]# cat /etc/group|grep bilgipark -- > Burada bilgipark grubuna hayal1 ve hayal2 kullanıcılarını üye yaptığımızı görüyoruz.

bilgipark:x:501:hayal1,hayal2

 

 

/etc/shadow Dosyası

 

Kullanıcını şifresi ve şifre ile ilgili bilgiler /etc/shadow dosyasında tutulur,şifre encrypted haldedir.Dosyayı sadece root kullanıcısı okuyabilir,başka kimse okuyamaz.Ayrıca dosyayı sistem kendisi editler

 

Root kullanıcısının da dokunmasını istemez.

 

 

[root@artemis ~]# cat /etc/shadow | grep bilgipark

bilgipark:$1$.LPc5Idp$0pdayFoyejLjR5p0B4tiR1:15229:0:99999:7:::

 

 

 

Peki bu çıktıyı nasıl yorumlamak gerekir diyorsanız,aşağıdaki resimde numaralandırılmış ve ilgili açıklamaları yapılmış kısımları takip edelim.

 

 

 

image014

 

 

 

  1. Kullanıcını ismi
  2. Kullanıcının encrypted şifresi
  3. En son şifre değiştirilme tarihi (Last password change (lastchanged)). Unix&Linux sistemlerde tarih 1 ocak 1970’den itibaren başlar.
  4. Minumum,Kullanıcının şifresini değiştirebilmesi için geçmesi gereken gün sayısıdır,eğer -1 ise önemi yoktur,süre kısıtlanmamıştır.
  5. Maximum,Şifreyi kullanma süresi,eğer 99999 ise önemi yoktur,süre kısıtlanmamıştır.
  6. Warn,kullanıcını şifresini değiştirme tarihine yaklaşmadan kaç gün önce uyarı verilecek, -1 ise önemi yoktur,uyarı verilmeyecektir.
  7. Inactive,kullanıcı şifresini değiştirme tarihi geçtikten sonra hala şifre değişmemiş ise ,kullanıcıyı pasif hale çekmek için gün sayısı,-1 ise önemi yoktur,pasifleştirme uygulanmayacaktır.
  8. Expire,kullanıcı hesabı ne zaman sona ereceği bilgisini tutar.Gün bilgisi yine 1 Ocak 1970 tarihinden itibarendir.

 

 

Peki kullanıcıların şifre değiştirme,kullanım süresi ayarlama ve uyarı işlemlerini nasıl yapacağız? Burada “passwd” ve “chage” komutu yardımımıza koşuyor.Şimdi bu komutları inceleyelim.

 

Passwd; Unix&Linux Sistemlerde şifrenizi değiştirmek için passwd komutunu kullanacaksınız. Siz sisteme bağlı iken konsola passwd komutunu verdikten sonra kendi şifrenizi değiştirebilirsiniz. Root kullanıcısı ise kendi şifresi dahil olmak üzere,sistemde olan diğer bütün kullanıcıların şifresini değiştirebilir.Ama var olan şifrelerin ne olduğunu göremez.Görmesine gerek yok çünkü Unix&Linux sistemlerde bir kişi Root ise sistemde aklınıza gelebilecek her şeyi yapabilir.

 

 

Not: Şifrenin kalitesi yani güçlülüğü ile ilgili isterseniz sınırlandırma koyabilirsiniz.Bunun çeşitli yöntemleri mevcut.

 

İleriki makalelerde göreceğiz.

 

 

passwd [seçenekler] kullanıcı_ismi

 

 

Seçenekler

Açıklama

-d, --delete

Kullanıcının şifresini siler.Kullanıcı sisteme login olamaz.shadow dosyasına ilgili alan boş gözükür.

-l, --lock

Kullanıcıyı kilitler.Kullanıcı sisteme login olamaz.

-u, --unlock

Kullanıcının kilidini kaldırır.

-f, --force

Herhangi bir işlem yapmadan önce ne olursa olsun sistemi işlemin yapılması için zorlar.

-x, --maximum=DAYS

Şifrenin en çok kullanım süresi, kullanıcı bu günden sonra şifresini kullanamaz.

-n, --minimum=DAYS

Şifrenin en az kullanım süresi,kullanıcı bu günden önce şifresini değiştiremez.

-w, --warning=DAYS

Şifre değiştirilme zamanı gelmeden kaç gün önce uyarı verilecek.

-i, --inactive=DAYS

Kullanıcı hiç login olmadan veya şifresini bir şekilde kullanmadan kaç gün geçerse hesabı lock’ lanacak.

-S, --status

Kullanıcının şifre durumları.

 

 

Örnek;

 

 

[root@artemis ~]# passwd -l bilgipark

Locking password for user bilgipark.

[root@artemis ~]#

[root@artemis ~]#

[root@artemis ~]# passwd -S bilgipark

bilgipark LK 2011-09-12 0 99999 7 -1 (Password locked.)

[root@artemis ~]# cat /etc/shadow|grep bilgipark

bilgipark:!!$1$.LPc5Idp$0pdayFoyejLjR5p0B4tiR1:15229:0:99999:7:::

 

 

[root@artemis ~]# passwd -u bilgipark

Unlocking password for user bilgipark.

passwd: Success.

[root@artemis ~]#

[root@artemis ~]# passwd -S bilgipark

bilgipark PS 2011-09-12 0 99999 7 -1 (Password set, MD5 crypt.)

 

 

[root@artemis ~]# passwd -x 250 -n 10 -w 1 bilgipark

Adjusting aging data for user bilgipark.

passwd: Success

[root@artemis ~]#

[root@artemis ~]# passwd -S bilgipark

bilgipark PS 2011-09-12 10 250 1 -1 (Password set, MD5 crypt.)

 

 

[root@artemis ~]# passwd -d bilgipark

Removing password for user bilgipark.

passwd: Success

[root@artemis ~]#

[root@artemis ~]# passwd -S bilgipark

bilgipark NP 2011-09-12 10 250 1 -1 (Empty password.)

[root@artemis ~]#

[root@artemis ~]#

[root@artemis ~]# cat /etc/shadow|grep bilgipark

bilgipark::15229:10:250:1:::

[root@artemis ~]# ssh bilgipark@localhost

bilgipark@localhost's password:

Permission denied, please try again.

bilgipark@localhost's password:

Permission denied, please try again.

 

 

[root@artemis ~]# passwd bilgipark

Changing password for user bilgipark.

New UNIX password:

BAD PASSWORD: it is too simplistic/systematic

Retype new UNIX password:

passwd: all authentication tokens updated successfully.

 

 

Chage; Chage komutu passwd komutuna göre daha özelleşmiş durumda, sadece şifre yaşlandırma politikası ile ilgili işlemler mevcut.

 

chage [seçenekler] kullanıcı_ismi

 

 

 

Seçenekler

Açıklama

-d, --lastday LAST_DAY

Şifrenin son değiştirilme tarihi.

-E, --expiredate EXPIRE_DATE

Şifrenin süresinin dolma tarihi. Formatı YYYY-MM-DD halinde olacaktır.

-I, --inactive INACTIVE

Kullanıcı hiç login olmadan veya şifresini bir şekilde kullanmadan kaç gün geçerse hesabı lock’ lanacak.

-l, --list

Kullanıcı hesabının şifre yaşlanma bilgileri.

-m, --mindays MIN_DAYS

Şifrenin en az kullanım süresi,kullanıcı bu günden önce şifresini değiştiremez.

-M, --maxdays MAX_DAYS

Şifrenin en çok kullanım süresi, kullanıcı bu günden sonra şifresini kullanamaz.

-W, --warndays WARN_DAYS

Şifre değiştirilme zamanı gelmeden kaç gün önce uyarı verilecek.

 

 

Örnek;

 

[root@artemis ~]# chage -l bilgipark

Last password change : Sep 12, 2011

Password expires : May 19, 2012

Password inactive : never

Account expires : never

Minimum number of days between password change : 10

Maximum number of days between password change : 250

Number of days of warning before password expires : 1

 

 

[root@artemis ~]# chage -E "2011-12-31" bilgipark

[root@artemis ~]#

[root@artemis ~]# chage -l bilgipark

Last password change : Sep 12, 2011

Password expires : May 19, 2012

Password inactive : never

Account expires : Dec 31, 2011

Minimum number of days between password change : 10

Maximum number of days between password change : 250

Number of days of warning before password expires : 1

[root@artemis ~]# cat /etc/shadow|grep bilgipark

bilgipark:$1$zHAShkVN$penEfqD3.RdeLST/oyCuH.:15229:10:250:1::15339:

 

 

[root@artemis ~]# chage -I -1 -m 0 -M 99999 -E -1 bilgipark -- > eğer bu kısıtlamalarla uğraşmak istemiyorsanız kullanıcı ismini seçip bu komutu girmeniz yeterli.

[root@artemis ~]#

[root@artemis ~]# chage -l bilgipark

Last password change : Sep 12, 2011

Password expires : never

Password inactive : never

Account expires : never

Minimum number of days between password change : 0

Maximum number of days between password change : 99999

Number of days of warning before password expires : 1

 

 

Kullanıcı İşlemlerinde Faydalı Ek Komutlar

 

 

w; Unix&Linux sistemlerde kimin login olduğu ve ne yaptığı bilgisini gösterir.

 

Aşağıdaki örnekte gördüğünüz çıktıdaki kolonları bu tabloya göre değerlendirebiliriz.

 

 

 

User

TTY

FROM

LOGIN

IDLE

JCPU

PCPU

WHAT

Kullanıcının İsmi

Kullanıcının sisteme hangi konsolda bağlı olduğu(0 ise arayüzden,
pts/x ise x numaralı konsoldan)

Kullanıcı eğer sisteme arayüzden bağlı ise :0 ile , remote konsoldan bağlı ise IP si verilerek gösterilir.

Ne zaman sisteme login olduğu bilgisi

Hiçbir iş yapılmadan geçirilmiş süre,eğer konsolda bir iş yapmıyorsanız idle süresi giderek artar.Fakat aktif bir kullanıcı var ise idle süresi düşüktür.

Bağlı olunan konsalda çalışan programların CPU çalıştırma süreleri

What alanında gözüken/çalışan programın CPU çalıştırma süresi

Şu an kullanıcı ne yapıyor,ne çalıştırıyor.Eğer bir program çalıştırıyorsa o programın Path’i gözükür,sadece bağlı ise bağlı olduğu shell bilgisi gözükür.

 

Örnek;

 

[root@artemis ~]# w

17:37:00 up 59 min, 6 users, load average: 0.00, 0.00, 0.00

USER     TTY         FROM   LOGIN@ IDLE JCPU PCPU WHAT

root                       :0            -              16:39     ?xdm? 31.05s     0.05s      /bin/sh /usr/bin/startkde

root                       pts/1     :0            16:40     56:59     0.00s      0.26s      kded --new-startup

root                       pts/2     :0            16:40     2:25        0.14s      0.14s      /bin/bash

root                       pts/3     192.168.0.107 17:35         0.00s      0.02s       0.00s     w

cozumpar            pts/4     192.168.0.107 17:36         43.00s   0.02s      0.02s      -bash

bilgipar                 pts/5      192.168.0.107 17:36        24.00s   0.02s      0.02s      -bash

 

 

who; Unix&Linux sistemlerde kimin login olduğu bilgisi yanında ek seçeneklerle farklı bilgiler veren bir komuttur.

 

who [seçenekler]

 

 

Seçenekler

Açıklama

-a, --all

Bütün seçenekleri kullanmak için kullanılır.

-b, --boot

Sistemin en son ne zaman boot ettiği bilgisini gösterir.

-m

Komutu çalıştıran kişinin hangi terminalden ve hangi ipden ne zaman login olduğu bilgisini gösterir.

-p, --process

İnit pid=1 process’i tarafından başlatılan process’leri listeler.Yani sistemi sırasıyla açan ilk process olan init process’in başlattığı ve halen çalışan diğer processler.

-q, --count

Sisteme login olmuş kullanıcıların isimlerini ve toplam sayıyı verir.

-r, --runlevel

Sistemin çalışma seviyesini gösterir.

-t, --time

Sistemin saatinin en son değiştirildiği vakit.

-u, --users

Sisteme bağlı olan kullanıcıları listeler.

 

 

Örnek;

 

[root@artemis ~]# who -b

system boot 2011-10-09 16:38

[root@artemis ~]# who -q

root root root root cozumpark bilgipark

# users=6

[root@artemis ~]# who -r

run-level 5 2011-10-09 16:38 last=S

[root@artemis ~]# who -t

[root@artemis ~]#

[root@artemis ~]# who -u

root :0 2011-10-09 16:39 ? 4340

root pts/1 2011-10-09 16:40 02:05 4470 (:0)

root pts/2 2011-10-09 16:40 01:11 4527 (:0)

root pts/3 2011-10-09 17:35 . 6412 (192.168.0.107)

cozumpark pts/4 2011-10-09 17:36 00:45 6511 (192.168.0.107)

bilgipark pts/5 2011-10-09 17:36 01:09 6544 (192.168.0.107)

[root@artemis ~]#

 

 

Lastlog; Kullanıcıların sisteme en son ne zaman login olduğu bilgisini tutan bilgiyi gösterir.

Hiç login olmayan kullanıcı için “Never logged inbilgisini,login olmuş kullanıcı için ise en son login tarihini verir.

 

 

Örnek;

 

 

[root@artemis ~]# lastlog

Username Port From Latest

root pts/3 192.168.0.107 Sun Oct 9 17:35:00 +0300 2011

bin **Never logged in**

daemon **Never logged in**

adm **Never logged in**

lp **Never logged in**

sync **Never logged in**

shutdown **Never logged in**

halt **Never logged in**

mail **Never logged in**

news **Never logged in**

uucp **Never logged in**

operator **Never logged in**

games **Never logged in**

gopher **Never logged in**

ftp **Never logged in**

nobody **Never logged in**

nscd **Never logged in**

vcsa **Never logged in**

ntp **Never logged in**

pcap **Never logged in**

dbus **Never logged in**

avahi **Never logged in**

rpc **Never logged in**

mailnull **Never logged in**

smmsp **Never logged in**

sshd **Never logged in**

oprofile **Never logged in**

xfs **Never logged in**

rpcuser **Never logged in**

haldaemon **Never logged in**

avahi-autoipd **Never logged in**

gdm **Never logged in**

sabayon **Never logged in**

cozumpark pts/4 192.168.0.107 Sun Oct 9 17:36:13 +0300 2011

bilgipark pts/5 192.168.0.107 Sun Oct 9 17:36:28 +0300 2011

hayal1 **Never logged in**

hayal2 **Never logged in**

 

 

finger;Kullanıcı bilgilerini sistemden sorgulama programıdır. Güvenlik olarak açıkları bulunmuştur. Sistemden binary’lerinin kaldırılması eğer servisi varsa pasif hale getirilmesi

tavsiye edilir.

 

 

[root@artemis ~]# finger cozumpark

Login: cozumpark Name: cozumpark user

Directory: /home/cozumpark Shell: /bin/bash

On since Sun Oct 9 17:36 (EEST) on pts/4 from 192.168.0.107

48 minutes 50 seconds idle

No mail.

No Plan.

 

 

Login: bilgipark Name: cozumpark sistem admin

Directory: /home/bilgipark Shell: /bin/bash

On since Sun Oct 9 17:36 (EEST) on pts/5 from 192.168.0.107

1 hour 11 minutes idle

No mail.

No Plan.

 

 

Wall; Sisteme login olmuş kullanıcılara genel bir mesaj göndermek için kullanılır. Genelde sistemde diğer kullanıcıları etkileyecek bir değişiklik yapılacaksa,bu değişikliği haber vermek için tercih edilir.

wall [mesaj]

 

 

//***********root kullanıcısının shell’i**********************************//

[root@artemis ~]# wall selam

 

 

Broadcast message from root (pts/3) (Sun Oct 9 19:16:12 2011):

 

 

selam

[root@artemis ~]#

 

 

//*********paralelde cozumpark kullanıcısının shell’i**********************//

[cozumpark@artemis ~]$

Broadcast message from root (pts/3) (Sun Oct 9 19:16:12 2011):

 

 

selam

 

 

[cozumpark@artemis ~]$

 

//*********paralelde bilgipark kullanıcısının shell’i**********************//

[bilgipark@artemis opt]$

Broadcast message from root (pts/3) (Sun Oct 9 19:16:12 2011):

 

 

selam

 

 

[bilgipark@artemis opt]$

 

Write; Sisteme login olmuş kullanıcılar arasında mesajlaşma yapmak için kullanılır.who komutundan kullanıcıların konsol bilgileri çekildikten sonra istenilen kullanıcıya mesaj gönderilebilir.

 

 

//***********root kullanıcısının shell’i********************************//

[root@artemis ~]# write bilgipark pts/5

merhaba bilgipark

nasilsiniz efendim?

 

 

//*********paralelde bilgipark kullanıcısının shell’i**********************//

[bilgipark@artemis opt]$

 

 

Message from root@artemis on pts/3 at 19:25 ...

merhaba bilgipark

nasilsiniz efendim?

 

 

Last,lastb; Sisteme başarılı ve başarısız login olma durumlarını listeler.

Last komutu /var/log/wtmp dosyası var ise, bu dosyadan sisteme komutun çalıştırıldığı ana kadar login olmuş bütün kullanıcıları çeker.

Lastb komutu /var/log/btmp dosyası var ise,bu dosyada sisteme login olma girişimi başarısız olmuş kullanıcı bilgilerini çeker.

Eğer belirtilen dosyalar yok ise kendiniz aşağıdaki izin ve sahipliklere bakarak oluşturabilirsiniz.Sonrasında sistem otomatik olarak bu bilgileri kaydetmeye devam edecektir.

[root@artemis ~]# ls -l /var/log/wtmp

-rw-rw-r-- 1 root utmp 445440 Oct 9 17:36 /var/log/wtmp

[root@artemis ~]# ls -l /var/log/btmp

-rw------- 1 root utmp 2688 Sep 12 22:53 /var/log/btmp

 

--son---

 

 

Linux Sistemlerde Dosya ve Dizinlerde Sahiplik ve İzin İşlemleri – Bölüm 7

$
0
0

Makale serimizin 7 bölümünde Linux sistemlerde dosya ve dizin sahiplikleri ve izin işlemleri konusuna değineceğim.

 

Dosyalara ve dizinlere erişilirken Unix&Linux sistemlerde standart olarak kullanıcı ve grup sahiplikleri, izinleri kullanılmaktadır.

 

 

2 adet sahiplik vardır.

 

  1. Dosya veya dizinin kullanıcısının kime ait olduğu(owner of the file/directory)

 

  1. Dosya veya dizinin grubunun ne olduğu(group of the file/directory)

 

 

3 adet izin alanı bulunmaktadır.

 

 

  1. Dosya veya dizinin sahibinin izinleri (user)

 

  1. Dosya veya dizinin grubunun izinleri(group)

 

  1. Dosya veya dizinin diğer şahıslara göre olan izinleri.(others)

 

 

Temel komutlar makalemizde “ls” komutunun çıktısını şöyle göstermiştik.

 

 

 

image001

 

 

 

Bilgipark kullanıcısı ile ev dizinine gidip izin_test isimli bir dosya oluşturduk.

 

 

[bilgipark@artemis ~]$ touch izin_test

[bilgipark@artemis ~]$

[bilgipark@artemis ~]$ ls -l

total 0

-rw-rw-r-- 1 bilgipark bilgipark 0 Sep 16 21:03 izin_test

 

 

Gördüğünüz gibi izin bölümünde( - --- --- --- ) 10 adet –(tire/çizgi) işareti var. İlk - dosyanın türü için ayrılıyor ,geriye 3’lü gruplar halinde 3 adet set kalıyor.

 

Setler 2’lik düzende izinleri belirtmek için kullanılır,eğer tam değerler kullanılırsa toplamda bir set için değer 222120 -- > 421 --> 7 olur. Bu sayıların anlamı ise şu şekildedir.

 

4-r -- > okuma(r) izni

2-w -- > yazma(w) izni

1-x -- > çalıştırma(x) izni(dizinler için çalıştırma izni o dizine girebilmektir,dosyalar için çalıştırma izni ise script veya binary halinde bildiğimiz şekilde çalıştırmaktır.)

 

 

Bu şekilde dosya veya dizinin izninden bahsetmek gerekirse 3 seti de yan yana koymalıyız.Hemen aşağıdaki resimde izin_test isimli dosyamızın izinlerinin neye karşılık geldiğini anlatmaya çalıştık.

 

 


image002             

 

 

Yani bizim izin_test dosyamız “ -rw-rw-r--“ izinleriyle 664 olur. Peki bu neyi ifade eder?

 

Ø  Dosyanın sahibi(bilgipark) ; dosyayı okuyup, yazabilir.

Ø  Dosyanın ait olduğu gruptakiler(bilgipark grubuna üye olanlar); dosyayı okuyup, yazabilir.

Ø  Sistemde bulunan diğer kişiler(others-sistemdeki bu kullanıcı ve gruba üye olmayan herhangi birileri) dosyayı sadece okuyabilir.

 

 

Dosya veya Dizinin İzinlerini Değiştirmek

 

Chmod; Dosya ve dizinlerin izinleri sahipleri ve root tarafından değiştirilebilir. Değiştirmek için “chmod” komutu kullanılır.

 

 

chmod [seçenekler]... MODE[,MODE]... FILE... -- >          MODE: sembolik ifadeler verilerek,u-user,g-group,o-others, r-read,w-write,x-execute; uo+rw gibi

chmod [seçenekler]... OCTAL-MODE FILE... -- >                 OCTAL-MODE: sayısal değer verilerek,777-rwx,755-r-x gibi.

chmod [seçenekler]... --reference=RFILE FILE... -- >        izinlerinde başka bir dosyadan kopya çekilerek yapılması

 

 

 

Seçenekler

Açıklama

-c, --changes

Verbose moda benzer ama sadece değişim olduğunda kullanıcıya bilgi verir.

-f, --silent, --quiet

Hata veya uyarı mesajı gelirse kullanıcıyı rahatsız etme.

-v, --verbose

İzin değiştirme işlemlerini verbose modda yap.(kullanıcıyı bilgilendirme modu)

-R, --recursive

Eğer bir dizinin izinleri değiştiriliyorsa Dizinin içindekileri de recursive olarak değiştir.

--reference=RFILE

İzini başka bir dosya veya dizinin iznine referans alarak değiştir.

 

 

 

Bir Dosya için r,w,x izinleri anlaşılabilirken ,bir dizin için aynı şeyleri söylemek mümkün değil. Onun için dizinlere izin verirken aşağıdaki tabloya dikkat etmek gerek.

 

 

 

Dizinler için İzinler ne anlama geliyor ? (Permissions for Directories)

Açıklama

r-read,okuma

Bir dizinde read hakkınız olması,dizinin içinde ne olduğunu görebilmek ve ls komutunu o dizin üstünde çalıştırabilmek demektir.

w-write,yazma

Bir dizinde write hakkınız varsa, o dizin içinde dosya oluşturabilirsiniz,var olan dosyaları da silebilirsiniz o dosyalar üstünde w-write hakkınız olMAsa dahi. Onun için bir dizine w hakkı verirken iyi düşünün derim.

x-execute,çalıştırma

Bir dizinde execute hakkınız var ise O dizinin içine gidebilirsiniz/geçebilirsiniz.

 

 

(MODE kısmı) Sembolik ifadelerle izin işlemleri yapılırken izin vermek için +, almak için –,tam şuna benzesin diyorsanız = işareti ile beraber kullanılmalıdır. Mesela,

 

 

Chmod ugo+rwx myscript -- > myscript dosyası için user,group ve others’a bütün hakları(r,w,x) verdik.

 

Chmod a+x myscript       -- > myscript dosyası için user,group ve others’ı sadece a işareti ile belirterek execute hakkını(x) verdik.

 

Chmod o-x myscript        -- > myscript dosyası için group’stan – işareti ile execute hakkını(x) kaldırdık.

 

 

Örnekler;

 

 

[bilgipark@artemis ~]$ chmod 777 izin_test

[bilgipark@artemis ~]$

[bilgipark@artemis ~]$ ls -l izin_test

-rwxrwxrwx 1 bilgipark bilgipark 0 Sep 16 21:03 izin_test

 

 

[bilgipark@artemis ~]$ touch ref_file

[bilgipark@artemis ~]$ ls -l

total 0

-rwxrwxrwx 1 bilgipark bilgipark 0 Sep 16 21:03 izin_test

-rw-rw-r-- 1 bilgipark bilgipark 0 Sep 18 16:46 ref_file

 

 

[bilgipark@artemis ~]$ chmod -v --reference=ref_file izin_test

mode of `izin_test' changed to 0664 (rw-rw-r--)

[bilgipark@artemis ~]$

[bilgipark@artemis ~]$

[bilgipark@artemis ~]$ ls -l

total 0

-rw-rw-r-- 1 bilgipark bilgipark 0 Sep 16 21:03 izin_test

-rw-rw-r-- 1 bilgipark bilgipark 0 Sep 18 16:46 ref_file

 

 

[bilgipark@artemis ~]$ mkdir izin_dir

[bilgipark@artemis ~]$ touch izin_dir/izinler1

[bilgipark@artemis ~]$ touch izin_dir/izinler2

[bilgipark@artemis ~]$ touch izin_dir/izinler3

 

 

[bilgipark@artemis ~]$ ls -lRt izin_dir

izin_dir:

total 0

-rw-rw-r-- 1 bilgipark bilgipark 0 Sep 18 16:52 izinler1

-rw-rw-r-- 1 bilgipark bilgipark 0 Sep 18 16:52 izinler2

-rw-rw-r-- 1 bilgipark bilgipark 0 Sep 18 16:52 izinler3

[bilgipark@artemis ~]$

[bilgipark@artemis ~]$

[bilgipark@artemis ~]$ ls -lrt

total 8

-rw-rw-r-- 1 bilgipark bilgipark 0 Sep 18 16:46 ref_file

-r--rw-r-- 1 bilgipark bilgipark 46 Sep 18 16:49 izin_test

drwxrwxr-x 2 bilgipark bilgipark 4096 Sep 18 16:53 izin_dir

[bilgipark@artemis ~]$

 

 

[bilgipark@artemis ~]$ chmod -r 775 izin_dir -- > izin_dir dizinin kendisi dahil içindekilerle beraber izinlerini –r seçeneği sayesinde 775’ çektik.

[bilgipark@artemis ~]$ ls -lrt

total 8

-rw-rw-r-- 1 bilgipark bilgipark 0 Sep 18 16:46 ref_file

-r--rw-r-- 1 bilgipark bilgipark 46 Sep 18 16:49 izin_test

drwxrwxr-x 2 bilgipark bilgipark 4096 Sep 18 16:53 izin_dir

[bilgipark@artemis ~]$

[bilgipark@artemis ~]$ ls -rlt izin_dir

izin_dir:

total 0

-rwxrwxr-x 1 bilgipark bilgipark 0 Sep 18 16:53 izinler1

-rwxrwxr-x 1 bilgipark bilgipark 0 Sep 18 16:53 izinler2

-rwxrwxr-x 1 bilgipark bilgipark 0 Sep 18 16:53 izinler3

 

 

Örnek-2;

 

Bu örnekte cozumpark ve bilgipark kullanıcılarını kullanarak,cozumpark kullanıcısının /tmp altında oluşturduğu bir dizinin içini bilgipark kullanıcısının listeleyip listeleyememesini işledik.

 

Çekilen snapshot’da üst yeşil konsolda çözümpark kullanıcısı,alt siyah konsolda bilgipark kullanıcısı yer alıyor ve işlem adımları numaralandırılmış durumda.

 

[cozumpark@artemis ~]$ cd /tmp

[cozumpark@artemis tmp]$

[cozumpark@artemis tmp]$ mkdir cozum

 

 

 

image003

 

 

 

Burada /tmp altında cozumpark kullanıcısının oluşturmuş olduğu cozum isimli dizinin sahibi ve grubu yine cozumpark doğal olarak. Dolayısıyla bilgipark kullanıcısının haklarını incelerken “others” kısmının izinlerine bakmak bizim için yeterli. Örneğimizde cozumpark kullanıcısı cozum dizininden “others” dan read-okuma hakkını kaldırdığında ,bilgipark kullanıcısı “Permission Denied” diye bir hata aldı.

 

 

Peki;ben bir dosya veya dizin oluşturduğumda hemen standart olarak belli izinler geliyor.Bunları sistem otomatik olarak nereden çekiyor diyorsanız söyleyelim, umask.

 

 

Umask; Sistemdeki varsayılan izinler umask değerleri ile son hallerine dönüşür. Normalde sistemde dosyalar 666,dizinler ise 777 izinleri ile oluşturulur eğer umask 000 ise. Fakat Unix&Linux sistemlerde umask’i 022’e ayarlayarak genel bir izin sınırlaması getirilmiş olur. Burada dikkat edilmesi gereken nokta Umask ‘a verilen değerin sistemden verdiği değerlerden kaldırılacak izinleri göstermesidir.

 

 

 

umask [value]

 

 

 

Dosyalar için

Dizinler için

Normal sistem davranışı

rw- rw- rw-

rwx rwx rwx

Umask

000 010 010

000 010 010

Sonuç

rw- r-- r--

rwx r-x r-x

 

Umask grubun ve others’ın “w” haklarını kaldırdı.

 

 

Örnek;

 

[cozumpark@artemis ~]$ umask

0002

[cozumpark@artemis ~]$ touch ornek_mask

[cozumpark@artemis ~]$

[cozumpark@artemis ~]$ ls -l ornek_mask

-rw-rw-r-- 1 cozumpark cozumpark 0 Oct 14 17:53 ornek_mask

[cozumpark@artemis ~]$

[cozumpark@artemis ~]$ mkdir ornek_dir_mask

[cozumpark@artemis ~]$

[cozumpark@artemis ~]$ ls -ld ornek_dir_mask

drwxrwxr-x 2 cozumpark cozumpark 4096 Oct 14 17:53 ornek_dir_mask

[cozumpark@artemis ~]$

[cozumpark@artemis ~]$ umask 000

[cozumpark@artemis ~]$

[cozumpark@artemis ~]$ touch ornek2_mask

[cozumpark@artemis ~]$

[cozumpark@artemis ~]$ ls -l ornek2_mask

-rw-rw-rw- 1 cozumpark cozumpark 0 Oct 14 17:54 ornek2_mask

[cozumpark@artemis ~]$

[cozumpark@artemis ~]$

[cozumpark@artemis ~]$ mkdir ornek2_dir_mask

[cozumpark@artemis ~]$

[cozumpark@artemis ~]$ ls -ld ornek2_dir_mask

drwxrwxrwx 2 cozumpark cozumpark 4096 Oct 14 17:54 ornek2_dir_mask

[cozumpark@artemis ~]$

 

 

Dosya veya Dizinin Sahiplerini ve Gruplarını Değiştirmek

 

Chown,chgrp; Dosya veya dizinin sahipliği değiştirilirken chown komutu,grubu değiştirilirken chgrp komutu kullanılır.

 

 

chown [seçenekler]... [OWNER][:[GROUP]] FILE...

chown [seçenekler]... --reference=RFILE FILE...

 

 

chgrp [OPTION]... GROUP FILE...

chgrp [OPTION]... --reference=RFILE FILE...

 

 

 

Seçenekler-

Açıklama

-c, --changes

--dereference

Eğer dosya bir link ise o sembolik linkin izinleri değil de onun gösterdiği dosyanın sahipliği değişir.(normali de budur.)

-h, --no-dereference

Sembolik linkin kendi sahipliklerini değiştir.(normalde böyle değildir.)

-f, --silent, --quiet

Hata veya uyarı mesajı gelirse kullanıcıyı rahatsız etme.

-v, --verbose

Sahiplik değiştirme işlemlerini verbose modda yap.(kullanıcıyı bilgilendirme modu)

-R, --recursive

Eğer bir dosyanın/dizinin sahiplikleri değiştiriliyorsa dosyanın/dizinin içindekileri de recursive olarak değiştir.

--reference=RFILE

Sahipliği başka bir dosya veya dizinin sahipliğini referans alarak değiştir.

Sistemdeki sembolik linklerin uçtan uca sahipliğini değiştirmek için bu aşağıdaki 3 seçeneği –R recursive seçeneği ile beraber kullanırız .Genellikle –RL şeklinde kullanılır.

-H veya -L

Verdiğimiz argüman sembolik link ise onu takip eder. –L daha kapsamlıdır iç içe geçmiş linkleri de takip eder FS ağaç yapısında.

-P

Herhangi bir sembolik linki takip etme.(normal-default’u budur.)

 

 

 

Bu komutları kullanırken root kullanıcısı olmanız gerekli. Aksi takdirde “operations not permitted” hatası alırsınız. Sisteme cozumpark kullanıcı adı ve şifresi ile login olup,root’a “su –“ komutu ile geçiyoruz.

 

 

Örnek;

 

[cozumpark@artemis ~]$cd /tmp

[cozumpark@artemis tmp]$touch izin_test

[cozumpark @artemis tmp]# ls -l izin_test

-rw-rw-r-- 1 cozumpark cozumpark 0 Sep 20 00:30 izin_test

[cozumpark@artemis ~]$ su -

Password:

[root@artemis ~]#cd /tmp

[root@artemis tmp]#

[root@artemis tmp]# chown bilgipark:bilgipark izin_test -- > izin_test dosyasının sahibi ve grubunu bilgipark yaptık.

[root@artemis tmp]#

[root@artemis tmp]# ls -l izin_test

-rw-rw-r-- 1 bilgipark bilgipark 0 Sep 20 00:30 izin_test

[root@artemis tmp]# chgrp cozumpark izin_test

[root@artemis tmp]#

[root@artemis tmp]# ls -l izin_test

-rw-rw-r-- 1 bilgipark cozumpark 0 Sep 20 00:30 izin_test

root@artemis tmp]# ls –lrt;

total 1

-rw-rw-r-- 1 bilgipark cozumpark 0 Sep 20 00:30 izin_test

root@artemis tmp]#rm izin_test

 

 

Örnek-2;

 

Bu örnekte bir dizin oluşturup o dizine soft link oluşturacağız, ayrıca o dizinin içinde dummy dosya ve dizinler oluşturup hem içerisinden hem de dışarıya doğru bir soft link atacağız.

 

 

[root@artemis tmp]# mkdir izindir

[root@artemis tmp]#

[root@artemis tmp]# ln -s izindir link_izindir -- > izindir dizinine soft link yaptık

[root@artemis tmp]#

[root@artemis tmp]# ls -lrt

total 3

-rw-rw-r-- 1 bilgipark bilgipark 0 Sep 20 00:30 izin_test

drwxr-xr-x 2 root root 4096 Oct 9 16:41 izindir

lrwxrwxrwx 1 root root 7 Oct 9 16:41 link_izindir -> izindir

[root@artemis tmp]#

[root@artemis tmp]#

[root@artemis tmp]#touch izindir/file1

[root@artemis tmp]# touch izindir/file2

[root@artemis tmp]# touch izindir/file3 -- > izindir dizininin altına 3 adet dosya oluşturduk

[root@artemis tmp]#

[root@artemis tmp]# ls –lrt izindir;cd izindir

total 0

-rw-r--r-- 1 root root 0 Oct 9 16:41 file1

-rw-r--r-- 1 root root 0 Oct 9 16:41 file2

-rw-r--r-- 1 root root 0 Oct 9 16:41 file3

[root@artemis izindir]#

[root@artemis izindir]# mkdir icerdeki_dir1 -- > izindir altına 2 tane daha dizin oluşturduk

[root@artemis izindir]# mkdir icerdeki_dir2

[root@artemis izindir]#

[root@artemis izindir]# ln -s icerdeki_dir1 link_to_icerdeki_dir1e -- > izindir altındaki icerdeki_dir1 isimli dizine bir soft link oluşturduk.

[root@artemis izindir]#

[root@artemis izindir]#

[root@artemis izindir]# ls -lrt

total 8

-rw-r--r-- 1 root root 0 Oct 9 16:41 file1

-rw-r--r-- 1 root root 0 Oct 9 16:41 file2

-rw-r--r-- 1 root root 0 Oct 9 16:41 file3

drwxr-xr-x 2 root root 4096 Oct 9 16:42 icerdeki_dir1

drwxr-xr-x 2 root root 4096 Oct 9 16:42 icerdeki_dir2

lrwxrwxrwx 1 root root 13 Oct 9 16:42 link_to_icerdeki_dir1e -> icerdeki_dir1

[root@artemis izindir]# pwd

/tmp/izindir

[root@artemis izindir]#

[root@artemis izindir]# mkdir -p /tmp/disardaki_dir3 -- > bir de dışarıya bir dizin oluşturduk

[root@artemis izindir]#

[root@artemis izindir]# ln -s /tmp/disardaki_dir3 disariya_link_dir3e -- > şimdi ise dışardaki dizine soft link oluşturduk

[root@artemis izindir]#

[root@artemis izindir]# ls -lrt

total 8

-rw-r--r-- 1 root root 0 Oct 9 16:41 file1

-rw-r--r-- 1 root root 0 Oct 9 16:41 file2

-rw-r--r-- 1 root root 0 Oct 9 16:41 file3

drwxr-xr-x 2 root root 4096 Oct 9 16:42 icerdeki_dir1

drwxr-xr-x 2 root root 4096 Oct 9 16:42 icerdeki_dir2

lrwxrwxrwx 1 root root 13 Oct 9 16:42 link_to_icerdeki_dir1e -> icerdeki_dir1

lrwxrwxrwx 1 root root 19 Oct 9 16:43 disariya_link_dir3e -> /tmp/disardaki_dir3

[root@artemis izindir]#

[root@artemis izindir]# cd ..

[root@artemis tmp]#

[root@artemis tmp]#

[root@artemis tmp]# ls -lrt izin*

total 8

-rw-r--r-- 1 root root 0 Oct 9 16:41 file1

-rw-r--r-- 1 root root 0 Oct 9 16:41 file2

-rw-r--r-- 1 root root 0 Oct 9 16:41 file3

drwxr-xr-x 2 root root 4096 Oct 9 16:42 icerdeki_dir1

drwxr-xr-x 2 root root 4096 Oct 9 16:42 icerdeki_dir2

lrwxrwxrwx 1 root root 13 Oct 9 16:42 link_to_icerdeki_dir1e -> icerdeki_dir1

lrwxrwxrwx 1 root root 19 Oct 9 16:43 disariya_link_dir3e -> /tmp/disardaki_dir3

[root@artemis tmp]#

[root@artemis tmp]#

[root@artemis tmp]# ls -ltr

lrwxrwxrwx 1 root root 7 Oct 9 16:41 link_izindir -> izindir

drwxr-xr-x 2 root root 4096 Oct 9 16:43 disardaki_dir3

drwxr-xr-x 4 root root 4096 Oct 9 16:43 izindir

[root@artemis tmp]# cat /etc/group|grep park

cozumpark:x:500:

yonetici:x:502:cozumpark

bilgipark:x:501:hayal1,hayal2

[root@artemis tmp]#

[root@artemis tmp]# ls -lrt

lrwxrwxrwx 1 root root 7 Oct 9 16:41 link_izindir -> izindir

drwxr-xr-x 2 root root 4096 Oct 9 16:43 disardaki_dir3

drwxr-xr-x 4 root root 4096 Oct 9 16:43 izindir

[root@artemis tmp]#

[root@artemis tmp]#

[root@artemis tmp]# chgrp -RH bilgipark link_izindir -- > chgrp komutunu –RH seçenekleri ile link_izindir’in gösterdiği dizin ve o dizinin altında ne varsa grubunu bilgipark yaptık.

[root@artemis tmp]#

[root@artemis tmp]# ls -lrt

total 3

lrwxrwxrwx 1 root root 7 Oct 9 16:41 link_izindir -> izindir

drwxr-xr-x 2 root bilgipark 4096 Oct 9 16:43 disardaki_dir3

drwxr-xr-x 4 root bilgipark 4096 Oct 9 16:43 izindir

lrwxrwxrwx 1 root root 7 Oct 9 16:47 link2_izindir -> izindir

[root@artemis tmp]#

[root@artemis tmp]# ls -lrt izindir -- > -RH seçeneği ile gördüğünüz gibi hem verdiğimiz soft linki takip etti,hem de önüne çıkan diğer dizinleri takip etti ve grup bilgilerini değiştirdi.

total 8

-rw-r--r-- 1 root bilgipark 0 Oct 9 16:41 file1

-rw-r--r-- 1 root bilgipark 0 Oct 9 16:41 file2

-rw-r--r-- 1 root bilgipark 0 Oct 9 16:41 file3

drwxr-xr-x 2 root bilgipark 4096 Oct 9 16:42 icerdeki_dir1

drwxr-xr-x 2 root bilgipark 4096 Oct 9 16:42 icerdeki_dir2

lrwxrwxrwx 1 root root 13 Oct 9 16:42 link_to_icerdeki_dir1e -> icerdeki_dir1

lrwxrwxrwx 1 root root 19 Oct 9 16:43 disariya_link_dir3e -> /tmp/disardaki_dir3

[root@artemis tmp]#

[root@artemis tmp]# chgrp -RL cozumpark link_izindir > chgrp komutunu –RL seçenekleri ile link_izindir’in gösterdiği dizin ve o dizinin altında ne varsa grubunu cozumpark yaptık.

[root@artemis tmp]#

[root@artemis tmp]#

[root@artemis tmp]# ls -lrt

total 3

lrwxrwxrwx 1 root root 7 Oct 9 16:41 link_izindir -> izindir

drwxr-xr-x 2 root cozumpark 4096 Oct 9 16:43 disardaki_dir3

drwxr-xr-x 4 root cozumpark 4096 Oct 9 16:43 izindir

lrwxrwxrwx 1 root root 7 Oct 9 16:47 link2_izindir -> izindir

[root@artemis tmp]#

[root@artemis tmp]# ls -lrt izindir

total 8

-rw-r--r-- 1 root cozumpark 0 Oct 9 16:41 file1

-rw-r--r-- 1 root cozumpark 0 Oct 9 16:41 file2

-rw-r--r-- 1 root cozumpark 0 Oct 9 16:41 file3

drwxr-xr-x 2 root cozumpark 4096 Oct 9 16:42 icerdeki_dir1

drwxr-xr-x 2 root cozumpark 4096 Oct 9 16:42 icerdeki_dir2

lrwxrwxrwx 1 root root 13 Oct 9 16:42 link_to_icerdeki_dir1e -> icerdeki_dir1

lrwxrwxrwx 1 root root 19 Oct 9 16:43 disariya_link_dir3e -> /tmp/disardaki_dir3

[root@artemis tmp]#

[root@artemis tmp]#

[root@artemis tmp]# chgrp -RL bilgipark izindir > chgrp komutunu –RL seçenekleri ile izindir dizini üstünde koştuk dolayısıyla o dizinin altında ne varsa grubunu bilgipark yapmış olduk.

[root@artemis tmp]#

[root@artemis tmp]# ls -lrt

total 3

lrwxrwxrwx 1 root root 7 Oct 9 16:41 link_izindir -> izindir

drwxr-xr-x 2 root bilgipark 4096 Oct 9 16:43 disardaki_dir3

drwxr-xr-x 4 root bilgipark 4096 Oct 9 16:43 izindir

lrwxrwxrwx 1 root root 7 Oct 9 16:47 link2_izindir -> izindir

[root@artemis tmp]#

[root@artemis tmp]# ls -lrt izindir

total 8

-rw-r--r-- 1 root bilgipark 0 Oct 9 16:41 file1

-rw-r--r-- 1 root bilgipark 0 Oct 9 16:41 file2

-rw-r--r-- 1 root bilgipark 0 Oct 9 16:41 file3

drwxr-xr-x 2 root bilgipark 4096 Oct 9 16:42 icerdeki_dir1

drwxr-xr-x 2 root bilgipark 4096 Oct 9 16:42 icerdeki_dir2

lrwxrwxrwx 1 root root 13 Oct 9 16:42 link_to_icerdeki_dir1e -> icerdeki_dir1

lrwxrwxrwx 1 root root 19 Oct 9 16:43 disariya_link_dir3e -> /tmp/disardaki_dir3

[root@artemis tmp]#

 

 

Kullanıcılara ve Gruplara Ek Erişim Listesi(Access Control List) Oluşturmak

 

Access Control List(ACL), Erişim Kontrol Listeleri

 

Unix&Linux sistemlerde normal dosya ve dizin izinleri yanında eğer daha fazla erişim kontrolü istiyorsanız Access Control List’ler (ACL) kullanmanız gerekli.Yani ACL’yi kullanmanız için yukarıda bahsetmiş olduğumuz standart genel izin ve sahiplik kontrollerinin dışına çıkmış olursunuz.

 

Redhat ailesi 5 sürümü ile birlikte ext3 file system leri ve NFS export file systemleri için ACL’yi destekliyor.

 

ACL’yi kullanmak için kernel’in ACL’ye destek vermesi gerekirken sistemde de acl paketleri yüklü olması gerekir. Hemen şu şekilde sisteminize bir göz atıp,aşağıdaki komutun çıktısı sonucu

yüklü ACL paketini görmemiz gerekli.

 

 

[root@artemis ~]# rpm -qa|grep acl -- > bu özelliği kullanabilmemiz için sistemimizde ACL paketinin yüklü olup olmadığını kontrol ettik.

 

 

acl-2.2.39-6.el5

libacl-devel-2.2.39-6.el5

libacl-2.2.39-6.el5

 

 

Eğer acl paketimiz yüklü ise izlememiz gereken 3 adım var.

 

 

1.       /etc/fstab dosyasını editleyerek ACL tanımlayacağımız File System(FS) parçasında Fs özellikleri kısmına(fstab dosyasında 4. kolon) “acl” ifadesini eklememiz gerekiyor.

 

  1. File System’i tekrar mount etmemiz gerekiyor (remount). Umount/mount FS_ismi veya mount –o remount FS_ismi diyerek iki şekilde remount yapabiliriz.
  2. ACL kurallarını komut ile eklememiz gerekiyor (ayarlamak için setfacl, var olanı öğrenmek için getfacl).

 

 

Bizim Dosya Sistemleri makalemizde yapmış olduğumuz /myfs FS’i var. Onun üstünde işlem yapacağız. /etc/fstab dosyasında bakarsanız defaults diye bir kısım var.Orası

Var olan FS’in özelliklerinin olduğu yer. Eğer ACL’yi sürekli kullanmak istiyorsak,hangi FS parçası üstünde kullanılacaksa fstab dosyasında o FS için 4. Kolonu editlemek durumundayız.

 

 

[root@artemis ~]# df –h à /myfs sisteme mount durumda.

Filesystem Size Used Avail Use% Mounted on

/dev/mapper/VolGroup00-LogVol00

6.7G 3.0G 3.4G 48% /

/dev/sda1 99M 25M 70M 27% /boot

tmpfs 252M 0 252M 0% /dev/shm

/dev/sdb1 1004M 18M 936M 2% /myfs

[root@artemis ~]#

[root@artemis ~]#

[root@artemis ~]# cat /etc/fstab

/dev/VolGroup00/LogVol00 / ext3 defaults 1 1

LABEL=/boot /boot ext3 defaults 1 2

tmpfs /dev/shm tmpfs defaults 0 0

devpts /dev/pts devpts gid=5,mode=620 0 0

sysfs /sys sysfs defaults 0 0

proc /proc proc defaults 0 0

/dev/VolGroup00/LogVol01 swap swap defaults 0 0

/dev/sdb5 swap swap defaults 0 0

/dev/sdb1 /myfs ext3 defaults 0 0 à dosyanın bu kısmında vi editörü ile defaults yazan kısmı defaults,acl yapmamız gerekli.

 

 

Ayrıca sisteminizin ACL’yi destekleyip desteklemediğini FS’in ext_attr özelliğinden de anlayabiliyoruz.Bunun için ACL çalıştırmak istediğiniz FS parçasının bağlı olduğu disk kısmının attribute’larında ext_attr’ye bakmamız gerekiyor.

 

 

[root@artemis myfs]# tune2fs -l /dev/sdb1 |grep ext_attr -- > /myfs /dev/sdb1’e bağlı olduğu için onu kontrol ediyoruz.

Filesystem features: has_journal ext_attr resize_inode dir_index filetype needs_recovery sparse_super large_file

[root@artemis myfs]#

 

 

Vi ile /etc/fstab dosyasına girip /myfs FS parçasının FS özelliği için defaults’in yanına acl ifadesini ekleyerek değiştirdik. Cat komutu ile tekrar fstab dosyasını okuduk.VI editörü kullanımı için VI makalemize bakabilirsiniz.

 

 

[root@artemis ~]# cat /etc/fstab

/dev/VolGroup00/LogVol00 / ext3 defaults 1 1

LABEL=/boot /boot ext3 defaults 1 2

tmpfs /dev/shm tmpfs defaults 0 0

devpts /dev/pts devpts gid=5,mode=620 0 0

sysfs /sys sysfs defaults 0 0

proc /proc proc defaults 0 0

/dev/VolGroup00/LogVol01 swap swap defaults 0 0

/dev/sdb5 swap swap defaults 0 0

/dev/sdb1 /myfs ext3 defaults,acl 0 0

 

 

Var olan ACL’leri listelemek,Getfacl; Dosyaların ACL bilgisine erişmek için kullanılır.

[root@artemis ~]# getfacl /myfs à şu an /myfs üstünde normal haklar olduğunu görüyorsunuz.

getfacl: Removing leading ‘/’ from absolute path names

# file: myfs

# owner: root

# group: root

user::rwx

group::r-x

other::r-x

 

 

ACL uygulamak, Setfacl; Dosyaların ACL bilgisini girmek için kullanılır. İki tip ACL bilgisi vardır. Eğer önceden ayarlanmış ise default olan ACL vardır,bir de normal ACL vardır. Normal ACL hem dosya hem de dizinler için kullanılabilir.Ama default ACL sadece dizinler üstünde kullanılabilir.

 

 

Setfacl –m <rules> <files>

 

 

ACL’yi

u:<uid>:<perms>

Belirtilen kullanıcı için ACL’yi ayarlar. Sistemde yer alan herhangi geçerli bir kullanıcının ismi veya UID’si verilerek yapılabilir.

G:<gid>:<perms>

Belirtilen grup için ACL’yi ayarlar. Sistemde yer alan herhangi geçerli bir grubun ismi veya GID’si verilerek yapılabilir.

M:<perms>

                okuma için r-read,yazma için w-write,çalıştırma için x-execute haklarının belirtildiği kısımdır.

O:<perms>

Sistemde yer alan diğer kullanıcıları temsil eder.

 

 

[root@artemis ~]# getfacl /myfs -- > /myfs FS’imiz için ACL olup olmadığına baktık.

getfacl: Removing leading ‘/’ from absolute path names

# file: myfs

# owner: root

# group: root

user::rwx

group::r-x

other::r-x

 

 

[root@artemis ~]#

[root@artemis ~]#

[root@artemis ~]# ls –ld /myfs

drwxr-xr-x 3 root root 4096 Oct 9 21:01 /myfs

 

 

[root@artemis ~]# id cozumpark

uid=500(cozumpark) gid=500(cozumpark) groups=500(cozumpark)

[root@artemis ~]# id bilgipark

uid=501(bilgipark) gid=501(bilgipark) groups=501(bilgipark)

[root@artemis ~]#

[root@artemis ~]# chmod 775 /myfs

[root@artemis ~]#

[root@artemis ~]#

[root@artemis ~]# ls –ld /myfs

drwxrwxr-x 3 root root 4096 Oct 9 21:01 /myfs

[root@artemis ~]# cd /myfs

[root@artemis myfs]# touch acl_ornek

[root@artemis myfs]# chmod 770 acl_ornek

[root@artemis myfs]# ls –lrt

total 20

drwx------ 2 root root 16384 Sep 10 15:03 lost+found

-rwxrwx--- 1 root root 53 Oct 9 21:24 acl_ornek

 

 

/myfs Fs’ine sadece root kullanıcıs ve root grubunun okuma ve yazma hakkı oldu.

 

 

[root@artemis myfs]# echo “oku beni” >> acl_ornek

[root@artemis myfs]#

[root@artemis myfs]# cat acl_ornek

oku beni

 

 

Bu haliyle aşağıdaki snapshotda da gördüğünüz gibi sistemimizde yer alan cozumpark ve bilgipark kullanıcıları acl_ornek dosyasını doğal olarak bu haklarla okuyamıyorlar.Aşağıdaki snapshot’da da “Permisson Denied” hatası aldıklarını göreceksiniz.

 

 

 

image004

 

 

 

Acl_ornek dosyasında sadece bilgipark veya cozumpark kullanıcısına izin vermek istiyoruz. Başka kimseye de vermek istemiyoruz. Bu kullanıcılar başka ortak bir gruba ait olmadığı için

Chgrp komutunu da kullanamıyoruz, o zaman ne yapmamız gerek acl kullanmamız gerek. Senaryomuz bunu gerektiriyor.

 

 

[root@artemis myfs]# setfacl –m u:bilgipark:r /myfs/acl_ornek -- > bilgipark kullanıcına okuma hakkı verdik.

[root@artemis myfs]#

[root@artemis myfs]# getfacl /myfs/acl_ornek -- > verdiğimiz izini doğruladık-kontrol ettik.

getfacl: Removing leading ‘/’ from absolute path names

# file: myfs/acl_ornek

# owner: root

# group: root

user::rwx

user:bilgipark:r–

group::rwx

mask::rwx

other::---

[root@artemis myfs]# ls –l acl_ornek -- > eğer ACL kullanılıyorsa izinler kısmında artık “+ “ işaretini görürsünüz. Yani bu dosyada normal izinler yanında ACL de var demektir.

-rwxrwx---+ 1 root root 45 Oct 9 21:50 acl_ornek

 

 

Şimdi gördüğünüz gibi bilgipark kullanıcısı normalde acl_ornek dosyası üstünde ne user ne group ,ne de others’a ait okuma izni olmamasına rağmen ACL ile okuma hakkı elde etti.

Acl_ornek dosyasını okuyabildi.İşte ACL’nin normal Linux hakları yanında kullanıcıya sağladığı büyük esneklik budur.

 

 

 

image005

 

 

 

[bilgipark@artemis myfs]$ echo “something” >> acl_ornek -- > yazma hakkı olmadan içine bir şeyler yazmayı denedik ama hata aldık.

 

-bash: acl_ornek: Permission denied

 

[root@artemis myfs]# setfacl –m u:bilgipark:rw /myfs/acl_ornek à şimdi bilgipark kullanıcısına acl_ornek dosyası üstünde yazma hakkı da verdik.

[root@artemis myfs]#

[root@artemis myfs]#

[root@artemis myfs]# getfacl /myfs/acl_ornek -- > verdiğimiz izini doğruladık-kontrol ettik.

getfacl: Removing leading ‘/’ from absolute path names

# file: myfs/acl_ornek

# owner: root

# group: root

user::rwx

user:bilgipark:rw-

group::rwx

mask::rwx

other::---

 

 

[bilgipark@artemis myfs]$ echo “something” >> acl_ornek -- >az önce hata aldığımız denemeyi yazmaya ACL verdikten sonra baktık ve kullanıcı artık yazabiliyor.

[bilgipark@artemis myfs]$

[bilgipark@artemis myfs]$ cat acl_ornek -- > verdiğimiz izini doğruladık-kontrol ettik.

oku beni

something

 

 

[root@artemis myfs]# setfacl –m g:cozumpark:rw /myfs/acl_ornek -- > şimdi bu dosyaya cozumpark grubuna ACL tanımladık.Böylece cozumpark kullanıcısı rw hakkına sahip olacak.

[root@artemis myfs]#

[root@artemis myfs]#

[root@artemis myfs]# getfacl /myfs/acl_ornek -- > verdiğimiz izini doğruladık-kontrol ettik.

getfacl: Removing leading ‘/’ from absolute path names

# file: myfs/acl_ornek

# owner: root

# group: root

user::rwx

user:bilgipark:rw-

group::rwx

group:cozumpark:rw-

mask::rwx

other::---

 

 

Burada da cozumpark kullanıcısının grubundan dolayı, bilgipark kullanıcısının ise kendi isminden dolayı aldığı ACL’leleri uygulayabildiğini görüyoruz.

 

 

 

image006

 

 

 

[root@artemis myfs]# setfacl –x u:bilgipark /myfs/acl_ornek -- > Eğer bir kullanıcının bütün haklarını almak istiyorsak –x ile beraber koşuyoruz setfacl komutunu.

[root@artemis myfs]#

[root@artemis myfs]# getfacl /myfs/acl_ornek -- > Aldığımız izini doğruladık-kontrol ettik.

getfacl: Removing leading ‘/’ from absolute path names

# file: myfs/acl_ornek

# owner: root

# group: root

user::rwx

group::rwx

group:cozumpark:rw-

mask::rwx

other::---

 

 

[bilgipark@artemis myfs]$ cat acl_ornek -- > Aldığımız izini doğruladık-kontrol ettik.

cat: acl_ornek: Permission denied

 

 

Eğer bütün ACL bilgilerini yok etmek ve kullanmak isteMIyorsanız –remove-all seçeneği ile o dosya üstünde tekrar normal Linux izin ve sahiplik seviyesine inebilirsiniz.

 

 

[root@artemis myfs]# setfacl –remove-all /myfs/acl_ornek

[root@artemis myfs]#

[root@artemis myfs]#

[root@artemis myfs]# getfacl /myfs/acl_ornek

getfacl: Removing leading ‘/’ from absolute path names

# file: myfs/acl_ornek

# owner: root

# group: root

user::rwx

group::rwx

other::---

 

[root@artemis myfs]#

[root@artemis myfs]# ls –l acl_ornek -- > Gördüğünüz gibi “+” işareti de normal izinlerin yanından gitmiş oluyor.

-rwxrwx--- 1 root root 45 Oct 9 21:50 acl_ornek

 

Bir makalenin daha sonuna geldik, umarım faydalı bir makale olmuştur. Bir sonraki makalemizde görüşmek üzere

 


Linux Sistemlerde Kullanıcı ve Grup Disk Kotaları – Bölüm 8

$
0
0

Sistemdeki disk alanlarını kolayca yönetmek ve kısıtlı bölgeler,projeler,işler için bölümlenmiş alanlarda kullanıcılara ve gruplara belirli yerler verebilmek için disk kotalarını kullanırız. Böylece sistemi yöneten kişi disk üstündeki bölümlendirmeleri ve FS’leri tam dolmadan öğrenebileceği gibi kullanıcıyı da bu konudan haberdar ederek sınırlamalara dikkatini çeker.


Kotayı kullanıcı ve grup hesapları üstünde genel disk kullanımı bazında ayarlayabiliriz. quota RPM paketinin sistemde yüklü olması gerekir. quota paketinin sistemimizde yüklü olup olmadığını şu şekilde kontrol edebiliriz.

 

[root@artemis ~]# rpm -qa|grep quota

quota-3.13-5.el5

[root@artemis ~]#

 


Ardından bir File System(FS) üstünde kota işlemlerini uygulamamız için şu adımları izlememiz gerekli;

 

 

1.       /etc/fstab dosyasını editleyerek Kota kullanacağımız FS parçasında usrquota ve grpquota ifadelerini eklememiz gerekiyor. (ACL’de eklediğimiz gibi 4. Kolona ekliyoruz bu ifadeleri.)
  1. File System’i tekrar mount etmemiz gerekiyor (remount). Umount/mount FS_ismi veya mount –o remount FS_ismi
  2. Kota database’i oluşturup disk kullanım tablosunu çıkartmamız gerekiyor. quotacheck –cug FS_ismi, quotacheck -avug
  3. Kota kurallarını (policy) sisteme eklememiz gerekiyor. Kullanıcıya kota uygulayacaksak Edquota –u kullanıcı_ismi, Gruba kota uygulayacaksak Edquota –u grup_ismi
  4. quotaon [FS_ismi]– FS üstünde kotayı aktif hale getirmemiz gerekiyor.
    (quotaoff [FS_ismi]- FS üstünde kotayı pasif hale getirmek isterseniz.)

 

Vi editöründe /etc/fstab dosyasını açarak yine elimizde bulunan boş /myfs’i kota işlemlerinde kullanacağımız için ,onun bulunduğu satırı aşağıdaki şekilde düzelttik.

 

[root@artemis ~]# cat /etc/fstab

/dev/VolGroup00/LogVol00 /                       ext3    defaults        1 1

LABEL=/boot             /boot                   ext3    defaults        1 2

tmpfs                   /dev/shm                tmpfs   defaults        0 0

devpts                  /dev/pts                devpts  gid=5,mode=620  0 0

sysfs                   /sys                    sysfs   defaults        0 0

proc                    /proc                   proc    defaults        0 0

/dev/VolGroup00/LogVol01 swap                    swap    defaults        0 0

/dev/sdb5 swap swap defaults 0 0

/dev/sdb1 /myfs ext3 defaults,usrquota,grpquota 0 0

[root@artemis ~]#

 

 

/myfs File Sistemi üzerinde fstab dosyasına eklediğimiz değişikliklerin etkili olabilmesi için sistemden /myfs FS’ini umount edip tekrar mount etmemiz gerekiyor.

Bunu iki türlü yolla yapabiliriz. İstersek umount,mount komutlarını arka arkaya ya da sadece mount komutunu –remount seçeneği ile koşarak halledebiliriz.

 

 

//*********** birinci yol**************//

[root@artemis ~]#

[root@artemis ~]# umount /myfs

[root@artemis ~]# mount /myfs

[root@artemis ~]#

//*********** ikinci yol**************//

[root@artemis ~]# mount -o remount /myfs

 

Şimdi FS’ imizi sistemde kota için kullanacağımız hale getirmiş olduk ama birde bunu açıkça sistemin kendisine iletmemiz gerekiyor.Bunun için kota uygulayacağımız FS üstünde
Kota database’i oluşturmamız gerekiyor.  Bunun için quotacheck komutunu kullanacağız.

 

UYARI-1!: quotacheck komutu kullanılan(mounted halde ve kullanıcılar veya  uygulamalar tarafından üstünden işlem yapılan FS’ler) bir Fs üstünde koşmanızı resmiyette Redhat firması tavsiye etmiyor. Onun için kota oluşturmayı düşündüğünüz FS’i hemen oluşturduktan sonra,kullanılmaya başlamadan önce kota bilgilerini eklerseniz sizin için daha iyi olur. Eğer illaki mounted ve kullanılan Fs üstünde bu komutu çalıştırmak istiyorsak şu adımları izleyiniz.

 

quotaoff /fs_ismi
mount –o ro,remount /fs_ismi
quotacheck –options /fs_simi

 

 

Seçenekler

Açıklama

-c

Var olan kota dosyalarını okuma,yeni bir işlem varsa disk üstüne kaydet yani Kota hesabı aktif hale getirilmek istenen FS üstünde kota bilgilerini tutan dosyaları oluştur demek.

-u

Kullanıcı kotalarını tutan aquota.user dosyasını oluştur.

-g

Grup kotalarını tutan aquota.group dosyasını oluştur.

-v

Verbose mode,kullanıcıya ne olup bittiğini bilgisini göster.

-d

Debugging Mode, eğer bir şeyler ters gidiyorsa –d seçeneği ile daha detaylı olup bitene bakabilirsiniz.

-i

Interaktif mod.

 

 

Dolayısıyla ilk başta bu komutu –cug diye bütün seçenekleriyle koşmamız gerekiyor.

 

[root@artemis ~]# quotacheck -cug /myfs -- > /myfs için kota dosyalarını oluşturmuş olduk.

[root@artemis ~]#

[root@artemis ~]#

[root@artemis ~]# ls -al /myfs   -- > gördüğünüz gibi /myfs altında kota bilgilerini tutacak aquota.user ve aquota.group dosyaları oluştu.

total 48

drwxrwxr-x  3 root yonetici  4096 Oct 10 00:22 .

drwxr-xr-x 24 root root      4096 Oct  9 16:38 ..

-rwxrwx---  1 root root        45 Oct  9 21:50 acl_ornek

-rw-------  1 root root      7168 Oct 10 00:22 aquota.group

-rw-------  1 root root      6144 Oct 10 00:22 aquota.user

drwx------  2 root root     16384 Sep 10 15:03 lost+found

 

 

[root@artemis ~]# quotacheck –avug  -- > FS’i kota için kullanmaya başlamadan öncede komple kontrol yaptırıyoruz.

quotacheck: Scanning /dev/sdb1 [/myfs] done

quotacheck: Checked 3 directories and 5 files

 

 

edquota ; Şimdi de kullanıcı veya gruba kota ekleme kısmına geldik. Bunun içinde edquota komutunu kullanacağız.edquota komutuna –u seçeneği ile user bilgisini vereceğiz ve karşımıza bir text editör çıkacak. Bu text editörde değerleri değiştireceğiz.

[root@artemis ~]# edquota –u bilgipark  -- > bilgipark kullanıcısına kota ekleyeceğiz,karşımıza text editor gelecek, vi gibi kullanarak bilgileri giriyoruz.

Disk quotas for user bilgipark (uid 501):

  Filesystem                   blocks       soft       hard     inodes     soft     hard

  /dev/sdb1                         0             0              0          0                 0        0

 

~

Bilgileri girerken bu tabloyu gözden geçirebilirsiniz. Nereye ne girmeniz gerektiği bilgisi yer alıyor.

 

 

Filesystem

Blocks

inodes

Soft Limit

Hard Limit

Kota uygulanan FS

Kullanıcının şu an kullandığı 1K boyutlu block sayısı. 100 blocks demek 100K demek aslında.Not: Bu değerleri değiştirmeyin. Bunlar size referans olarak gösterilen şu anki değerlerdir.

Kullanıcıya ait olan inodes sayısı. Not: Bu değerleri değiştirmeyin. Bunlar size referans olarak gösterilen şu anki değerlerdir.

Soft Limit maksimum kullanılabilecek değeri ifade eder. Ama bu değer aşılabilir. Belli bir uyarı verilir.Grace period denilen uyarı periyoduna sahiptir.Grace period da biterse kullanıcının erişimi yasaklanır.

Kullanıcının kesinlikle aşamayacağı sınırdır. Kullanıcı hiçbir şekilde bu limitin ötesine geçemez.

 

 

Editörde soft limit için 100,hard limit için 150 girdik. Yani /myfs altında bilgipark kullanıcısı 100K alan kullanırsa soft limite gelecek.150K’dan sonrasını kesinlikle kullanamayacak.

 

//***********root kullanıcısının shell’i********************************//

[root@artemis myfs]# edquota -u bilgipark   -- > editör gelecek ve aşağıdaki değerleri gireceğiz.

 Disk quotas for user bilgipark (uid 501):

  Filesystem                   blocks       soft       hard     inodes     soft     hard

  /dev/sdb1                       0               100        150          1        0        0

~
~
[root@artemis myfs]# quotaon –avug  -- > kota uygulamasını aktif hale getirdik

 

//***********paralelde bilgipark kullanıcısının shell’i********************************//

[bilgipark@artemis myfs]$ dd if=/dev/zero of=/myfs/kota_ornek bs=100K count=1   -- > şimdi dd komutu yardımıyla dummy bir dosya oluşturuyoruz 100k’lık.ve soft limite eriştiğimiz için uyarı alıyoruz.

sdb1: warning, user block quota exceeded.

1+0 records in

1+0 records out

102400 bytes (102 kB) copied, 0.00055392 seconds, 185 MB/s

[bilgipark@artemis myfs]$

[bilgipark@artemis myfs]$

[bilgipark@artemis myfs]$ ls -lrht

total 140K

drwx------ 2 root      bilgipark  16K Sep 10 15:03 lost+found

-rwxrwx--- 1 root      bilgipark   45 Oct  9 21:50 acl_ornek

-rw------- 1 root      root      7.0K Oct 10 01:03 aquota.group

-rw------- 1 root      root      7.0K Oct 10 01:11 aquota.user

-rw-rw-r-- 1 bilgipark bilgipark 100K Oct 10 01:11 kota_ornek

 

 

[root@artemis myfs]# quota bilgipark  -- > soft limit erişimi sonrası bilgipark kullanıcısının kota bilgilerini kontrol ediyoruz.

Disk quotas for user bilgipark (uid 501):

     Filesystem  blocks   quota   limit   grace   files   quota   limit   grace

      /dev/sdb1     104*    100     150   6days       1       0       0       

 

 

[bilgipark@artemis myfs]$ dd if=/dev/zero of=/myfs/kota_ornek bs=150K count=1  şimdi  de dd komutu yardımıyla soft limiti geçip hard limite yanaşacak bir dummy dosya oluşturuyoruz.

sdb1: warning, user block quota exceeded.   -- > 100K civarında soft limiti geçtik ve bu uyarıyı aldık

sdb1: write failed, user block limit reached. -- > 150K civarında ise hard limite yaklaşınca yazma işi hata aldı ve kesti.

dd: writing `/myfs/kota_ornek': Disk quota exceeded

1+0 records in

0+0 records out

147456 bytes (147 kB) copied, 0.00204268 seconds, 72.2 MB/s

 

 

[root@artemis myfs]# quota bilgipark -- > soft limit erişimi sonrası bilgipark kullanıcısının kota bilgilerini kontrol ediyoruz.

 

 

Disk quotas for user bilgipark (uid 501):

     Filesystem  blocks   quota   limit   grace   files   quota   limit   grace

      /dev/sdb1     148*    100     150   7days       1       0       0       

[root@artemis myfs]#

 

 

Gruplara kota uygulamak; Eğer bir grup adına kota uygulaması yapmak istiyorsak edquota komutunu –g seçeneği ile koşmamız gerekiyor.

 

Mesela yonetici grubuna kota uygulayacaksak edquota –g yonetici denilip gelen text editörde değerleri girmemiz yeterli.

 

Kullanıcı kotaları ile aynı olduğu için örnek vermiyoruz.

 

 

Grace Period ve edquota –t komutu; Diskte Blocks alanında veya Inode sayısında Soft Limit aşılırsa o soft limit aşımına ne kadar süreyle izin verileceğini belirtmek için kullanılır.Kullanıcı soft limiti aştıktan sonra grace period işlemeye başlar.Eğer kullanıcı kendi limitlerine yani soft limitin altına düşmezse belirtilen gün sonunda erişimi yasaklanır. Bu grace periyodu hem block alanı hem inode sayısı için ortaktır ve “edquouta –t “ komutu ile editlenir.değerler seconds, minutes, hours, days, weeks, months cinsinden olabilir,sayı ile birimler bitişik gösterilmelidir. 7 gün grace periyodu “7days” şeklinde olmalıdır.

 

 

[root@artemis myfs]# edquota –t

 

 

Grace period before enforcing soft limits for users:

Time units may be: days, hours, minutes, or seconds

  Filesystem             Block grace period     Inode grace period

  /dev/sdb1                     7days                  7days

~

~

~

 

 

Kotaların aktif ve pasif hale getirilmesi; quoutaon ve quoutaoff komutları sırasıyla sistem üstündeki belirlenen FS’teki kotaları aktif ve pasif hale getirmek için kullanılır.

 

 
Sistemdeki bütün kota uygulanan FS’lerdeki(a) kullanıcı(u) ve grup(g) kotalarını PASIF hale çekmek için;
 
quotaoff –vaug 
 
Sistemdeki bütün kota uygulanan FS’lerdeki(a) kullanıcı(u) ve grup(g) kotalarını AKTIF hale çekmek için;
 
quotaon –vaug
 
Sistemdeki sadece /home FS’ine uygulana kullanıcı(u) ve grup(g) kotalarını pasif hale çekmek için;
 
quotaon -vug /home
 

 

[root@artemis ~]# quotaon -avug

/dev/sdb1 [/myfs]: group quotas turned on

/dev/sdb1 [/myfs]: user quotas turned on

[root@artemis ~]#

[root@artemis ~]#

[root@artemis ~]# quotaoff -avug

/dev/sdb1 [/myfs]: group quotas turned off

/dev/sdb1 [/myfs]: user quotas turned off

 

 

Kota durumunu görmek; Genel olarak sistemde var olan kotaları ve kotaların son durumlarını görmek istiyorsak repquouta komutunu kullanacağız.

 

Kota uygulanan bütün FS’leri görmek için  repquouta –a ,sadece belirli bir FS’i görmek için repquouta FS_ismi

 

 

[root@artemis ~]# repquota -a

*** Report for user quotas on device /dev/sdb1

Block grace time: 7days; Inode grace time: 7days

                        Block limits                File limits

User            used    soft    hard  grace    used  soft  hard  grace

----------------------------------------------------------------------

root      --   17696       0       0              5     0     0      

bilgipark +-     148     100     150  6days       1     0     0      

 

 

Bu çıktıda isimden sonra iki – işaretini göreceksiniz,bu çizgiler eğer + ise soft limitin aşıldığını gösterir. İlk çizgi blocks için olan soft limiti,ikinci çizgi ise inode için olan soft limitin aşıldığını gösterir.

 

 

Bir makalenin daha sonuna geldik, umarım faydalı bir makale olmuştur. Bir sonraki makalemizde görüşmek üzere

Disk management in FreeBSD 9.0

$
0
0

Ocak 2012′de çıkan FreeBSD’yi yeni inceleme fırsatı bulabildim. FreeBSD unixler içinde, Unixlerin babası şeklinde tabir edilebilecek kadar sağlam ve stabil işletim sistemlerinden biridir. Bildiğiniz üzere MacOS’ta FreeBSD kernelini kullanmaktadır. Versiyon 9 ile bir sürü yeni ilaveler yapılan FreeBSD işletim sistemi daha güzel kurulum arayüzleri ile karşıma çıktı. Kurulum adımlarında yapılması gereken işlemleri gözle görülür seviyede azaltmışlar. Program kulumu zaten iyi denilecek seviyedeydi dahada iyi hale getirmişler. Sistemin update işlemleri çok basit ve dahada güzelleştirilmiş. J


Bugün sizlerle paylaşmak istediğim konu FreeBSD içindeki en meşakkatli konulardan biri. Disk Yönetimi. Disk ilavesi, partition yapılandırma, mount işlemleri. Windows’ta birkaç tık ile yaptığımız işlemlerin FreeBSD tarafında kolaylıkla yapılmasını anlatmayı hedefliyorum. Özellikle varolan partition’ları silmek için gerekli komutları burada paylaşmıyorum. Çünkü istenmeyen bir diski silerek sisteme zarar verilme ihtimali mevcut.

 

Konuyu 4 başlıkta toparlamak gerekirse,

 

1- Diskin device olarak görüntülenmesi
2- Partition oluşturma
3- Mount etme
4- Otomatik mount ile sistem açılışında diskin tanınması

 

Benim seneryomde FreeBSD kurulu olan Squid Proxy sunucunuzun üzerine 20GB’lık ikinci diskin montajını yaptık. Varolan disk ve partitionlarımızı incelediğimizde hangi disklere sahibiz onları görebileceğiz. Daha sonra yeni gelen diski inceleyeceğiz. Ilk olarak aşağıdaki komutu veriyoruz,

 

bpoyraz# gpart show

 

 

image001

 

 

Gelen ekran yukarıdaki şekilde olacaktır. Zaten tek disk olduğundan da0 olarak görebiliyoruz. Yeni diski ise FreeBSD’nin fiziksel olarak hangi Device olarak gördüğünü anlamak için aşağıdaki komutu veriyoruz.

 

bpoyraz# Dmesg | grep da

 

Karşımıza gelen ekran şu olacaktır,

 

 

image002

 

 

Bu ekrandaki da1 yeni diskimiz. FreeBSD’de diskler da* ile başlamaktadır. Bu da sonrası diskin sıra numarası ile devam eder. Diskimizi sorunsuz görebiliyorsak, artık volume oluşturabiliriz demektir. Hemen bir volume oluşturalım. Tüm diski bir volume yapabilirsiniz. Volume’ler üzerine partition oluşturarak devam edeceğiz. Volume oluşturmak için gerekli komutu verelim, Ben tek volume oluşturacağım.

 

bpoyraz# gpart create –s gpt da1

 

 

image003

 

 

Volume oluşturuldu, Şimdi disk durumumuzu görelim,

 

bpoyraz# gpart show

 

 

image004

 

 

Görüldüğü üzere ikinci => satırında da1 device kodu ile 20GB’lık bir drive mevcut. Bu device üzerine partition oluşturup mount ederek kullanmaya başlayabiliriz. Farkettiyseniz disk GPT olarak tanınmış. GPT ile MBR farkını http://www.bilgehanpoyraz.com/?p=1048 linkinden öğrenebilirsiniz.

 

Şimdi Disk Partition oluşturme işine başlayalım. Diyelimki 10GB’lık 2 partition tanımlayacağız. İlk 10GB için aşağıdaki komutu veriyoruz,

 

bpoyraz# Gpart add –s 10G –t freebsd-ufs da1

 

 

image005

 

 

Bu komut da1 diski üzerine da1p1 isimli ilk partition’u oluşturdu. İsteğimiz üzere bu partition 10GB oldu. Şimdi kalan 10GB’lık alana bir partition daha oluşturalım. Kalan alan 10GB olduğu için boyut vermeye gerek kalmıyor. Ayrıca boyut vermeden tüm diski kullanmak isterseniz bu komut ile yapabilirsiniz.

 

bpoyraz# gpart add -t freebsd-ufs da1

 



image006

 

 

Kalan alanada da1p2 isimli yeni bir partition açmış olduk. 2 adet 10GB’lık, toplamda 20GB alanımız oldu. Görelim,

 

bpoyraz# gpart show

 


image007

 

 

Artık bu partitionları formatlayarak kullanabiliriz. Fomatlamak için öncelikle yeni partitionların device isimlerini kullanacağız. Yeniden görmek isterseniz aşağıdaki gibi görebilirsiniz,

 

bpoyraz# ls -al /dev/d*

 

 

image008

 

 

 

da1 diski üzerindeki p1 ve p2 bizim yeni partitionlarımız. Şimdi bu partitionları file sistem olarak formatlamak için aşağıdaki komutu veriyoruz,

 

bpoyraz# newfs /dev/da1p1

 



image009

 

 

aynı işlemi diğer partition içinde yapıyoruz,

 

bpoyraz# newfs /dev/da1p2

 

Artık 2 adet formatlanmış file sistemimiz var. Bu sistemleri Mount etmeden kullanmamız haliyle mümkün değil. Aslında durum Windows sistemlerde de böyle. Harf atama işi Windows sistemlerde Mount etme işidir. Unix karşılığı budur. Artık mount diskleri ederek kullanabiliriz. Ben Mount işlemini / lokasyonuna iki adet klasör açarak bu klasörler altına bağlamayı uygun gördüm. Ama gereksinimle doğrultusunda istenilen klasör altına bağlayabilirsiniz.

 

bpoyraz# mkdir -p /part1
bpoyraz#
mkdir -p /part2

 

 

image010

 

 

Klasörler hazır. Mount komutunu veriyoruz,

 

bpoyraz# mount /dev/da1p1 /part1
bpoyraz# mount /dev/da1p2 /part2

 

 

image011

 

 

şimdi cd /part1 yada cd /part2 diyerek ulaştığınız alanlar yeni partition’lar olacaktır. Bu partitionlar sunucuyu yeniden başlattığınızda maalesef kaybolacaktır. Kaybolmamaları için bir işlem daha yapmak gerekiyor. Bunu şu şekilde yapabiliriz,

 

Bu iş için ee isimli editoru kullanabilirsiniz. VI’dan daha insancıl bu editor sizinde çok hoşunuza gidecektir. /etc/fstab dosyasını açalım ve aşağıdaki iki satırı ilave edelim,

 

bpoyraz# ee /etc/fstab

 

/dev/da1p1     /part1              ufs       rw        1 1
/dev/da1p2     /part2              ufs       rw        1 1

 

 

image012

 

 

Yeni mount Drive’ları ve eski diskleri aşağıdaki komut ile görebilirsiniz.

 

bpoyraz# Df –H

 

 

image013

 

 

Bu komut sonrasında sisteme tanımlı tüm diskleri görebilirsiniz. Bu işlem ile disk işlemlerini bitirmiş oluyoruz. Daha öncede belirttiğim gibi. Disk silme işini sizlerle paylaşmıyorum. Eğer bu konuda uzman değilseniz çalışmakta olan sisteme zarar verebilirsiniz.

 

Kolay gelsin.

 

RedHat Linux Türevlerinde Disk Yönetimi

$
0
0

Geçen makalemizde FreeBSD üzerinde disk yönertiminden bahsetmiştik. Detaylı disk yönetimini 4 temel başlıkta toplamıştık. Aynı şekilde Linux için neler yapabiliriz bu kezde bunu inceleyelim. Öncelikle işlemleri yine 4 ana başlıkta toplayalım.

Bir önceki makale için aşağıdaki linki kullanabilirsiniz.

 

Disk management in FreeBSD 9.

 

1-      Disk tanıtımı

2-      Partition işlemleri

3-      Mount işlemleri

4-      Bilgisayar açılışında automount işlemi

 

Öncelikle varolan disklerimi ve partition’larımızı inceleyelim. Bunun için aşağıdaki komutu kullanabilirsiniz,

 

[root@bpoyraz ~]# cat /proc/partitions

 

Ekran çıktısı  aşağıdaki gibi olacaktır. Burada şu anda kullanılmakta olan diskleri görebilirsiniz.

 

 

image001

 

 

Burada görmüş olduğunuz sda bizim diskimizin üzerindeki volume oluyor. sda1 ve sda2 ise üzerinde bulunan partitionlar. Disk sıralamasında 4ncü sırada bulunan sdb ise yeni sürücümüz. Henüz üzerinde partition bulunmadığı için sadece sdb olarak görünüyor. Birazdan sdb1 ve sdb2 olarak iki partition ataması yapacağız. Bunun için parted programını kullanacağız. Aşağıdaki gibi disk device’I belirterek çalıştırıyoruz,

 

[root@bpoyraz ~]# parted /dev/sdb

 

Parted programını çalıştırdığımızda aşağıdaki ekran ile karşılaşıyoruz. Çok basit ve güzel bir program. Oldukça yetenekli. Bence gelecekte tüm disk işlemlerinde bu program kullanılacak.

 

 

image002

 

 

Help yazıp Enter tuşuna bastığımızda program ile ilgili deyatlı help menüsü size yardımcı olacaktır. Biz “p” tuşuna basarak mevcut duruma bir bakalım,

 

 

image003

 

 

Gördüğünüz gibi büyük kare içinde disk bilgisi mevcut. Küçük kare içinde ise partition türü mevcut. msdos tipi MBR anlamına geliyor aslında. Eğer 2TB üzeri bir partition tanımlayacaksanız, türü GPT olarak değiştirmeniz lazım. Bunun için şu komutu vermemiz gerekiyor,

 

(parted) mklabel gpt

 

 

image004

 

 

Sorulan sorulara “yes” ile cevap verirseniz disk türü GPT olarak değişecektir. Şimdi partition tanımlayabiliriz. Bunun içinde şu komut ile devam ediyoruz,

 

(parted) mkpart primary 1 10G

 

Bu komut ile yapmak istediğimiz işlem, bu disk üzerine 10GB boyutunda primary bir partition oluşturmak.

 

 

image005

 

 

Gördüğünüz gibi 1 adet 10GB’lık partition’umuz oluştu. Şimdi geriye kalan 10GB’lık alan içinde bir partition oluşturalım, bunun için şu komutu veriyoruz,

 

(parted) mkpart primary ext4 10GB -1

 

Bu komut ile 2nci partition’u oluşturmuş olduk. Görelim,

 

 

image006

 

 

Diyelimki diski tek partition yapmak istiyorsunuz. Tüm diski tek parça görmek istiyorsunuz. O zaman şu komutu kullanmanız gerekiyor,

 

(parted) mkpart primary ext4 1 -1

 

Sonucunu görmek isterseniz,

 

 

image007

 

 

İşte tüm disk tek partition oldu.

 

Partition işlemlerini tamamladık. Şimdi file sistem formatlama işlemlerine geçelim. Bu işlem içinde komut olarak şunu veriyoruz,

 

[root@bpoyraz ~]# mkfs -t ext4 /dev/sdb1

 

 

image008

 

 

Aynı işlemi ikinci partition içinde yapıyoruz. Komutu ise,

 

[root@bpoyraz ~]# mkfs -t ext4 /dev/sdb1

 

Şeklinde olmalıdır. Partition işlemlerimiz bitti. Şimdi bu partitionları bir klasör altına bağlamamız gerekiyor. Yani Windows tarafındaki karşılığı harf ataması yapmamız lazım. Bunun için hemen gerekeni yapalım,

 

[root@bpoyraz ~]# mount /dev/sdb1 /part1
[root@bpoyraz ~]#
mount /dev/sdb1 /part1

 

Komutlarını veriyoruz. Bu işlemler sonunda istenilen uygulamalara lokasyon olarak vererek kullanılmasını sağlayabiliriz. Ancak bu mount işlemini sistem restart edildiğinde yeniden yapmak gerekecektir. O yüzden bu işin açılışta otomatik olarak yapılmasını istiyorsak nano isimli editor ile /etc/fstab dosyası içine yazmak gerekir. Bunu işlemi aşağıdaki screenshot’ta görebilirsiniz.

 

[root@bpoyraz ~]# nano /etc/fstab

 

 

image009

 

 

Yada CLI’dan şu komut ile da yapabilirsiniz.

 

echo "/dev/sdb1               /part1                  ext4    defaults        1 1" >> /etc/fstab
echo "/dev/sdb2               /part2                  ext4    defaults        1 1" >> /etc/fstab

 

bu işlem sonrasında partition işlemlerimiz ermiş oluyor.  Artık uygulamalarınız storage üzerinde bulunması gereken alanları kullanabilecek, performans ve güvenlik anlamında uygulamalarınıza katkı sağlayacaklardır.

 

 

Kolay gelsin.

RedHat Cluster R6.2 Bölüm - 1

$
0
0

 

İş sürekliliğinin uygulama bazında üst düzey önem kazandığı günümüzde, artık kesintisizlik kurumlar için “olmazsa olmaz” hale gelmiştir. Uygulamaların önem sıralaması her geçen gün değişen bu listede, öncelik Database uygulamaları, ERP iş uygulamaları, Email sistemleri, e-ticaret siteleri ve Bankacılık sistemleri olarak karşımıza çıkmaktadır. Günümüzde sistemleri incelediğimizde ise en yaygın olarak kullanılan iş sürekliliği çözümü olarak, “Cluster” sistemler çıkmaktadır. Cluster sistemleri ise oldukça geniş bir kapsamda incelenebilmektedir. İş sürekliliği çözümlerini daha önce yazmış olduğum http://www.bilgehanpoyraz.com/?p=100 linkinden detaylı olarak inceleyebilirsiniz.

 

Bugün sizlere bahsetmek istediğim Cluster çözümü “RedHat Linux Cluster” çözümüdür. Şimdiye kadar Bu konuda Türkçe bir dokümana rastlamadım. İnşallah ilk yazan ben oluyorumdur. Cluster kurulumu sonrasında FileServer’ ımı bu cluster üzerinde HA şekilde kullanmayı planlıyorum. Hadi başlayalım…

 

Bölüm 1: Node’ ların hazırlanması

 

İşlemlere öncelikle RedHat Linux kurulumu ile başlayacağız. Şu anda en son sürüm olan RedHat EL6.2 sürümüdür. İlk adım olarak RedHat Linux’u www.redhat.com adresinden register olarak indiriyoruz.

 

Sonrasında bir DVD’ye bu imajı yazarak sunucuyu boot ediyoruz. İlk olarak karşımıza aşağıdaki ekran gelecektir.

 

 

image001

 

 

Ne yapmak istediğimizi soruyor. Enter ile devam ediyoruz aşağıdaki ekran gelecektir.

 

 

image002

 

 

İndirdiğimiz DVD’nin herhangi bir bozukluğunun olup olmadığını incelemek ve sonrasında kuruluma geçmek istiyor. İşlem biraz uzun sürebilir. Skip diyerek geçebilirsiniz.

 

 

image003

 

 

Sonrasında şık bir karşılama ekranı çıkıyor. Herhangi bir soru yok. Next diyerek devam ediyoruz.

 

 

image004

 

 

Linux’u hangi dil ile kullanmak istediğimizi soruyor. Gnome ara yüzü Install edildiğinde Türkçe seçilebilir. Ara yüz tamamen Türkçeye dönmektedir. Fakat biz İngilizce ara yüz kullanacağımızdan English seçili olarak devam ediyoruz.

 

 

image005

 

 

Burada klavye için dil seçenekleri görülüyor. Ben klavyede Türkçe seçeneği ile devam edeceğim. Alışık olduğum tuş lokasyonlarını değiştirmek istemiyorum.

 

 

image006

 

 

Sunucu üzerindeki disk planlama ekranına geldik. Eğer storage üzerinden boot alanı kullanmak istiyorsanız buradan değiştirebilirsiniz. Ama local diskler kullanılacaksa zaten arka planda Raid yapısı mevcuttur. Dolayısı ile basic storage olarak devam ediyoruz.

 

 

image007

 

 

Seçilen storage üzerinde data varsa kaybolacak uyarısı geliyor. Tamamen silinecek ve geri gelmeyecektir. Benim diskim zaten boş ve temiz olduğundan “Yes, discard any data” diyerek devam ediyorum.

 

 

image008

 

 

Domain ismini techtalk.intra olarak kullandım. Uzun yıllardır kullandığım bir internal domain ismi. Avusturyalı bir arkadaş ile birlikte eğitimler esnasında kullanıyorduk. Sunucu adını ise node1 için rhel6n01 verdim. Aynı kurulumu rhel6n02 olarak ikinci sunucu içinde yapacağım. Next diyerek devam edelim.

 

 

image009

 

 

Bölge seçeneğinde Europe/Istanbul olarak vererek devam ediyorum.

 

 

image010

 

 

Root account’u için password’ümüzü verelim ve devam edelim.

 

 

image011

 

 

Bu kısımdaki seçeneklerde disk yapılandırmasını görüyoruz. Biz boş bir disk kullandığımız için tüm diski kullanabiliriz. Use All Space diyip devam ediyoruz, bu aşamada eğer disk üzerinde başka bir sistem yada kullandığı partition varsa geri gelemez şekilde silinecektir.

 

 

image012

 

 

Diskinizi geri getirilemez şekilde sıfırlayıp kullanacağım, emin misiniz diye soruyor. “Write changes to disk” diyelim.

 

 

image013

 

 

Bu aşamada kurulacak Linux’u özelleştirebilir istediğiniz paketleri kurarak istemediklerinizi çıkartabilirsiniz. Ben gerektiğinde desktop ara yüzünü kullanmak için Desktop seçeneğini seçip sonrasında aşağıdaki seçeneklerden de “High Availability” seçeneğini işaretleyerek devam ediyorum. Next diyoruz.

 

 

image014

 

 

Ve kurulum başlıyor. RedHat, kurulum ekranlarını oldukça basitleştirmiş, soft renklerle bezemiş görselliği çok güzel kurulum ekranları hazırlamış. Anlaşılır ve basit İngilizce ile hazırlanmış kurulum ekranları insanı hiç strese sokmadan işlemleri bitirmemizi sağlıyor. Kurulum tamamlandığında reboot gerektirecektir.

 

 

image015

 

 

Reboot ettikten sonra ilk node’un kurulumu tamamlanmış demektir.

 

 

image016

 

 

Artık 2nci node’u kurabiliriz. 2nci Node’u kurarken yukarıdaki adımlarda olduğu gibi gerçekleştireceğiz. Sadece hostname’i değiştirerek kuracağız. 2nci sunucuyu kurduktan sonra cluster konfigürasyon işine gireceğiz.

Görüşmek üzere...

RedHat Cluster R6.2 Bölüm - 2

$
0
0

 

Birinci bölümde Cluster node’larının nasıl kurulduğu ve kurulurken izlenmesi gereken adımların nasıl tamamlanacağını anlatmıştık. Bu bölümde ise Cluster yapılandırma işlemini anlatmaya çalışacağım.

 

Benim kurguladığım yapıyı genel anlamda anlatmak gerekirse, şöyle izah edebilirim. Öncelikle sistemlerin tamamı sanal. Bu sistemler 2 adet RedHat EL 6.2, 1 adet OpenFiler storage sunucu, 1 adet Windows 2008R2 DC olarak görülmektedir. OpenFiler ve RedHat sunucuları iSCSI interface üzerinden birbirine bağladım. Bu bağlantı ile blok bazlı 1 adet quarum, 1 adette data alanı verdim. Her iki RedHat Linux sunucu da bu alanları görerek mount etmiş durumdalar.

 

 

image001

 

 

RedHat version 6’dan sonra system-config-cluster ara yüzünü iptal etmiş bulunuyor. Daha kullanışlı bir web ara yüzü devreye alınmış. Kurulum uzun ve zahmetli ama gerçekten sorunsuz çalışan bir cluster yapısı ile karşılaşıyorsunuz.

 

Ön hazırlıklar

 

Normal şartlarda kurulum için birçok paket yüklemek gerekiyor. Ama node’ların kurulumunu 1nci bölümde anlattığım gibi yaptıysanız sadece 2 adet paket Install ederek bu aşamayı atlatabilirsiniz. Şimdi RedHat DVD’sini mount edelim. Sonrasında aşağıdaki komutu verelim. DVD mount edildikten sonra aşağıdaki klasöre geçiyoruz.

 

 

# mount /dev/scd0 /media/
# cd /media/Packages/

 

Bu lokasyonda aşağıdaki komutları veriyoruz ve Install ediyoruz.

 

# rpm -ivh lvm2-cluster-2.02.87-6.el6.x86_64.rpm
# rpm -ivh gfs2-utils-3.0.12.1-23.el6.x86_64.rpm

 

Paketler aşağıdaki gibi yükleneceklerdir.

 

 

image002

 

 

Şimdi aşağıdaki komutları uyguluyoruz. Bu komutlar RedHat Cluster’da istenmeyen servisleri Disabled eder ve çalışması gereken servisleride otomatik olarak enable eder.

 

# chkconfig iptables off
# chkconfig ip6tables off
# chkconfig acpid off

# chkconfig NetworkManager off
# chkconfig luci on
# chkconfig ricci on

 

 

image003

 

 

Bu işlem sonrası her iki sunucuyu restart ediyoruz.

 

# reboot

 

Sistem yeniden açıldıktan sonra luci ve ricci servisleri çalışacaktır. Cluster configurasyonu artık bu ara yüzlerden konfigüre edilmektedir. Hazırlıklara devam ediyoruz. Şimdi her iki node’unda hosts dosyalarına karşı tarafın iplerini yazacağız. Bu sayede her iki sunucu isimleri ile birbirlerine ulaşacaklardır. Eğer hosts file’larına yazmak istemiyorsanız bu işlemi DNS sunucu üzerinde yapmanız gerekli. Nano ile yazalım,

 

# nano /etc/hosts

 

Nano editörü açılınca en alt satıra şunları ilave ediyorum.

 

 

image004

 

 

192.168.1.19 rhel6n01 rhel6n01.techtalk.intra
192.168.1.20 rhel6n02 rhel6n02.techtalk.intra

 

 

Sunucuları birbirinden isimleri ile pingleyerek deneyiniz. Şimdi daha ilerde sorun çıkarmaması için ricci servis account’unun şifresini resetleyelim.

 

# passwd ricci

 

 

image005

 

 

Buraya kadar olan adımları eksiksiz ve problemsiz gerçekleştirdiyseniz arayüz çalışacaktır. Yapılan işlemler neticesinde grafik arayüzünün çalışması için gerekli altyapı hazırlıklarını tamamladık. Buradan sonra işlemlerin büyük bölümü için grafik ara yüzünü kullanabiliriz.

 

Cluster Konfigürasyonu

 

Şimdi browser adres kısmına https://rhel6n01.techtalk.intra:8084/ adresini yazarak arayüze erişebiliyor olmanız lazım. Arayüz aşağıdaki gibi karşınıza gelecektir.

 

 

image006

 

 

Username kısmına root yazalım. Password kısmınada root password’ünü yazarak login olacağız. Luci cluster configürasyon ekranı gelecektir.

 

 

image007

 

 

Gördüğünüz gibi boş bir konfigürasyon ekranı. Artık cluster’ımız için gerekli yapıyı inşa etmeye başlayabiliriz. Cluster configürasyon ekranları çok güzel hazırlanmış. Oldukça hızlı çalışıyor. Manage clusters başlığına tıklıyoruz. Karşımıza aşağıdaki ekran gelecektir. Sağ üst taraftan create diyerek Cluster konfigürasyonuna devam ediyoruz.

 

 

image008

 

 

Create dedikten sonra karşımıza şu ekran gelecektir.

 

 

image009

 

 

Önce Cluster ismini verelim. Sonra tüm node’larda aynı password’ün kullanılması için use the same password for all nodes kutucuğunu dolduralım. Birde en altta “Use shared storage support kutucuğunuda işaretlememiz lazım. Bu işlemler sonrası aşağıdaki create cluster” ile devam edelim. Cluster’i oluşturmaya başlıyor.

 

 

image010

 

 

Ve cluster’i oluşturdu. Artık ince ayarlarla devam edebiliriz.

 

 

image011

 

 

Cozumpark isimli cluster’imiz hazır. İçinde 2 adet sunucumuz mevcut. Bu sayı 16 adet’e kadar çıkabilir. Şimdi quarum diskini oluşturalım.

 

Cluster’lar için önemli bir konu olan quarum diski haliyle RedHat HA servisi içinde çok önemlidir. Bu işlem için daha önceden hazırladığım her iki sunucununda iSCSI interface’i üzerinden görebildiği “sdb1” diskini kullanacağım. Sizin altyapınızda FiberChannel yapı mevcutsa onuda kullanabilirsiniz. Sorun olmaz. RedHat HA servisi için atanan disklerin block base olmasını istiyor. Bu diski quarum diski olarak özel bir format ile hazırlamak gerekiyor. Bunun için gerekli komutu vererek hazırlığı tamamlıyorum.

 

Cli ara yüzünü kullanacağız. Hemen aşağıdaki komutu uygulayalım.

 

# mkqdisk -c /dev/sdb1 -l qdisk

 

 

image012

 

 

Şimdi yeni quorum diskimizi bir inceleyelim.

 

# mkqdisk –L

 

 

image013

 

 

Evet quorum diskimiz hazır. Yukarıdaki ekran görüntüsünde host kısmında göreceğiniz üzere ilk node diskin sahibi. Şimdi web ara yüzünü kullanarak cozumpark cluster’ımıza bu diski atayalım.

 

 

image014

 

 

 

En sağ üst tarafta bulunan configüre seçeneğini tıklayalım, (yukarıdaki bilgi ekranlarının altında kaldı ;( ). Configüre menüsünün hemen altında bir menü bar daha çıkacaktır. Orada Qdisk seçeneğini tıklıyoruz. İlk olarak “Do Not Use a Quorum Disk” seçeneği seçili gelir. Biz “Use a Quorum Disk” seçeneğini seçelim. Sonra aşağıdaki kırmızı kare ile işaretlediğim By Filesystem Path to Device (deprecated)” ‘i işaretleyelim. Sonra altındaki alana “/dev/sdb1” yazarak sayfanın en altındaki apply butonuna basalım. Artık quorum diskimizde hazır. Bundan sonrası artık uygulama türüne göre bu cluster’ın yapılandırılmasına kalıyor.

 

# clustat

 

komutu ile cluster’ın durumunu görelim.

 

 

image015

 

 

Herşey çok güzel. Gördüğünüz gibi tamamen sorunsuz şekilde kurulum tamamlandı. Şimdi cluster sunucuların birlikte aynı anda yazıp kullanacakları data alanını oluşturacağız. Bu işlem içinde yine Cli ara yüzünü kullanıyoruz. Daha önceden hazırladığım “/dev/sdc diskini bu amaçla kullanacağım. Bu alanı her iki sunucu da aynı anda kullanacaklar ve görecekler. Zaten iSCSI’den diski fiziksel olarak her iki sunucuda görebiliyor. Bu device üzerinde bir LVM yani logical volume oluşturacağız. Aşağıdaki komutlarla devam edelim.

 

# pvcreate /dev/sdc
# vgcreate –c y FileSystem_gfs2 /dev/
sdc

 

 

image016

 

 

Fiziksel volume ve virtual volume tamam. Bitmedi, devam ediyoruz.

 

# lvcreate -l 100%FREE -n FilSystemGFS2 FileSystem_gfs2

 

 

image017

 

 

Partition ‘da tamam. Şimdi formatlıyoruz.

 

# mkfs -t gfs2 -p lock_dlm -t cozumpark:gfs2 -j 4 /dev/mapper/FileSystem_gfs2-FilSystemGFS2

 

 

image018

 

 

Formatlama işinden sonra artık bu volume her iki sunucunun kullanabileceği hale geldi. Şimdi Cluster Volume Daemon yani clvmd servisini restart edelim.

 

# service clvmd start

 

 

image019

 

 

Bu konuda yapılacak birtek işlem kaldı. Bunu yaptıktan sonra Cluster’ımız bu alanı her iki node üzerinde görüyor ve aynı anda kullanıyor olacak. Bu işlem “mount” işlemi. Yani windows dilindeki harf atama işlemi. Aşağıdaki ekran görüntüsünde olduğu gibi mount satırını “/etc/fstab dosyasına yazıyoruz.

 

# nano /etc/fstab

 

 

image020

 

 

En alttaki satırı ilave ediyoruz. Bu satırları her iki node’unda fstab dosyalarına ilave etmeyi unutmayalım.

 

/dev/mapper/FileSystem_gfs2-FilSystemGFS2 /cluster/data gfs2 defaults,noatime,nodiratime 0 0

 

Sunucuları restart ederek yeni volume’leri kontrol edebilirsiniz. Kontrol etmek için 1nci noda’da “/cluster/data” bir dosya atalım. Sonra 2nci noda’a geçerek dosya buraya gelmiş mi bakalım. Her iki node’da da bu alanı aynı anda ortak kullanabiliyor olmalı.

 

Şimdi örnek bir senaryo hazırlayalım, Diyelimki benim bir File server hazırlamam lazım. Ama bu alanında cluster yapıda olması lazım.

 

Öncelikle aşağıdaki gibi serverlar arası öncelik sırası oluşturalım. Bunun için FailOver başlığı altından bir FailOver Domain oluşturuyoruz.

 

 

image021

 

 

Ben sunucular arası öncelik sırasınıda ekrandaki gibi veriyorum. Create diyerek işi bitiriyoruz. Sonra Resources başlığından kaynak oluşturacağız. Resources başlığına tıkladığımızda aşağıdaki ekran gelecektir.

 

 

image022

 

 

Add diyerek devam ettiğimizda aşağıdaki ekran karşınıza gelecektir. Buradaki seçenekleri incelediğinizde göreceğiniz üzere HA yapabileceğiniz birçok uygulama mevcut.

 

 

image023

 

 

Aslında bunun dışındaki uygulamaları da kendi yazacağınız scriptlerle HA bir yapı da oluşturabilirsiniz. Ben GFS2 seçeneğiniz seçiyorum. Yapmak istediğim her iki sunucunun ortak kullanabileceği bir “File Share” alanı ortaya çıkarmak. RedHat failover sunucularda bu file system’i kullanmaktadır. Bir SAN ya da iSCSI file alanınız varsa bu şekilde HA servisindeki tüm sunucuların kullanmasını sağlayabilirsiniz.

 

 

image024

 

 

Burada seçtiğiniz seçeneklere göre opsiyonlar çıkacaktır. GFS2 ile devam ettiğimde mount point soruyor. Daha önceden oluşturduğum mount point’i veriyorum. Device kısmınada bu diskin hangi disk device olduğunu yazıyorum. Burada yazılması gereken “/dev/mapper/FileSystem_gfs2-FilSystemGFS2 “. Bu disk benim quorum diskinden sonra ikinci olarak atadığım iSCSI device. Buda block based bir disk. Submit diyerek devam ediyoruz.

 

Şimdi service group oluşturacağız. Bu grup artık HA gurubundaki sunucular arasında, verdiğimiz kaynakları kullanarak gezecek olan servis. Aşağıdaki görüntüye sahip.

 

 

image025

 

 

Burada yine seçenekler mevcut. Biz “Add” diyerek devam ediyoruz. Karşımıza gelen ekranda yine seçenekler mevcut.

 

 

image026

 

 

Öncelikle bir isim veriyoruz. Bu isim benim HA servis ismim olacak. Sonrasında servisin her iki node’da da otomatik olarak çalışması için Automatically Start This Tervice” kutucuğunu dolduruyorum. FailOver domain kısmında daha önceden oluşturduğum FileArea isimli FailOver domainini seçiyorum. Recovery policy kısmında ise restart seçeneğini seçiyorum. Buraya kadar herşey güzel.

 

Servisin benim istediğim ve daha önce oluşturduğum disk alnını kullanması için “Add Resource” butonuna tıklıyorum.

 

 

image027

 

 

Hemen bir seçenekler ekranı açılıyor. Buradan daha önce oluşturduğum disk alanını seçeceğim. (En üstte)

 

 

image028

 

 

Gördüğünüz gibi ayrılmış bir şekilde benim daha önce oluşturduğum FileShareArea isimli seçenek çıkıyor. Bunu seçtiğinizde bir önceki ekran aşağıya doğru uzayacaktır. Burada daha önceki yapılandırma seçeneklerini görebilirsiniz. Submit diyerek onaylayıp devam edelim.

 

 

image029

 

 

 

Gördüğünüz gibi işlem tamamlandı. Servis hazır. Sayfada seçenekler mevcut. Bunlardan bir kısmı değiştirilebilir. Şimdi servisi seçerek start edelim.

 

 

 

image030

 

 

Artık Cluster’ımızı güvenle kullanabiliriz. En önemli unsur uygulamanın kullanacağı dosyaları cluster ortak alanına konumlandırmak.

Kolay gelsin.

Viewing all 96 articles
Browse latest View live