Linux sistem yöneticisinin görevleri ve root hesabının kullanımı

Linux, diğer UNIX tabanlı sistemler gibi, aynı anda birden fazla kişi tarafından kullanılmak üzere tasarlanmıştır. Çok kullanıcı özelliği, pek çok kişinin tek bir Linux sisteminde hesap oluşturmasına olanak tanımakla birlikte, kullanıcı verilerinin diğerlerine karşı güvende tutulmasını sağlar. Bir Linux sisteminin tüm kaynaklarını yönetmeye yetkili kişiye ise Linux sistem yöneticisi (system administrator) denir. Bu yazımızda Linux sistem yönetimi (system administration) kavramını ele alarak root yetkisi ve kullanımından bahsedeceğiz.  Bu konudaki devam yazılarında yönetimsel komutlar, konfigürasyon dosyaları, log kayıtları ve donanım yapılandırması gibi konular ela alınacaktır.

Bir Linux sistemini tek başınıza kullansanız bile, sistem yönetimini bilgisayar kullanımından ayrı ele almalısınız. Çoğu yönetimsel işlemleri yapmak ya da sistem için kritik uygulamaları kurup çalıştırmak için, root oturumu açmanız ya da geçici olarak root yetkisi (genellikle sudo komutunu kullanarak) edinmeniz gerekir. Root iznine sahip olmayan normal kullanıcılar bir Linux sistemi için bazı yapılandırma ayarlarını değiştiremez hatta bazı durumlarda göremez bile. Özellikle, kayıtlı şifreler gibi güvenlik ayarları genel kullanıcılardan uzak tutulmaktadır.

Linux sistem yönetimi sistemin bir bütün olarak sürdürmek için diğer kullanıcılardan ayrılmıştır.

Sistem yöneticisinin rolünü diğer kullanıcıların rollerinden ayırmak, bir sistemi daha güvenli tutmaya olanak tanır. Aynı zamanda, genel kullanıcıların internette gezinirken edindikleri ya da bir uygulama kurarken ortaya çıkaracakları zararlı etkilerin sistemi etkilemesini engeller.

Root olmak

Bir Linux sistem yöneticisi, genellikle normal bir kullanıcı olarak oturum açtıktan sonra sadece ihtiyaç duyulduğunda yönetici ayrıcalıklarını kullanılmalıdır. Sistem yöneticisinin sitemi etkilemeyen işlemler için bile root yetkisini kullanması kazara sisteme zarar verebilecek sonuçlara neden olabilir.

Normal bir kullanıcı oturumunda iken root yetkisi (superuser) aşağıdaki yöntemlerle edinilebilir;

  • su komutu: root kullanıcısı olarak bir kabukta (shell) oturum açmak için kullanılır. Komut sonrası root parolası girilmelidir. Normal kullanıcılar için komut satırında görünen “$” simgesi “#” simgesine dönüşür. “#” simgesi ile birlikte verilen tüm komutlar root yetkisi ile verilmiş olur. Tekrar normal kullanıcı kabuğuna dönmek için çıkış yapmak gerekir (exit komutu). Aşağıdaki örnekte, whoami komutu ile sistemdeki hangi kullanıcı olduğumuzu sorgulayıp, root olduktan sonra sorgulamayı yineliyoruz.
su komutu ile root olmak
  • sudo komutu: sudo ile normal bir kullanıcıya root yetkileri verilir. Ancak bu kullanıcı yalnızca bir komutu çalıştırmak için sudo komutunu kullanabilir. İstediği komutu sudo ile çalıştırdıktan sonra kullanıcı normal kabuğa geri döner (yani “$” simgesinde kalır, “#” simgesiyle işlem yapmaz”) ve normal kullanıcı olarak davranmaya devam eder. Ubuntu tabanlı dağıtımlarda genelde varsayılan olarak bir sistemdeki ilk kullanıcı hesabına sudo ayrıcalığı verilir. Fedora veya Red Hat ise varsayılan olarak bu ayrıcalığı vermez, kurulum esnasında bu ayrıcalığın seçilmesi gerekir.
ifconfig komutu ile ağ kartını durdurmak için sudo ile root yetkisi alıyoruz
  • Grafiksel pencereler: Uygulama menülerinden tıklayarak başlatılan çoğu grafiksel uygulama normal bir kullanıcı tarafından başlatılabilir. Ancak bazı araçlar root yetkisine ihtiyaç duyar ve çalıştırılmak istendiğinde bir grafik pencereden root parolası girilmesi istenir.
root kullanıcısının görevleri

Yalnızca root kullanıcısı tarafından yapılabilecek görevler, sistemi bir bütün olarak veya sistemin güvenliğini etkileyen işlemlerdir. Bir sistem yöneticisinin yönetmesi beklenen bu işlemleri şöyle sıralayabiliriz;

  • Dosya sistemi: Linux dosya sistemi sistem kurulumunda kullanıcılar için otomatik olarak hazır hale getirilir. Ancak, kullanıcıların ekstra depolama alanı ihtiyacı ya da kendi HOME dizini haricindeki klasör değişiklikleri için yönetici haklarına gereksinim duyarlar. root kullanıcısı sistemdeki tüm klasörlere erişebilir (diğer kullanıcılara ait olanlara bile). İhtiyaç duyulan değişiklikleri yapar. Gerektiğinde güvenliği sağlamak için tüm dosya sisteminin yedeğini bile alır.
  • Yazılım yükleme: Zararlı yazılımların sisteme yüklenmesi sisteme ciddi zararlar verebileceğinden yazılım yüklemek için root yetkisine sahip olunması gerekir. Sistemi etkileyen bir özelliği yoksa yazılımları sistemdeki tüm kullanıcılar kullanılabilir. Genel kullanıcılar kendi dizinlerine bazı yazılımlar yükleyebilir ve sistem yazılımları hakkındaki bilgileri listeleyebilirler.
  • Kullanıcı hesapları: Yalnızca root kullanıcısı diğer kullanıcı hesaplarını ve grupları ekleyip kaldırabilir.
  • Ağ arabirimleri: Ağ arabirimlerini yapılandırma, bu arabirimleri başlatma ve durdurma işlemleri root kullanıcısı tarafından yapılır. Ancak günümüzde (mobilitenin artışıyla birlikte) pek çok dağıtım özellikle wi-fi ağının başlatılması ve durdurulması gibi işlemler için genel kullanıcılara da izin vermektedir. Bunun dışındaki optimizasyonlar için root yetkisine ihtiyaç duyulur.
  • Sunucular: Web sunucuları, dosya sunucuları, alan adı sunucuları, posta sunucuları ve daha birçok sunucuyu yapılandırmak, bu hizmetleri başlatıp durdurmak gibi işlemler root ayrıcalıkları gerektirir.
  • Güvenlik özellikleri: Güvenlik duvarları ve kullanıcı erişim listeleri gibi güvenlik özelliklerini ayarlama işlemleri genellikle root yetkisi ile yapılır. Ayrıca, hizmetlerin nasıl kullanıldığını izlemek ve sunucu kaynaklarının tükenmediğinden veya kötüye kullanılmadığından emin olma işi de root kullanıcısı tarafından yapılmalıdır.

Sistem yönetimine bazı grafik yönetim araçlarını kullanarak başlamak uygun olabilir.

Grafiksel yönetim araçları

İlk Linux sistemlerinde, sistem yönetimi işlemleri komut satırından yapılırdı. Linux’un yaygınlaşması ile hem grafik hem de komut satırı arabirimleri ile yönetimsel görevler için ara yüzler sunulmaya başlandı.

İlk grafiksel sistem yönetim araçlarından bazıları Red Hat tarafından sunulmuştur. Red Hat’ın bu GUI (Graphical User Interface, Grafiksel Kullanıcı Arayüzü) araçlarını başlatan komutlar genellikle “system-config” ile başlar. Bir yazıcıyı yapılandırma veya tarih, saat ve saat dilimini ayarlama gibi temel yönetim görevlerini yerine getirmek için kullanabilirler.

Grafiksel yönetim araçlarının bazıları ilk defa Red Hat ile ortaya çıkmıştır.

Bununla birlikte, kurumsal veri merkezlerinde Linux’u daha geniş çapta ve etkin bir şekilde kullanabilmek için, bulut projeleri, kimlik yönetimi ve diğer hizmetleri yönetirken tarayıcı tabanlı arayüzler kullanılmaktadır. Bu, daha önce Microsoft Windows sistemlerini veri merkezlerinde kullanmış olan kuruluşlarda Linux’un benimsenmesini teşvik etmeye yardımcı olmaktadır.

system-config araçlarını kullanma

Çoğunlukla Red Hat Enterprise Linux (RHEL) sistemlerinde (ve bazıları Fedora’da) yer alan “system-config” araçları uygulama menülerinden ve komut satırında başlatılabilir. Bu araçların kullanımı için root yetkileri gerekir. Eğer normal bir kullanıcı olarak grafik arayüzden çalıştırdıysanız açılan pencereye, komut satırından başlattıysanız komut satırına root parolası girmeniz istenecektir.

RHEL ve bir kısmı Fedora’da yer alan bu araçlardan bazılarına aşağıda yer veriyoruz;

  • Domain Name System (system-config-bind) – Fedora
  • HTTP (system-config-httpd) – Fedora
  • NFS (system-config-nfs)- Fedora
  • Root Password (system-config-rootpassword) – Fedora
  • Samba NFS (system-config-samba) – Fedora
  • Services (system-config-services) – Fedora ve RHEL
  • Authentication (authconfig-gtk) – Fedora ve RHEL
  • Date & Time (system-config-date) – Fedora ve RHEL
  • Firewall (system-config-firewall) – Fedora ve RHEL
  • Language (system-config-language) – Fedora ve RHEL
  • Printing (system-config-printer) – Fedora ve RHEL
  • SELinux Management (policycoreutils-gui) – Fedora ve RHEL
  • Users & Groups (system-config-users) – Fedora ve RHEL

root kullanıcı hesabını kullanmak

Her Linux sisteminde en az bir yönetici hesabı (root hesabı) bulunur. Bunun dışında yönetici ayrıcalıkları atanmış bir veya birden çok normal kullanıcı (yani bir sisteme giriş adı -login name- olan) da bulunabilir. Bu yönetici ayrıcalıkları verilen kullanıcılar ise çoğu durumda Linux sistem yönetimi için root yetkilerini yukarıda anlattığımız şekillerde kullanır.

root kullanıcısı Linux sisteminin kontrolüne tamamen sahiptir. Bu kullanıcı tüm dosya ve sistem kaynaklarına erişebildiği gibi tüm uygulamaları çalıştırmaya da yetkilidir. Microsoft Windows sistemlerindeki “Administrator” kullanıcısı gibi düşünülebilir.

Çoğu Linux sistemi kurulurken (bazı sistemler hariç) bir root kullanıcı parolası atanması istenir. Bu parola hiçbir şekilde unutulmamalı ve korunmalıdır.

root kullanıcısı için tanımlanan home dizini diğer kullanıcılardan farklı olarak /root klasörüdür. Diğer kullanıcılara benzer olarak ise root kullanıcısına ait bazı bilgiler de /etc/passwd ve /etc/shadow dosyasında saklanır. Kullanıcı yönetimi konusundaki yazımızda bu dosyaların içeriğini ve özelliklerini anlatmıştık.

root yetkisi kullanarak komut satırında işlem yaparken (sudo ya da su komutu ile) dikkatli olunması gerekir. Zira yetkinin büyük olması sisteme daha büyük zararlar verilmesine neden olabilir. Bu nedenle yönetimsel bir işlem sonrası exit komutu ile root oturumunu terk etmek faydalı olabilir.

Ubuntu dağıtımlarında varsayılan olarak root kullanıcı hesabı ile ilişkilendirilen bir root parolası yoktur. Yani su komutunu vererek kalıcı bir şekilde root olamazsınız. Ancak yönetimsel işlemlerde sudo komutu kullanarak root yetkilerinizi kullanabilirsiniz. Ubuntu tarafından böyle bir güvenlik önlemi uygulanmaktadır.

su komutu 

su komutu ile bir terminal emülatörü (öykünücü) ya da sanal konsolda nasıl root olunacağını yukarıda anlatmıştık. Normal kullanıcıyı ifade eden “$” simgesi, su komutu ve parola sonrası “#” simgesine dönüşür ve tüm yetkilere sahip kullanıcı ortaya çıkar.

Bununla birlikte, su komutu bu şekilde yalnız kullanıldığında, su komutunu veren kullanıcının ortamında oturum açılır, root kullanıcısın çevresel ortamında değil.

Aşağıdaki örnekte su komutu sonrasında pwd komutu verilerek hangi dizinde olduğumuz sorgulandığında direk taylan kullanıcısına ait HOME dizininde kabuk oturumu açıldığı görülmektedir. Böyle durumlarda var olduğunu bildiğiniz bir komut çalıştırdığınızda “komut bulunamadı” benzeri bir hata alma ihtimaliniz doğabilir.

su komutunun tire (-) ile kullanımı

Bu sorunu çözmek için su komutunu “tire” (-) seçeneğiyle birlikte kullanabiliriz. Yukarıdaki örnekte olduğu gibi, root kullanıcısına ait ortamda kabuk başlar.

su komutundan sonra gelen “tire” (-) seçeneğinden sonra bir başka kullanıcı adı yazıldığında, oturum o kullanıcı hesabına geçer. Aşağıdaki örnekte görüldüğü öykünücü ekranında taylan kullanıcısından salih adlı kullanıcıya geçiş yaptık. Burada salih kullanıcısının parolasının girilmesi gerekmektedir.

su komutu ile başka bir kullanıcıya geçiş yapılabilir

Tekrar bir önceki kullanıcı hesabına geçmek için exit komutu kullanılabilir.

sudo ile yönetimsel erişim

sudo komutu kullanılarak her bir komut için bir defaya mahsus yönetim yetkisi ile program ya da hizmet başlatılabileceğinden yukarıda bahsetmiştik.

Bir öykünücüde sudo komutu ile işlem yapıldığında, varsayılan olarak aynı terminal ekranında 5 dakika boyunca sudo komutuyla birlikte verilen komutlar için şifre istenmez. Bu süre aşağıda detayını vereceğimiz /etc/sudoers dosyasında “passwd_timeout” değeri ile ayarlanabilir.

Bazı kullanıcılara, kullanacakları belirli program ve komutlar için root şifresi verilmeden yönetim ayrıcalığı tanınabilir. “sudoers” olanağı (sudoers facility) olarak tanımlayabileceğimiz bu özellik bu işlemi yapmanın en yaygın yöntemidir. Bu ayrıcalıkla şu işlemler yapılabilir;

  • sudo komutunu kullanarak belirli komutları çalıştırma
  • belirli komut setlerini çalıştırırken root ayrıcalığı verme
  • root parolasını vermeden, kullanıcıların kendi parolalarını kullanarak ayrıcalıklı işlemler yapmalarını sağlama
  • kullanıcıların şifre girmeden sudo komutunu kullanmalarını sağlama
  • hangi kullanıcıların sistemde yönetim komutlarını çalıştırdıklarını takip etme (günlük kaydı)

sudoers olanağı ile verilebilecek bu tam ya da sınırlı yetkiler /etc/sudoers dosyasında saklanır.

etc/sudoers dosyası

Dosya içeriğine bir göz atalım;

/etc/sudoers dosyası normal metin editörleriyle düzenlenmemelidir. Bu dosyanın sadece visudo adlı komutla vi editörü ile düzenlenmesi gerekir. “visudo” komutu verilince direkt sudoers dosyası açılır. Tabi dosyanın açılması root iznine bağlıdır.

Bizim sistemimizdeki salih adlı kullanıcıya /etc/sudoers dosyası üzerinden bazı yetkiler tanımlayalım;

yukarıdaki satır ile salih adlı kullanıcı tüm root ayrıcalıklarına sahip olmuş olur. Bu ayrıcalıkları kullanırken kendi şifresini kullanır, root şifresini girmek zorunda kalmaz. Eğer kullanıcının şifre girmesini de istemiyorsak;

böylece kullanıcı root yetkilerini kullanırken şifre de girmek zorunda kalmaz.

/etc/sudoers dosyası, bireysel kullanıcıların ve grupların oldukça esnek bir şekilde uygulamaları kullanmalarına izin vermek için kolaylıklar sunar. sudoers dosyası ve sudo komutu ile ilgili daha ayrıntılı bilgiyi sudoers ve sudo man sayfalarından bulabilirsiniz. Oldukça farklı ve detaylı kullanım seçenekleri göreceksiniz.

Linux sistem yönetimi konusuna yönetimsel komutlar, konfigürasyon dosyaları, log kayıtları ve donanım yapılandırması ile devam edeceğiz.

BİR CEVAP BIRAK