BİL211U-UNIX SİSTEM YÖNETİMİ
Ünite 6: Linux İşletim Sisteminde Temel Yönetsel Bileşenler
Giriş
Linux, diğer UNIX tabanlı sistemler gibi, aynı anda birden fazla kişi tarafından kullanılmak üzere tasarlanmıştır. Çoklu görev özelliği ile birçok kişi bilgisayarda aynı anda birçok programı çalıştırabilmektedir. Gelişmiş ağ protokolleri ve uygulamaları, Linux işletim sisteminin yeteneklerini tüm dünyadaki İnternet kullanıcıları ve bilgisayarlara açmasını mümkün kılar. Bir Linux sisteminin tüm kaynaklarını yönetmek için atanan kişiye sistem yöneticisi denir. Linux, bilgi işlem teknolojisinde önemli bir yere sahiptir. Web sunucuları, cep telefonları yazılımları, kişisel bilgisayarlar, süper bilgisayarlar ve buluttaki sunucuların çoğu Linux tarafından desteklenmektedir. Linux sistem yönetimi, sürdürülebilir ve nitelikli bir bilgi ve iletişim hizmeti amaçlayan kurum ve kuruluşlar için önemli bir süreçtir. Bu nedenle, bilgi ve iletişim teknolojilerinin hızla geliştiği günümüz dünyasında alanında yetkin Linux sistem yöneticilerine ihtiyaç her geçen gün artmaktadır. Bununla birlikte her kurumun bilgi ve iletişim teknolojileri kapsamında ihtiyaçları değişkenlik göstereceğinden Linux sistem yöneticisinin rol tanımları kurumdan kuruma farklılık gösterebilmektedir.
Linux Sistem Yönetiminde Temel Yönetsel Bileşenler
Linux sistem yönetimi genel anlamda Linux işletim sistemini kurma, yapılandırma ve yönetme sürecidir. Sistem yönetimi süreci kullanıcı hesabı oluşturma, donanım ekleme, otomatik görevler oluşturma, yedekleme ve yapılandırma dosyalarını güncelleme gibi işlemlerden oluşmaktadır. Bu bölümde, sistem yöneticilerinin gerçekleştirmesi beklenen bazı ana görevler açıklanacaktır. Bu görevlerin bir ekip tarafından yapılması önerilmekle birlikte bir sistem yöneticisi tarafından denetlenmesi son derece önemlidir.
Kullanıcı Hesap Yönetimi
Yönetici görevlerinin çoğunu gerçekleştirmek için, root kullanıcı (süper kullanıcı olarak da adlandırılır) olarak oturum açılmalı veya geçici olarak root izni alınmalıdır (genellikle sudo komutunu kullanarak). Root iznine sahip olmayan normal kullanıcılar, Linux işletim sisteminde bazı yapılandırma ayarlarını değiştiremez ve hatta bazı durumlarda bu ayarları göremez. Bu sayede özellikle kaydedilmiş parolalar ya da kritik öneme sahip yapılandırma dosyaları gibi güvenliğin önemli olduğu bileşenlere genel ya da yetkisiz erişim engellenmiş olur. Kullanıcı hesapları bağlamında sistem yöneticileri yeni kullanıcı hesapları oluşturma, oluşturulan bu kullanıcının yetki ve erişimlerini ayarlama (örneğin süper kullanıcı olacak mı, hangi dosya ve klasörlere hangi yetkiyle erişecek gibi) etkin olmayan kullanıcı hesaplarını kaldırma ve arada ortaya çıkan hesapla ilgili tüm sorunları (örneğin, unutulan parolalar) eylemlerini gerçekleştirirler. Hesapları fiilen ekleme ve kaldırma işlemi, genellikle bir yapılandırma yönetim sistemi veya merkezî dizin hizmeti tarafından otomatikleştirilebilir.
Donanım Bileşeni Ekleme
Veri merkezlerinde sanallaştırma uygulamaları ve bulut ortamında sunucu hizmetlerinin artması ile her ne kadar gittikçe azalan bir süreç olsa da Linux işletim sistemlerinin üzerinde çalıştığı donanıma disk ekleme, arızalı diski değiştirme ya da grafik işlemci (GPU) takma ve bu aygıtları sürücü yükleyerek Linux işletim sistemine tanıtma gibi doğrudan donanım ile ilgili eylemler de sistem yöneticileri tarafından gerçekleştirilmektedir.
Görevleri Otomatikleştirme
Tekrarlayan ve zaman alan görevleri otomatikleştirmek için gerekli araçları kullanmak veri merkezlerinde verimliliği artırıp, kullanıcıların neden olduğu hata olasılıklarını azaltır ve değişen gereksinimlere hızla yanıt verme yeteneğini geliştirir. Yöneticiler, sistemlerin sorunsuz çalışmasını sağlamak için gereken el emeği miktarını azaltmaya çalışır. Örneğin belirli zamanlarda çalışması gereken arka plan işlerini otomatikleştirme ve belirli zaman sonra belirli boyut ve türdeki dosyaların (örneğin kullanıcılar tarafından yüklenmiş ve belirli bir süre kullanılmayan video ve ses dosyaları gibi) silinmesi ya da yedeklerinin alınması ve hatta sanallaştırma yazılımı ile işletim sisteminin tamamının gecelik yedeğinin alınmasına ek olarak önemli dosya ve klasörlerin yedeklerinin alınması gibi işlemleri otomatize etmek verimlilik ve sürdürülebilirlik açısından son derece önemlidir. Bu yüzden komut satırı dilleri ve otomasyon araçları hakkında bilgi sahibi olma bir sistem yöneticisi için olması gereken niteliklerin başında gelmektedir.
Yedekleme ve Geri Yükleme
Verileri yedeklemek ve gerektiğinde başarıyla geri yüklemek sistem yöneticileri için önemli görevlerdendir. Yedeklemeler zaman alıcı ve sıkıcı olsa da, canlı ortamlardaki sistem çökmelerinin giderek artması bu işin göz ardı edilmesine izin vermeyecek kadar önemini göstermektedir. İşletim sistemleri ve bazı bireysel yazılım paketleri, yedeklemeleri kolaylaştırmak için yararlı ve kullanımı kolay araçlar ve teknikler sağlar. Yedeklemeler düzenli bir programlama ile yürütülmeli ve bunların düzgün çalıştıklarından emin olmak için geri yükleme işlemleri periyodik olarak test edilmelidir.
Yazılım Yükleme ve Güncelleme
Kurulacak yazılımlar, sık bir şekilde farklı işletim sistemlerinde kurularak test edilmeli yapılandırılmalıdır. Yamalar ve güvenlik güncellemeleri yayınlandıkça, canlı ortamların kararlılığını tehlikeye atmadan bunlar test edilmeli, gözden geçirilmeli ve canlı ortama aktarılmalıdır. Bu işlem için test ortamları (staging environments) kurulmalı ve https://vulmon.com/ gibi sitelerde işletim sisteminde kullanılan ve kullanılması planlanan yazılım paketleri için güvenlik zaafiyetleri rutin bir şekilde kontrol edilmelidir.
Sistemi İzleme
Sistem yöneticileri, sorunları tespit ederek ve genel hatalar oluşmadan önce gerekli tedbirleri alarak (pro aktif izleme)
bu tür sorunların engellenmesini sağlayabilir. Bazı izleme görevleri arasında, web hizmetlerinin hızlı ve doğru yanıt vermesinden emin olma, günlük dosyalarını toplama ve analiz etme ve disk alanını kontrol etme gibi sunucu kaynaklarının kullanılabilirliğini düzenli bir şekilde takip etme bulunmaktadır. İzleme görevinin gerçekleştirilmesinde sistem yöneticileri tarafından Prometheus, Grafana, Nagios Core ve Zabbix gibi bir dizi açık kaynak ve Solarwinds, Nagios XI ve DataDog gibi ticari lisansa sahip izleme yazılımları kullanılabilir.
Sorun Tespiti
Birbirlerine ağ üzerinden bağlı sistemlerde beklenmedik ve önemli hatalar meydana gelip bilgi ve iletişim teknolojilerine erişim hizmetlerinde aksama veya kesintiler meydana gelebilir. Bu tür durumlarda sorunun kaynağını bulmak çoğu zaman onu çözmekten daha zordur. Sorunları teşhis edip gerektiğinde konu uzmanlarından destek alarak çözmek sistem yöneticilerinin önemli görevleri arasındadır.
Belgelemek
Bir sorunu çözmek, genellikle onu belgelemek ve raporlamak için zaman ayırmaktan daha hızlıdır ve bir kuruluşta çalışan son kullanıcılar genellikle istek ve şikâyetlerini iletmek için telefon gibi hızlı iletişim kanallarını tercih ederler. Son kullanıcılar ayrıca, bir destek isteği açmak yerine şikâyetlerini herkese açık ortamlarda da dile getirirler. Bu durumun önüne geçmek ve gelen istek ve şikâyetleri belgelemek için Redmine ve Jira gibi iş takip sistemlerinin son kullanıcıya kullandırılması oldukça önemlidir.
Güvenliği Dikkatli Bir Şekilde İzleme
Sistem yöneticileri, ağa bağlı sistemlerin savunmasında ilk katmanda yer alır. Sunuculara yetkisiz erişimleri engellemek amacıyla için bir dizi güvenlik politikası uygulanmalı ve süreçler oluşturulmalıdır. Ssh erişiminin yalnızca kurumsal ağdan ve belirli kullanıcılar tarafından gerçekleştirilmesi ya da standart portlar olarak ifade edilen 80 ve 443 TCP portları dışındaki portların kapalı olması ve sunucuların güvenlik duvarı ve yük dengeleyici arkasında yapılandırılması gibi tedbirler bu duruma örnek verilebilir.
Performans Ayarı
UNIX tabanlı işletim sistemleri, akla gelebilecek her türlü bilgi işlem görevine çok uygun olan genel amaçlı işletim sistemleridir. Yöneticiler, kullanıcıların ihtiyaçlarına, mevcut altyapıya ve sistemlerin sağladığı hizmetlere göre optimum performans için sistemleri ayarlayabilirler. Örneğin bir veritabanı sunucusunda oluşan darboğazın (bottleneck) ya da NFS diske yazma hızındaki yavaşlığın nedenlerini çözerek sistemlerin performansını artırmak ya da yoğun kullanıcı trafiğinin oluştuğu zamanlarda Kubernetes ya da Docker gibi konteyner sistemleri ile yatayda hızlı bir şekilde büyüyerek sistemin alacağı yük kapasitesini artırmak gibi tedbirler sistem yöneticisinin performans bağlamında başvuracağı çözümler arasındadır.
Ticari Dağıtıcılarla Çalışma
Çoğu sistem, bilgi işlem alt yapılarıyla ilgili çeşitli yardımcı hizmetler ve ürünler sağlamak için üçüncü taraflardan destek almaktadır. Bu sağlayıcılar arasında yazılım geliştiriciler, bulut altyapısı sağlayıcıları, başka veri merkezlerinde barındırılan bir hizmet olarak yazılım (SaaS), yardım masası destek personeli, danışmanlar, yükleniciler, güvenlik uzmanları ve platform veya altyapı hizmet sağlayıcıları yer alabilir. Örneğin güvenlik duvarı ya da yük dengeleyici sistemler gibi lisanslı kullanılan ürünlerde ortaya çıkan sorunlar için sistem yöneticilerinin bu dağıtıcılarla dirsek teması hâlinde çalışması gerekebilir. Sistem yöneticileri, ticari dağıtıcıları seçmek, hizmet ve mal alımı süreçlerinde sözleşmeler ve teknik şartname hazırlanmasında yardımcı bir rol üstlenmektedir.
Erişim Yönetimi
Bilgi işlem düzeyinde erişim yönetimi aktif bir araştırma alanı olmakla birlikte uzun zamandır işletim sistemi tasarımının en önemli konularından biri olmuştur. Bununla birlikte, geleneksel sistem UNIX ve Linux erişim standardı birçok kurum için temel düzeyde yeterli gelmektedir. Linux işletim sistemindeki standart izinler basit ve nettir ve birçok farklı dosya sistemi ve dosya paylaşım protokolündeki dosyaları ve dosya paylaşımlarını yönetmek için kullanılabilirler.
Standard UNIX Erişim Kontrolü
Standard UNIX erişim kontrol modeli, uzunca bir süredir büyük ölçüde değişmeden varlığını devam ettirmektedir. Birkaç geliştirmeyle birlikte Linux işletim sistemi dağıtımlarında varsayılan olarak gelmektedir.
Dosya Sistemi Erişim Kontrolü
Komut satırı ortamında bir dosyaya veya alt klasöre erişmek için sık olarak bir dizin yapısını kullanmak gerekecektir. Örneğin, belirli bir dizindeki bir dosya incelenmek istendiğinde ilgili dizinin konumunu da içeren bir komut kullanılmak istenebilir. Linux işletim sisteminde oturum açıldığında bir kabuk (shell) başlatılır ve oturumu açan kullanıcının ev dizinine yönlendirilirsiniz (/home/lmsuser gibi). Kullanıcının içinde bulunduğu dizin çalışma dizini ya da geçerli dizin olarak bilinir. Linux işletim sistemlerinde sıkça yapılan işlemlerden biri çalışma dizininden başka dizinlere geçiş yapmaktır. Bu işlem dizin değiştirme (cd-change directory) olarak adlandırılmaktadır. Yol (path) ya da yol adı (pathname) dizin yapısı içinde bir dosya ya da dizine nasıl referansta bulunulduğu anlamına gelmektedir.
Root Hesabı
Root hesabı, UNIX’in her şeyi yapabilen yönetici kullanıcısıdır. Gerçek kullanıcı adı “root” olmasına rağmen, süper kullanıcı hesabı olarak da bilinir. Hiçbir şey, bu hesaptaki kullanıcı adını değiştirmenizi veya başka “süper kullanıcı” hesapları oluşturmanızı engellemez. Fakat bu tür değişiklikler, sistem güvenliğinin istenmeden ihlal edilmesine yol açabilir. Ayrıca, sistemin
sürdürülebilirliği açısından bu tür işlemleri gerçekleştirmek top, htop ve iftop’tur. iftop dışındaki araçlar disk, bellek, diğer sistem yöneticilerinin müdahale etmesi gereken işlemci ve süreçleri izleme amacıyla kullanılırken iftop bant işlemlerde kafa karışıklığına neden olacaktır. genişliği ile ilgili istatistiklerin görüntülenmesini sağlayarak ağ süreçlerine hızlı bir genel bakış sağlar. iftop su: Kullanıcının Yerine Geçme komutu ile makinede istenilen özel bir ağ cihazı (örneğin 1. Root hesaba erişmenin sonuçlar bağlamında en sorunsuz ağ kartı) üzerindeki ağ trafiği izlenebileceği gibi ağda yolu su komutunu kullanmaktır. Sistemde root kullanıcısı soruna hangi yazılımın neden olduğu da olarak terminalden, grafik arayüzden ya da ağ ortamından belirlenebilmektedir. girişe izin verilmiş ve root kullanıcısı için parola belirlenmişse normal kullanıcı olarak giriş yapıldıktan sonra su komutu ile root kullanıcısı yerine geçebilir. Herhangi bir parametre olmadan kullanıldığında su komutu root parolasını sorar ve ardından root kullanıcısı ile bir kabuk başlatılır. Root ayrıcalıkları terminalde exit yazılıp enter tuşuna basılana ya da Ctrl+D tuş kombinasyonu kullanılana kadar aktif kalır. su komutu, root olarak çalıştırılan komutları kaydetmez ancak hangi kullanıcı hesabının ne zaman root kullanıcısı olduğu kayıt dosyalarına işlenir.
sudo: Sınırlı Süper Kullanıcı
Gelişmiş erişim kontrol sistemleri kullanılmadan ve bir kullanıcının sistemde yetkili kullanıcı ile gerçekleştirilebilecek işlemler için yetki vermeden yazılım yükleme ve yedekleme gibi yönetsel işlemler gerçekleştirilemez. Özellikle root hesabı birkaç yönetici tarafından kullanılıyorsa, bu hesabı kimin kullandığı ve bununla ne yaptıklarını kayıt altına alma imkânsız bir hâl alır.
Süreç Yönetimi
Süreç, çalışan bir programı temsil eder. Bellek, işlemci süresi ve giriş çıkış (I/O) kaynaklarının yönetilip izlenebildiği bir tür özettir. Mümkün olduğu kadar çok işin, çekirdek tarafından özel olarak ele alınmak yerine, süreçler bağlamında yapılması Unix felsefesinin bir özelliğidir. Sistemde bir tane nano komutu olmasına rağmen bu komut 8 farklı kullanıcı tarafından çalıştırıldığında bu komut sistemde 8 farklı çalışan süreç olarak görünecektir. Linux işletim sistemlerinde süreçler süreç ID’ler (PID) ile tanımlanmaktadır. Her PID mevcut sistem bağlamında eşsizdir. Bir başka deyişle herhangi bir süreç devam ederken hiçbir başka süreç devam eden sürecin id’sini alamaz. Süreç sonlandığında başka bir süreç bu id’yi yeniden kullanabilir.
Süreçleri Listeleme
Sistemde çalışan süreçleri listelemede ps komutu kullanılan en eski ve yaygın komuttur. Bu komuta ek olarak top komutu da süreçleri listelemede biraz daha grafik arayüze yakın bir görünüm sunmakla birlikte süreçlerin durumunu değiştirmek için de kullanılır. top komutuna benzer olarak htop komutu da hem süreçler hem de swap, bellek ve işlemci hakkında bilgiler sağlayan ve süreçleri yönetme imkânı sunan başka bir araçtır. top komutu en fazla sistem kaynağını tüketen işlemlere odaklanırken htop, çalışan tüm süreçleri gösterir. Ubuntu işletim sisteminde varsayılan olarak gelmekle birlikte diğer dağıtımlarda yüklenmesi gerekebilir. Bu kategorideki araçlardan başlıcaları btop,