Yönetimsel komutlar ve yapılandırma dosyaları ile birlikte log dosyalarını inceliyoruz.

Linux sistem yönetimi konusundaki ilk yazımızda sistem yönetimi konusuna genel olarak değinmiş, root hesabı ve root yetkilerinin nasıl kullanıldığını anlatmıştık. Kullanılan Linux dağıtımı ne olursa olsun, yapılandırma ve günlük (log) dosyaları hemen hemen aynı alanda saklanır ve benzer özelliklere sahiptir. Yazımızda bu yapılandırma unsurlarının nerelerde bulunacağına ve özelliklerine değineceğiz.

Öncelikle şu konuya değinelim; Linux için GUI (Graphical User Interface, Grafiksel Kullanıcı Arayüzü) yönetim araçları oldukça kullanışlı ve görsel olarak yeterli bir hale gelmişse, neden yönetimsel yapılandırma dosyaları hakkında bilgi sahibi olmak gereksin?

GUI araçları Linux dağıtımlarına göre farklılık gösterebilir. Ancak GUI araçlarının üzerinde işlem yaptığı temel yapılandırma dosyaları genelde dağıtımdan bağımsız olarak aynıdır. Dosyalarla çalışmayı öğrenmek tüm Linux sistemleriyle çalışabilmenizi kolaylaştırır. Ayrıca, bir özellik bozulursa ya da GUI tarafından desteklenmeyen bir işlem yapmanız gerekiyorsa shell komutlarıyla yapılandırma dosyalarını istediğiniz gibi onarabilir veya değişiklik yapabilirsiniz.

Yönetimsel komutların yeri

Yalnızca root kullanıcısının yönetimsel komutları kullanması öngörülür. root olarak oturum açtığınızda (veya su komutu ile shell’den root olunca), $PATH değişkeniniz root kullanıcısına ait komutları içeren dizinleri içerecek şekilde ayarlanır.

$PATH değişkeninden kısaca bahsedelim.

$PATH (patika, yol), Linux komut satırında çalıştırılabilen komutlara (sort, grep vb. tüm komutlar) ait dosyaların bulunduğu adres bilgilerini saklayan sistem değişkenidir.

Örneğin sort ve grep komutunun sistemde hangi yolda saklandığını görmek için which komutunu kullanabiliriz;

which komutu hangi komutun nerede yer aldığı bilgisini verir

Çıkan sonuçtan sort komutunun /usr/bin klasöründe, grep komutunun ise /bin klasöründe olduğunu anlıyoruz. Eğer /usr/bin ve /bin klasörleri PATH içerisinde tanımlanmamışsa sistem “komut bulunamadı” gibi bir hata verir. Bu nedenle kendi yazdığınız ya da sisteme farklı bir yolla kopyaladığınız bir programı çalıştıran komutun PATH’e tanımlanması gerekir.

PATH’in $PATH şeklinde ifade edilişi bir değişkeni temsil eder. Shell script’lerde “$” işareti değişkenleri tanımlar ve değişkenlerin değerini öykünücüde görmek için echo komutunu kullanabiliriz;

$PATH değişkeninde tanımlı dizinler

grep ve sort komutlarının bulunduğu klasörlerin PATH içerisinde tanımlandığını görüyoruz. Tanımlı dizinler “:” işaretiyle birbirlerinden ayrılmıştır. Sistem PATH içerisindeki dizinleri tarar ve komutu bulmaya çalışır, komut dosyası bulununca çalıştırılır.

Yönetimsel komutlar eskiden sadece /sbin ve /usr/sbin klasörlerinde saklanırdı. Bu klasörler bazı komutlar için bazı dağıtımlarda hala kullanılmaktadır. Bazı yönetimsel komutlar, mesela disk bağlamak için kullanılan mount komutu gibi, normal kullanıcı dizinlerinde de bulunur. Örneğin /bin ve /usr/bin klasörlerinde.

Eğer sisteme kendi komutlarınızı eklemek isterseniz, bunları /usr/local/bin veya /usr/local/sbin gibi dizinlere eklemelisiniz. Bazı Linux dağıtımları, otomatik olarak bu dizinleri PATH’ınıza ekler. Bu şekilde, bu dizinlere yüklenen komutları yalnızca erişilebilir hale getirmekle kalmaz aynı zamanda diğer dizinlerde aynı addaki komutları geçersiz kılar. Bu nedenle aynı ada sahip komutların var olup olmadığı önceden kontrol edilmelidir (mesela which ve whereis komutları ile).

Linux dağıtımlarında varsayılan olarak bulunmayan bazı üçüncü taraf uygulamalar bazen /usr/local/bin, /opt/bin veya /usr/local/sbin dizinlerine yerleştirilir.

Yönetimsel yapılandırma dosyaları

Konfigürasyon dosyaları, Linux sistem yönetiminin bir diğer temel taşıdır. Kullanıcı hesapları, ağ adresleri veya GUI tercihleri gibi bilgisayarın kurulu düzenine ait hemen hemen her şey düz metin dosyalarıyla saklanır. Elbette bu durumun bazı avantajları ve bazı dezavantajları var.

Metin dosyalarının en önemli avantajı, okunmasının ve değiştirilmesinin kolay olmasıdır. Herhangi bir metin editörü ile düzenleme işi kolayca yapılabilir. Ancak, yapılandırma dosyalarını düzenlediğinizde hata denetimi yapamazsınız. Dosyaları doğru bir şekilde ayarlayıp ayarlamadığınızı öğrenmek için bu dosyaları gerekli ortamda çalıştırmanız gerekir.

Bazı yapılandırma dosyaları bilgileri depolamak için XML gibi standart yapılar kullanır, ama bazılarında bu özellik yer almaz. Bu nedenle, her yapılandırma dosyası için özel yapısal kuralları öğrenmek gerekiyor. Yanlış yerde kullanılacak bir virgül veya tırnak işareti tüm bir arabirimin hata vermesine neden olabilir.

Yapılandırma dosyalarının yapısının doğruluğunu birkaç yolla kontrol edebilirsiniz. Bazı yazılım paketleri, bir hizmeti başlatmadan önce yapılandırma dosyasının doğruluğunu bir komutla test eder. Örneğin, testparm komutu smb.conf dosyasının doğruluğunu kontrol etmek için Samba ile birlikte kullanılır. Bir web sunucu başlatılmadan önce ise Apache web sunucu yapılandırmasını kontrol etmek için

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

Bazı metin editörleri yapılandırma dosya türünü tanıyarak dosyadaki farklı öğeleri farklı renklerde gösterir. Bu editörlerin bazıları metin dosyasındaki programlama ya da betik dillerini de tanıyarak öğeler için farklı renkler gösterebilir. Bu da yapılandırma dosyasında değişiklik yaparken kolaylık sağlar. Örneğin vim, xed, gedit gibi editörler renklendirme konusunda basit ama etkili programlardır.

Bazı editörler konfigürasyon dosyalarındaki öğeleri farklı renklerde gösterir

Yapılandırma dosyalarının konumu

Konfigürasyon dosyaları iki önemli lokasyonda saklanır. Biri kullanıcının kendi HOME dizini (/home/kullanıcı şeklindeki) ve /etc dizini. HOME dizininde kullanıcın kendi konfigürasyon dosyaları bulunurken, /etc klasöründekiler sistem genelinde kullanılan konfigürasyon dosyalarıdır.

Aşağıda yararlı yapılandırma dosyalarını içeren dizinlerin (ve alt dizinlerin) bilgileri bulunmaktadır. Linux yapılandırma dosyalarının içeriğini görüntülemek, Linux sistemlerinin yönetimi hakkında oldukça öğretici olacaktır.

Şimdi bu yapılandırma dosyalarına bakarak bilgiler verelim.

$HOME

Bir kullanıcıya ait HOME dizini /home/kullanıcı şeklindedir. Kendi kullanıcı dizininizi görüntülemek için komut satırına “echo $HOME” yazabilirsiniz (“$” simgesi HOME dizinini bir değişken haline getirir).

Tüm kullanıcılara ait giriş (login) hesaplarının davranış bilgileri $HOME dizininde saklanır. Buradaki birçok yapılandırma dosyası nokta (.) ile başlar (nokta ile başlayan dosyalar gizlidir ve görüntülemek için “ls -a” komutu kullanılır).

nokta (.) ile başlayan dosya ve klasörler gizlidir

Bu gizli dosyalar, her bir kullanıcının kabuğunun davranışı, masaüstü görünümü ve metin düzenleyicilerin özellikleri gibi seçenekleri barındırır.

Örneğin, her kullanıcının dizininde $HOME/.ssh (bu kullanım şekli /home/kullanıcı/.ssh anlamına gelir) gibi uzaktan erişimleri kontrol eden yapılandırma dosyaları bulunur (ssh yüklü ise).

/etc

Bu klasör, Linux sisteminin temel yapılandırma klasörlerinin çoğunu içerir. Bu klasörleri aşağıda veriyoruz.

/etc/cron*

cron* ile başlayan bu klasör kümesi, cron programının uygulamaları günlük (cron.daily), saatlik (cron.hourly), aylık (cron.monthly) veya haftalık (cron.weekly) zamanlayarak çalışmasını tanımlayan dosyaları içerir. Bu dosyalar kullanılarak uygulamaların istenilen periyotta çalışması zamanlanabilir.

/etc/cups

Bu klasör CUPS yazdırma hizmetinin yapılandırılması için kullanılır.

/etc/default

Çeşitli yardımcı programlar için varsayılan değerleri ayarlayan dosyaları içerir. Örneğin, useradd komutu ile yeni bir kullanıcı hesabı oluştururken kullanılacak varsayılan grup numarası, giriş dizini, şifrenin son kullanma tarihi, kabuk ve iskelet dizini (/etc/skel) gibi bilgileri içeren dosyaları saklar.

/etc/httpd

Apache web sunucusunun davranışını yapılandırmak için kullanılan çeşitli dosyalar içerir (Ubuntu ve bazı Linux sistemlerinde bunun yerine /etc/apache veya /etc/apache2 kullanılabilir).

/etc/init.d

Bu klasör çeşitli hizmetler için başlat/durdur komut dosyalarını saklar. “?” simgesi 0 dan 6’ya kadar değer alabilen çalışma seviyeleri olmak üzere, bu komut dosyaları /etc/rc?.d dizinleri ile bağlantılıdır ve her hizmetin belirli bir çalışma seviyesi için başlat/durdur komut dosyalarıyla ilişkilendirilmiştir.

/etc/mail

sendmail posta gönderim hizmetini yapılandıran dosyaları içerir.

/etc/pcmcia

Bilgisayar için yapılandırılmış çeşitli PCMCIA kartlarına izin veren yapılandırma dosyalarını içerir (pcmciautils paketi yüklüyse). PCMCIA yuvaları, dizüstü bilgisayarlardaki kredi kartı boyutundaki kartların bilgisayara takılmasını sağlayan aralıklardır. Modemler ve harici CD-ROM’lar gibi cihazlar bağlanabilir. Günümüzde aygıtların çoğu USB aygıtı olarak kullanılabildiğinden, dizüstü bilgisayarlarda PCMCIA yuvalarının yaygınlığı azalmış durumda.

/etc/postfix

Postfix posta taşıma aracı için yapılandırma dosyaları içerir.

/etc/rc?.d

/etc/init.d klasöründe bahsettiğimiz bu klasör dizisinde, rc0.d (kapatma durumu), rc1.d (tek kullanıcılı durum), rc2.d (çok kullanıcılı durum), rc3.d (çok kullanıcılı artı ağ durumu), rc4.d (kullanıcı tanımlı durum), rc5.d (Çok kullanıcılı, ağ kurma, artı GUI oturum açma durumu) ve rc6.d (yeniden başlatma durumu) şeklinde sistem durumları yer alır.

/etc/security

Temel olarak kimlik doğrulamanın nasıl yapıldığını tanımlayan, bilgisayar için çeşitli varsayılan güvenlik koşullarını ayarlayan dosyaları içerir. Bu dosyalar pam (pluggable authentication modules, takılabilir kimlik doğrulama modülleri) paketinin bir parçasıdır.

/etc/skel

Bu dizinde bulunan herhangi bir dosya, sisteme bir kullanıcı eklendiğinde otomatik olarak kullanıcının $HOME dizinine kopyalanır. Varsayılan olarak, bu dosyaların çoğu nokta (.) ile başlayan gizli dosyalardır. Örneğin .bashrc, bash kabuğuyla kullanılacak varsayılan değerleri ayarlamak için kullanılır.

/etc/sysconfig

Çeşitli servisler (iptables, samba ve daha çok ağ hizmetleri) tarafından oluşturulan ve muhafaza edilen önemli sistem yapılandırma dosyalarını içerir. Bu dosyalar, GUI yönetim araçlarını kullanan, ancak diğer Linux sistemlerinde hiç kullanılmayan Fedora ve RHEL gibi Linux dağıtımları için kritik öneme sahiptir.

/etc/systemd

Önyükleme işlemini ve sistem hizmetlerini yönetmeye yarayan dosyaları içerir. Özellikle, hizmetleri etkinleştirmek ve devre dışı bırakmak için systemctl komutları çalıştırıldığında bunu gerçekleştiren dosyalar /etc/systemd/system dizininin alt dizinlerinde saklanır.

Bazı önemli konfigürasyon dosyaları

Yukarıda önemli yapılandırma klasörlerinden bahsettik. Yine /etc klasörü altında yer alan bazı önemli yapılandırma dosyalarını aşağıda veriyoruz.

aliases:

Linux posta hizmetleri tarafından kullanılan dağıtım listelerini içerir (bu dosya, sendmail paketini kurduğunuzda Ubuntu’da /etc/mail altında bulunur).

bashrc:

bash shell kullanıcıları için sistem geneli varsayılanlarını ayarlar. Bazı dağıtımlarda bu dosya bash.bashrc olarak yer alır.

crontab:

Cron ile ilişkili zamanlanmış görevleri ve değişkenleri çalıştırma sürelerini ayarlar.

csh.cshrc (ya da cshrc):

csh (C shell) kullanıcıları için sistem geneli varsayılanları ayarlar.

exports:

Network File System (Ağ Dosya Sistemi, NFS) kullanarak uzaktaki bilgisayarlar tarafından paylaşılabilen yerel dizinlerin listesini içerir.

fstab:

Ortak depolama ortamları (sabit disk, CD-ROM vb.) ve bunların Linux sisteminde bağlı oldukları yeri belirleyen bilgileri saklar. Sistemin ilk önyükleme yaptığı anda hangi dosya sisteminin bağlanacağını seçmek için mount komutuyla birlikte kullanılır. Kullanımı mount komutunun kullanımına benzer.

group:

Kullanıcı gruplarının adları ve ID’lerinin (GID) tanımlandığı dosyadır.

gshadow:

Gruplara ait parolaların shadow dosyasıdır.

host.conf:

Eski uygulamalar tarafından, TCP/IP ağlarında alan adlarının arandığı yerleri ayarlamak için kullanılır.

hostname:

Yerel sistemin ana makine adını içerir.

hosts:

Bilgisayardan erişilebilecek IP adreslerini ve ana bilgisayar adlarını içerir (Genellikle bu dosya sadece LAN’daki veya küçük özel ağlardaki bilgisayarların adlarını depolamak için kullanılır).

hosts.allow:

Yerel bilgisayardan belirli TCP/IP hizmetlerini kullanmasına izin verilen ana bilgisayarları listeler.

hosts.deny:

Yerel bilgisayardan belirli TCP/IP hizmetlerini kullanmasına izin verilmeyen ana makinelerin listesini verir.

inittab:

Daha önceki Linux sistemlerinde, hangi programların Linux önyükleme yaparken başlayıp duracağını tanımlayan bilgileri içeriyordu. Bu konfigürasyon dosyası Linux init sürecini başlattığında okunan ilk yapılandırma dosyasıydı. Bu dosya, systemd’yi destekleyen Linux sistemlerinde artık kullanılmamaktadır.

mtab:

Halihazırda sisteme bağlı dosya sistemlerinin listesini içerir.

mtools.conf:

Linux için MS-DOS araçları tarafından kullanılan ayarları içerir.

named.conf:

Kendi DNS sunucunuz varsa, sunucu için gerekli DNS ayarlarını içerir.

nsswitch.conf:

Kritik sistem bilgisinin (kullanıcı hesapları, ana bilgisayar adıyla adres eşleştirmeleri vb.) nereden geldiğini (yerel ana bilgisayar veya ağ hizmetleri) belirlemek için ad hizmeti ayarlarını içerir.

ntp.conf:

Ağ Zaman Protokolü’nü (Network Time Protocol, NTP) çalıştırmak için gerekli bilgileri içerir.

passwd:

Sistemdeki kullanıcı hesaplarına ait bilgileri saklar.

printcap:

Bilgisayar için yapılandırılmış yazıcıların tanımlamaları içerir.

profile:

Tüm kullanıcılar için sistem genelindeki ortamı ve başlangıç programlarını belirler. Bu dosya, kullanıcı oturum açtığında okunur.

protocols:

Çeşitli İnternet servisleri için protokol numaralarını ve adlarını ayarlar.

services:

TCP/IP ve UDP hizmet adlarını ve bağlantı noktası atamalarını tanımlar.

shadow:

passwd dosyasında tanımlanan kullanıcılar için şifrelenmiş parolalar içerir.

shells:

Sistemde mevcut olan kabuk komut satırı yorumlayıcılarını (bash, sh, csh ve benzeri) ve konumlarını listeler.

sudoers:

sudo komutunu kullanarak komut çalıştırma yetkisi olan kullanıcılar tarafından çalıştırılabilen komutları ayarlar. Özellikle belirli kullanıcılara root izni vermek için kullanılır.

rsyslog.conf:

Rsyslogd sunucusu tarafından toplanan günlüğe kaydetme iletilerini ve hangi dosyaların depolandığını tanımlar.

 

Önemli bir başka dizin olan /etc/X11’den de söz etmek gerekiyor. X pencere sisteminin kullandığı sistem geneli yapılandırma dosyalarını içeren alt dizinleri içerir. xorg.conf dosyası (bu dosya X’i kullanabilmeniz için bilgisayarınızı ve monitörünüzü yapılandırır) ve X’i başlatan xdm ve xinit tarafından kullanılan bazı yapılandırma dosyaları burada bulunmaktadır.

Yönetimsel log (günlük) dosyaları

Linux’un en iyi yaptığı şeylerden biri kendini takip etmektir. Karmaşık gibi görünen bir işletim sistemi için bu oldukça iyi bir şey.

Bazen yeni bir işlem tesis etmeye çalıştığınızda, sistem size neden işlemin başarısız olduğuna dair uyarı vermeyebilir. Ya da birilerinin bilgisayarınıza yasadışı bir şekilde girmeye çalışıp çalışmadığını görmek için sisteminizi izlemek istersiniz.

Linux sistemlerinde (systemd kullanmayanlarda) loglama hatası ve hata ayıklama mesajları için kullanılan temel yardımcı program rsyslogd programıdır (Daha eski bazı Linux sistemleri syslogd ve syslogd’yi kullanır). rsyslogd, systemd sistemleriyle kullanılabilmesine rağmen; systemd, systemd günlüğü (journalctl komutu) olarak adlandırılan mesajları toplamak ve görüntülemek için kendi yöntemlerini kullanır.

journalctl komutu ile systemd günlüğü görüntüleme

systemd günlüğündeki mesajları görüntülemenin birincil komutu journalctl komutudur. Önyükleme işlemi, çekirdek ve sistem tarafından yönetilen tüm hizmetler, durum ve hata mesajlarını sistemd günlüğüne yönlendirir. journalctl komutunu kullanarak günlük iletilerini farklı şekillerde görüntüleyebiliriz.

journalctl komutu hiçbir parametre olmadan kullanılırsa systemd günlüğündeki sayfalar dolusu iletiyi ekrana getirecektir.

Önyükleme günlüklerini görüntülemek için journalctl komutu ile birlikte “-b” parametresi kullanılır. Geçmişe dönük önyüklemeleri görüntülemek için ise;

komutu kullanılır. Komut sonrası detayları görüntülenmek istenen önyükleme için birinci sütun ya da ikinci sütundaki bilgiler kullanılabilir;

ya da boot ID;

Eğer belirli bir tarihten itibaren ya da belirli bir tarihe kadar olan önyüklemeler görüntülenmek isteniyorsa “since” ve “until” parametreleri kullanılabilir (YYYY-MM-DD HH:MM:SS formatında tarih ve süre belirtilmelidir);

ya da dün, bugün gibi ifadeler de parametre ile kullanılabilir;

Sitemdeki bir birime (unit) ait günlükleri görüntülemek için “-u” parametresi kullanılır;

Örneğin sistemin nginx birimine ait günlükler için;

komutu kullanılabilir. Ya da nginx işlemi PHP-FPM’e bağlıysa bu detayı görmek için;

komutu kullanılabilir.

Bir işlemin kimliği (PID) belirtilerek bu işleme ait günlükleri görmek için ise “_PID” belirteci kullanılır (tire yerine alt tire kullanımına dikkat edin);

Benzer şekilde bir kullanıcının işlemlerini görüntülemek için ise _UID belirteci kullanılabilir. Örneğin UID’si 1000 olan bir kullanıcı için son 10 kaydı almak istersek;

Bir kullanıcıya ait günlük iletilerini görüntüleme

Çekirdekten (Kernel) gelen iletilere ait günlükler için “-k” parametresi kullanılır;

Bu komutla çekirdekten gelen tüm iletiler görüntülenir.

journalctl ile ilgili tüm detayları “–help” parametresini kullanarak ya da man sayfasından görebilirsiniz. Oldukça detaylı ve farklı kullanımlar göreceksiniz.

rsyslogd ile günlük iletilerini yönetme

rsyslogd, günlük iletilerini toplayıp bunları günlük dosyalarına veya günlük sunucularına yönlendirir. Günlüğe kaydetme işlemi /etc/rsyslog.conf dosyasındaki ayarlara göre yapılır. İletiler genellikle /var/log dizininde bulunan günlük dosyalarına yönlendirilir.

/var/log dizininde yaygın olarak kullanılan birkaç günlük dosyası aşağıda verilmiştir;

  • log: Başlangıç (start up) servisleriyle ilgili önyükleme iletilerini içerir.
  • messages: Sistemle ilgili birçok bilgilendirme mesajı iç
  • safe: Oturum açma etkinliği veya kullanıcı kimliğini doğrulayan işlemler gibi güvenlikle ilgili mesajlar içerir.
  • Xorg.0.log: Kullandığınız X sunucusuna bağlı olarak, ekran kartı, fare ve monitör yapılandırmasıyla ilgili mesajlar bulunur.

rsyslogd ile ilgili daha detaylı bilgileri Linux derslerimizin ilerleyen yazılarında “sunucu yönetimi” bölümünde ele alacağız ve yapılandırmasından bahsedeceğiz.

Linux sistem yönetimi konusuna “donanım yapılandırması” konusu ile devam edeceğiz.

BİR CEVAP BIRAK