AÖF Soru Bankası

Unix Sistem YönetimiÜnite 7 Özeti

Linux İşletim Sisteminde Yönetsel İşlemler

BİL211U-UNIX SİSTEM YÖNETİMİ

Ünite 7: Linux İşletim Sisteminde Yönetsel İşlemler

Giriş

Linux işletim sistemleri ilk kurulumlarında yazılım paketleri minimal düzeyde gelir. Aslında Linux’un performansının diğer işletim sistemlerine göre daha iyi olmasının temel nedenlerinden biridir. Sistem yöneticileri bu sayede yalnızca ihtiyaç duyulan ve sunucunun kullanım amacına hizmet eden yazılımları kurarlar.

Yazılım Paketi Yönetimi

Kaynak kodu, derleme dosyaları, belgeler ve yapılandırma şablonları gibi UNİX ve Linux yazılım bileşenleri geleneksel yöntemle sıkıştırılmış arşivler, genellikle .tar.gz veya .tgz dosyaları olarak dağıtılırdı. Bu durum, geliştiriciler için sorun olmasa da özellikle son kullanıcılar için bu dosyaları manuel derleyerek yazılım paketlerini oluşturup yüklemek pek kolay bir iş değildi. Bu aşamada yazılımları paketler olarak sunma çözümü, yazılım yönetimi işlemini basitleştirmek ve kolaylaştırmak için ortaya çıkmıştır. Yazılım paketleri, önceden derlenmiş binary dosyalar, bağımlılık bilgileri ve yöneticilerin düzenleyebileceği yapılandırma dosyası şablonları dahil olmak üzere bir yazılımı çalıştırmak için gereken tüm verileri içermektedir. Yazılım paketi sistemleri, uygulamayı geliştirenlerin, uygulamalarının bağımlı olduğu yazılım kütüphanelerinin ve destek altyapısının doğru bir şekilde dağıtıldığını doğrulayan bir bağımlılık modeli kullanırlar. Paketler, kurulum sırasında farklı zamanlarda komut dosyaları çalıştırabilir ve bu da onların yeni dosyaları kopyalamaktan çok daha fazlasını yapmalarına olanak tanır. Paketler yeni kullanıcılar ve gruplar ekleyebilir, sistemin durumu ile ilgili kontroller gerçekleştirip ayarları ortama göre uyarlayabilirler.

Linux işletim sistemlerinde genellikle iki paket formatı kullanılır. Bunlar Red Hat, CentOS, SUSE, Amazon Linux ve çok sayıda başka dağıtım tarafından kullanılan ve “RPM Paket Yöneticisi” olarak bilinen RPM ve Ubuntu, Pardus, Elementary OS gibi Debian tabanlı sistemlerde kullanılan DEB paketleridir. Hem RPM hem de DEB paket yönetim sistemi baştan sona çift katmanlı yapılandırma yönetim araçları olarak işlev görürler. En alt seviyede yükleme, kaldırma ve sorgulama işlevi gören RPM paketleri için rpm ve deb paketleri için dpkg yer almaktadır.

rpm Paketlerinin Yönetimi

Rpm komutu paketi yükler, doğrular ve durumu hakkında bilgi verir. Eskiden bu paketler yeniden oluşturulurken günümüzde bu iş artık “rpmbuild” adlı ayrı bir araç tarafından gerçekleştirilmektedir. rpm seçenekleri karmaşık ilişkilere sahiptir ve yalnızca belirli kombinasyonlarda kullanılabilir. “rpm”yi aynı ada sahip bir komut koleksiyonu olarak düşünmek daha doğru olacaktır. Belirli bir modda (-i veya -q gibi) çalışmasını belirterek “rpm”nin özelliklerine erişilebilir. “rpm” paketleri ile sık bir şekilde çalışılıyorsa rpm --help ya da man rpm komutları ile farklı modlar altındaki kullanımları görüntülemek mümkündür. Yazılımı yükleme (-i), versiyonu yükseltme (- U), silme (-e) ve yüklenen tüm paketleri sorgulama (-qa)

gibi seçenekler sık kullanılan seçeneklerdir. “rpm” komutu ile sunucuya indirilen bir “rpm” paketinin konumu belirtilerek kurulum yapılabileceği gibi “.rpm” uzantılı paketi web sayfasından çağırarak kurulumu gerçekleştirmek mümkündür.

Dpkg: .deb Paketlerinin Yönetimi

RedHat tabanlı sistemlerdeki rpm komutu gibi Debian tabanlı sistemlerde de dpkg komutu vardır. Bu komutla birlikte sık kullanılan seçenekler --install (yükle), --remove (kaldır) ve sistemde yüklü paketleri görmek için kullanılan -l dir.

Paket Kütüphaneleri

Yazılım depoları, Linux dağıtımları tercih edilen paket yönetim sistemleri ile bağlantılı olarak yönetilmektedir. Paket yönetim sistemlerinin Linux işletim sistemleriyle gelen varsayılan kurulumu, kullanıcıları genellikle dağıtıcı tarafından yönetilen bir veya daha fazla iyi bilinen web veya FTP sunucusuna yönlendirir.

RedHat Ağı (RHN-RedHat Network)

RedHat işletim sistemi ücretsiz olarak kurulabilmesine rağmen RedHat Network ortamına erişip destek ve açık erişim ortamlarda bulunamayan yazılım ve özellikleri almak için bu ortamda abonelik oluşturulmalıdır. Redhat’ın son kullanıcıya hitap eden piyasadan yavaş yavaş çekilip iş dünyasına yönelik açılımıyla birlikte RedHat Network ortamında daha çok bu alanda faaliyet göstermeye başladı. RedHat Network ortamında destek e-postaları ve bazıları ücretsiz olan yazılım yamaları ve güncelleştirme hizmetine ek olarak özellikle destek başta olmak üzere ücretli hizmetler de bulunmaktadır.

APT: Gelişmiş Paket Aracı (APT-Advanced Package Tool)

Gelişmiş Paket Aracı (APT) en üst düzeyde bir paket yönetim sistemidir. Tek bir apt komutu ile işletim sistemi güncellenebileceği gibi RedHat tabanlı sistemlerde olduğu gibi yazılım paketlerinin otomatik güncellenmesi de yapılabilir.

Standart bir yazılım deposu kopya sitesinden (mirror)Ubuntu kurulumu ve yazılım paketlerini yönetmek için APT kullanıyorsanız, yayında olan paketleri görmenin en kolay yolu https://packages.ubuntu.com adresini ziyaret etmektir.

apt ve apt-get Arasındaki Fark

apt apt-get ve apt-cache komutlarının bir alt seti olarak düşünülebilir. apt ile gerekli tüm paketler tek bir yerden alınıp yüklenebilir. apt’nin temel amacı, komut satırında apt man sayfasında belirtildiği üzere paketi “son kullanıcılar için güzel” bir şekilde ele almanın verimli bir yolunu sağlamaktır. apt ile daha az fakat daha etkili komut seçenekleri daha organize bir şekilde sunulmaktadır.

Yazılım Deposu Yapılandırma

/etc/apt/sources.list kaynak listesi ve /etc/apt/sources.list.d/ dizini içinde yer alan dosyalar işletim sistemi tarafından kullanılacak yazılım depoları ile ilgili ayarları içermektedir.


Bu yazılım depolarında belirtilen kaynaklardaki yazılım paketlerinin güncel listesi apt update ya da apt-get update komutları ile alınmaktadır. /etc/apt/sources.list.d dizini, ayrı dosyalar hâlinde farklı yazılımlar için source.list girişleri eklenmesini sağlar. Bu dizin altında iki farklı dosya biçimine izin verilir. Dosya adlarının, içerdiği biçime bağlı olarak .list veya .sources uzantısına sahip olması gerekir. Dosya adları yalnızca harf (a-z ve A-Z), rakam (0-9), alt çizgi (_), tire (-) ve nokta (.) karakterlerini içerebilir

Arşiv Türü [deb ve deb-src]

Her satırdaki ilk kelime olan deb veya deb-src, arşiv türünü belirtir. deb, arşivin normalde kullandığımız önceden derlenmiş paketler olan ikili (binary) paketleri (deb) içerdiğini gösterir. deb-src ise orijinal program kaynaklarına ek olarak Debian kontrol dosyası (.dsc) ve programı paketlemek için gereken değişiklikleri içeren diff.gz olan kaynak paketleri gösterir.

Yazılım Deposu URL Adresi [http://tr.archive.ubuntu.com/ubuntu]

Satırlardaki bir sonraki veri, paketlerin indirileceği yazılım deposunun URL adresidir. Ubuntu yazılım deposu linklerinin alternatiflerinin (mirror) listesi burada yer alır.

Linux Dağıtım Adı [jammy]

‘Dağıtım’, sırasıyla dağıtım adı (trusty, xenial, bionic, focal ve jammy) veya sürüm sınıfı (eski kararlı (oldstable), kararlı (stable), test ve kararsız (unstable)) olabilir. Bir sürüm sınıfına göre yazılım paketlerini yönetmek için sınıf adı ve belirli bir Ubuntu dağıtımı kullanarak yazılım paketlerini yönetmek için dağıtım adı kullanılmalıdır. Bir sonraki sürüm yayınlandığında kötü sürprizlerle ve bozuk sistemlerle karşılaşmamak için sources.list dosyasında kararsız (unstable) değişkeni kullanılmamalıdır. Yeni bir sürüme yükseltme bilinçli ve dikkatli bir işlemi gerektirmektedir.

Diğer Bileşenler [main restricted universe]

sources.list dosyasında her satırdaki son 4 bileşenden birincisi olan main resmî olarak desteklenen yazılımları temsil etmektedir. İkinci bileşen restricted ise resmî olarak desteklenen fakat tamamen ücretsiz lisansa sahip olmayan yazılımları ifade etmektedir. Üçüncü bileşen universe ise resmî olarak desteklenmeyen fakat topluluk desteği ile sürdürülen yazılımları içermektedir. Son bileşen olan multiverse ise resmî olarak desteklenmeyen ve kapalı kodlu ticari yazılımlara karşılık gelmektedir.

Yerel Yazılım Deposu Oluşturmak

Bazı kurulum senaryolarında esas yazılımların çalıştığı uygulama sunucularının güvenlik nedeniyle internet ortamına erişimlerine izin verilmeyebilir. İzin verilse bile çok fazla sayıda uygulama sunucunuz varsa bu sunucuların her birinde yazılım depolarını güncellemek ve yazılımları yüklemek için apt yazılım paketi yönetim aracını kullanmak bant genişliği anlamında çok da verimli bir yöntem sayılmayabilir. Bu yüzden yazılım deposunun bir kopyasının yerel bir sunucuda yapılandırılıp uygulama

sunucularının bu yerel yazılım deposundan beslenmesi iyi bir uygulama örneğidir.

Zamanlanmış görev argümanları 5 adet asteriks (*) karakterinden oluşmaktadır. Birinci asteriks komutun çalıştırılacağı dakikayı, ikinci asteriks saati, üçüncü asteriks günü, dördüncü asteriks ayı ve son asteriks ise yılı temsil etmektedir. Asteriks yerine rakamsal değerler yoksa “her zaman” çalıştır anlamı vardır. Zamanlama değerleri sonrasında ise çalıştırılacak komut mümkünse çalıştırıldığı yol ile birlikte verilmelidir (/usr/bin/apt-mirror)

APT Paket Yöneticisi

Belirli aralıklarla apt paket yönetim aracını kullanmak için zamanlanmış görevler (cronjob) kullanılabilir. Yazılım paketleri otomatik olarak yüklenmek istenmese bile sudo apt update komutunun belirli aralıklarla çalıştırılması yazılım paketlerinin listelerini güncel tutacaktır.

sudo apt upgrade komutu yerel makinede önceden kurulmuş yazılım paketlerinin güncel versiyonlarını indirip kurmak için kullanılmaktadır. Bu komut güncellenmek istenen yazılımla uyumsuz olarak gördüğü bazı paketleri silmek isteyeceğinden dikkatli bir şekilde kullanılmalıdır.

Dnf Paket Yöneticisi

RedHat tabanlı sistemlerde ise paket yönetim yazılımı olarak dnf kullanılmaktadır. Dnf (Dandified yum), yum’un (Yellow-Dog Updater Modified) güncel işletim sistemlerinde kullanılan versiyonu olarak düşünülebilir. Dnf sayesinde yazılımların bağımlılıkları otomatik olarak kontrol edilerek paketlerin yönetimi kolay bir şekilde gerçekleştirilir. dnf ile rpm komutunu kullanarak paketi ve bağımlılıklarını manuel olarak kurma veya güncelleme ihtiyacını ortadan kalkmıştır. dnf artık RedHat tabanlı güncel Linux dağıtımlarında varsayılan paket yönetim aracı olarak gelmektedir.

Güvenlik Duvarı

Bir güvenlik duvarı tam bir engelleme olarak düşünülse de Linux işletim sistemlerinde güvenlik duvarı aslında bir bilgisayar sistemine veya ağa giren veya çıkan her ağ paketini veya uygulama isteğini kontrol eden bir tür filtredir. Güvenlik duvarları genel anlamda bir ağ katmanı filtresi veya uygulama katmanı filtresidir. Bir ağ katmanı güvenlik duvarı, yalnızca belirli paketlerin sisteme girip çıkmasına izin verir. Bilgisayar tabanlı bir güvenlik duvarı, tek bir makine veya sunucu üzerinde çalışan ve bunları koruyan bir güvenlik duvarıdır. Ev bilgisayarlarında büyük olasılıkla bir güvenlik duvarı vardır. Bu bilgisayar tabanlı bir güvenlik duvarıdır. Bir Linux sisteminde güvenlik duvarı, iptables yardımcı programı ve ilgili çekirdek düzeyindeki bileşenler tarafından yönetilen ana bilgisayar tabanlı, ağ katmanında çalışan yazılımsal güvenlik duvarıdır. iptables ile Linux sunucu üzerinden gelen her ağ paketi için bir dizi kural oluşturulabilir.

Kullanıcı Yönetimi

Linux işletim sistemlerindeki yazılım paketlerini yönetme süreçleri ile ilgili deneyimlerinizi GitBook hesabınızda


oluşturacağınız bir belgede yayınlayıp arkadaşlarınızla paylaşın.

Linux sistem yöneticileri sık sık kullanıcı ekleyip eklenen bu kullanıcıların hesaplarını yönetmek durumunda kalabilirler. Kullanıcı hesapları, işletim sistemine erişen kişiler ile sistem üzerinde çalışan süreçler arasındaki ayrımı sağlar. Sistemde oluşturulmuş kullanıcı grupları, birkaç kullanıcıya aynı anda aynı erişim hakkını vermek amacıyla kullanılabilir. useradd ve usermod komutları kullanılarak bir kullanıcıya özel ana dizinin konumu, çalışacağı ortam (kabuk), varsayılan grup ve belirli kullanıcı kimliği ve grup kimliği değerleri gibi ayarlar atanabilmektedir.

Kullanıcı Hesabı Ekleme

Linux işletim sisteminde her kullanıcının kendi hesabı olması gerekir. Kullanıcının bir hesabı varsa kullanım ihtiyacına ve erişim iznine göre işletim sistemi bileşenlerini özelleştirerek kullanabilir ve kişisel yapılandırma dosyalarını kaydedebileceği bir alana sahip olabilir. Linux sistemlerinin çoğuna kullanıcı hesabı eklemenin çeşitli yolları vardır. Linux işletim sisteminde yeni bir kullanıcı oluşturmanın en kolay yolu useradd komutunu kullanmaktır. Kullanıcı oluşturmadan önce işletim sistemindeki mevcut kullanıcıları ve id’lerini görmek için cat /etc/passwd komutu kullanılabilir.

Kullanıcı Hesaplarını Düzenleme

Kullanıcı hesabı oluşturma seçeneklerine benzer şekilde usermod komutu ile mevcuttaki bir kullanıcının özellikleri de değiştirilebilir.

Kullanıcı Hesaplarını Silme

usermod komutu kullanıcı ayarlarını değiştirmek için ve useradd komutu kullanıcı oluşturmak için kullanıldığı gibi userdel komutu da kullanıcıları kaldırmak için kullanılır. Kullanıcı hesabını kaldırmanın, kullanıcının sistemde bıraktığı dosyalarla ilgili hiçbir şeyi değiştirmediği unutulmamalıdır (-r kullanılarak silinenler hariç). Ancak, dosyalar üzerinde ls -l komutunu çalıştırıldığında, geride kalan dosyaların sahipliği önceki sahibin kullanıcı kimlik numarasına aitmiş gibi görünür. Kullanıcıyı sildikten sonra, geride kalan dosyaları bulmak için kullanıcı kimlik idsi (uid) kullanılmalıdır. Herhangi bir kullanıcı adına atanmayan dosyalar güvenlik riski oluşturduğundan, bu dosyaları bulup gerçek bir kullanıcı hesabına atamak gereklidir.

Kullanıcı Gruplarının Oluşturulması

Root kullanıcısı olarak groupadd komutu ile komut satırından yeni gruplar oluşturulabilir. Ayrıca, yukarıda da belirtildiği gibi, bir kullanıcı hesabı oluşturulduğunda gruplar otomatik olarak oluşturulmaktadır. Linux işletim sisteminde 0’dan 999’a kadar olan grup kimlik numaraları, özel yönetim gruplarına atanmış durumdadır.

Grup Hesaplarının Kullanımı

Birçok dosya birden çok kullanıcıyla paylaşılmak isteniyorsa, grup hesapları kullanılabilir. Bunun için yeni

bir grup oluşturulup dizin ve dosyalar bu grupla ilişkilendirilebilir. Root kullanıcısı, grubun iznine bağlı olarak dosyalara erişebilmeleri için farklı kullanıcıları bu gruba atayabilir.

Log Kayıtları

Linux işletim sistemlerinde kullanıcı hesaplarının yönetilmesi ile ilgili deneyimlerinizi GitBook hesabınızda oluşturacağınız yönerge ile yayınlayıp arkadaşlarınızla paylaşın.

Yazılımsal ya da sistemsel sorunları ve hataları ayıklarken, deneyimli sistem yöneticilerinin ilk yapması gereken hata kayıtlarına bakmak olmalıdır. Log kayıtları genellikle yapılandırma hatalarının, yazılım hatalarının ve güvenlik sorunlarının kaynağına işaret eden önemli ipuçları içerir. Bir arka plan programı çöktüğünde veya başlamayı reddettiğinde ya da ön yüklemeye çalışan bir sistem kronik bir hatayla karşılaştığında bakılması gereken ilk yer log kayıtlarıdır. Sistem log kayıtlarını tutma servisi, sistemde neler olup bittiğini izlemek etmek amacıyla Linux için yapılandırılmış temel hizmetlerden biridir. rsyslog hizmeti (rsyslogd arka plan programı), Linux sisteminde çalışan yazılımlardan günlük mesajlarını toplama ve bu mesajları yerel günlük dosyalarına, aygıtlara veya uzaktaki log kayıtlarının tutulduğu ana bilgisayarlara yönlendirme işlevini sağlar.

Kayıtların Tutulduğu Yer

Linux işletim sistemlerinde log dosyaları dizinine bakıldığında, bazılarının maillog, bazılarının cron.log ve bazılarının çeşitli dağıtım ve arka plan programına özgü isimleri olan birçok log dosyası olduğu görülür. Varsayılan olarak, bu dosyaların çoğu /var/log içinde bulunur, ancak bazı uygulamalar log dosyalarını işletim sisteminde başka yerlere de yazarlar. Log dosyalarının sahipliği ve izin modları için kurallar değişiklik gösterse de log dosyalarının sahibi genellikle root kullanıcısıdır. Log dosyaları, özellikle web, veritabanı ve DNS sunucuları gibi yoğun hizmetlere yönelik uygulamalarda hızla büyüyebilir. Ayrıca kurumlar tarafından verilen internet hizmetinin kimler tarafından ve hangi amaçlarla kullanıldığının kayıt altına alınması zorunludur. Log kayıtlarındaki tüm mesajları görmek veya belirli bir servisin log kayıtlarını görüntülemek için -u seçeneği kullanılabilir. Zaman penceresi, süreç kimliği (PİD) ve hatta belirli bir çalıştırılabilir dosyanın yolu gibi diğer değişkenlere göre de filtre uygulanabilir.

Sistem Kayıt Dosyalarının Yönetimi ve Döndürülmesi (Rotation)

Bir sunucu çalıştırıldığında, log dosyalarının boyutu zamanla artar ve yönetilmesi gereken çok büyük dosyalar haline gelir. Bunun sonucunda sunucudaki disk alanında önemli boyutlarda azalmalar meydana gelebilir. Bu durum, uygulama performansını etkileyebilir ve teknoloji maliyetlerini artırabilir. Log döndürme, otomatik olarak yeni boş log dosyalarının oluşturulup, mevcut log dosyalarının arşivlenmesi ve eski arşivlerin belirli koşullara göre silinmesini sağlar. Logrotate’e ek olarak Ubuntu, ayrı


dosyalar için döndürmeyi yöneten savelog adlı daha basit bir programa sahiptir. Savelog, logrotate’den daha basittir ve bir yapılandırma dosyası kullanmaz. Bazı paketler, logrotate yerine kendi savelog yapılandırmalarını kullanmayı tercih eder.

Ağ Dosya Sistemi

Bir ağ dosya hizmetinin amacı, uzak sistemlerin disklerinde depolanan dosyalara ve dizinlere uygulama sunucularından paylaşımlı erişim sağlamaktır. Kullanıcı uygulamaları, yerel dosyalar için kullandıkları aynı sistem istekleriyle bu dosyaları okuyabilmeli ve yazabilmelidir. Birden fazla makine veya uygulaması aynı anda bir dosyayı değiştirmeye çalışırsa, dosya paylaşım hizmeti ortaya çıkan tüm çakışmaları çözmelidir. Dosya Sistemi (NFS) sayesinde diğer bilgisayarlardaki dosya sistemleri yerel dizin yapısına bağlanarak Linux dosya sisteminin genişletilmesi sağlanır. Bir NFS dosya sunucusu, bir kurumdaki kullanıcılar ve bilgisayarlar arasında büyük miktarda veri paylaşmanın kolay bir yolunu sağlar. NFS veya Ağ Dosya Sistemi, bir istemci/sunucu ortamında etkinleştirilebilen dağıtılmış bir dosya sistemidir. NFS istemci makinelerinin, NFS protokolünü kullanan diğer bir sunucudaki NFS bağlama noktalarına (mount point) erişmesine izin vermek amacıyla NFS yapılandırması kullanılabilir. Dosya sistemlerini NFS kullanarak paylaşmak üzere yapılandırılmış bir Linux sisteminin yöneticisinin, NFS’yi kurmak için aşağıdaki adımları izlemesi yeterli olacaktır.

Bu ünitenin sorularını uygulamada çözŞıklar, doğru cevaplar ve süreli sınav modu AÖF Soru Bankası uygulamasında
BIL211U Ünite 7 Özeti — Unix Sistem Yönetimi | AÖF Soru Bankası