UNIX sistemlerde grup ve kullanıcı yönetimini nasıl sağlanıyor?
UNIX ve UNIX-benzeri sistemler, ucu bucağı olmayan bir dehliz gibi. Her ne kadar felsefe olarak basitliği ve kullanışlılığı temel alsalar da, yine temellerinde yer alan özgürlük sayesinde her gün daha da büyüyorlar; ve bu büyüme 1969 yılından beri devam ediyor! UNIX sistemler ve yıllar içinde gelişen standartlar hakkında bilgi sahibi olduğumuza göre, UNIX sistemlerde grup ve kullanıcı yönetimine giriş yapabiliriz.
Kullanıcı yönetimi
UNIX sistemleri bir otel, grupları bir otel odası, ve kullanıcıları ise otelde kalan kişiler olarak düşünebiliriz. Her kullanıcının kendine ait bir kullanıcı kimlik numarası, kullanıcı adı ve şifresi olmak zorundadır, aksi takdirde odaya giremezler. Tüm kullanıcıların kullanıcı bilgileri, /etc/passwd
dosyasında bulunur.
Bazı UNIX sistemlerde, “passwd” dosyasının içerisinde kullanıcıların hash’lenmiş şifreleri de bulunabilir. Fakat çoğu UNIX sistemde, şifreler /etc/shadow
içerisinde tutulur, ve bu dosyayı sadece kök yetkisine sahip olan kişiler açabilir.
“passwd” dosyasının içerisinde kullanıcıların:
- Grup numarası,
- Kullanıcı numarası,
- Ev dizinleri (home directory),
- Varsayılan kabuk (shell) uygulamaları gibi bilgiler bulunmaktadır.
Bu tarz sistem dosyalarını mümkün olduğunca elle düzenlemekten kaçınmanızı tavsiye ederiz. Programınızda bu bilgileri kullanacaksanız, hedef UNIX sistemin sistem çağrılarını kullanabilirsiniz. Örneğin getpwnam()
çağrısı sayesinde, fonksiyon parametresi olarak kullanıcı adı vererek /etc/passwd
dosyasının içeriğini sistem tarafından derlenmiş bir şekilde alabilirsiniz. getpwnam()
fonksiyonunun Single UNIX Specification’ın 3.versiyonu içerisinde bulunduğunu da belirtelim. getpwnam()
sistem çağrısı hakkında daha fazla bilgi almak için burayı ziyaret edebilirsiniz.
Grup yönetimi
Kullanıcıların ortak erişebileceği dosyalar gibi sistem kaynaklarının olabilmesi çok kullanışlı bir özellik. Bu özelliğe UNIX sistemlerde grup adı veriliyor. Özellikle UNIX işletim sisteminin 70’lerin mainframe’lerinde çoklu kullanım amacıyla geliştirildiğini ve o zamanlar versiyon kontrol sistemlerinin daha olmadığını göz önünde bulundurursak, çok kullanışlı bir özellik olduğunu anlıyoruz.
Çok eski UNIX implementasyonlarında, kullanıcılar sadece tek bir grubun üyesi olabiliyorlardı. BSD ile birlikte kullanıcılar çoklu grup özelliğini kazandı ve bu yaklaşım diğer UNIX sistemler tarafından da kabul gördü. Çoklu grup özelliği daha sonra “POSIX.1-1990” standardına eklendi. Bu standarda göre her grup, aynı kullanıcı yönetiminde olduğu gibi, her grubun özelliği /etc/group
dosyasında tek bir satır olarak saklandı.
“group” dosyasının içerisinde gruplara ait:
- Grup isimleri,
- Grup numaraları (gid)
- Virgülle ayrılan kullanıcı listeleri mevcut.
Kullanıcı bilgileri gibi, grup bilgilerinin de elle düzenlenmesi tavsiye edilmiyor. Grup bilgilerini almak için kullanıcı bilgilerini almaya benzer bir yaklaşımda bulunarak, getgrnam()
çağrısını kullanabilir ve yukarıda bahsettiğimiz grup bilgilerini çekebilirsiniz. getgrnam()
sistem çağrısı hakkında detaylı bilgi için burayı ziyaret edebilirsiniz.
Superuser (üst/kök kullanıcı)
Kök kullanıcının (root veya superuser olarak da bilinir) sistemde özel yetkileri vardır. Bu kullanıcının hesabının kimlik numarası (uid), sıfıra eşittir ve çoğu zaman kullanıcı ismi “root”tur.
Tipik UNIX sistemlerde kök kullanıcı, tüm haklara sahip olduğu için güvenlik doğrulamalarını direkt olarak geçer. Örneğin, sistemdeki herhangi bir dosyaya koşulsuz şartsız erişim sağlar. Veya diğer kullanıcıların çalışan işlemlerine sinyaller göndererek onların durdurulmasına hatta kapanmasına sebep olabilir. Kısacası kök kullanıcıların sistemde yapabilecekleri şeyler neredeyse sınırsızdır ve bu güç aslında sistem yönetiminin sağlanması adına sistem sahibine verilmiştir.
Normal kullanıcının yetki ihtiyacı
Normal bir kullanıcının kök yetkisine ihtiyacı olduğu zaman, kök yetkisini veren programlar devreye giriyor. Özellikle modern UNIX sistemlerde çoğunlukla root hesabına girişlerin devre dışı bırakıldığını ve bir kullanıcı hesabı oluşturmanın zorunlu olduğunu görürüz. Kök yetkisini sağlayan programlar, konfigürasyon dosyalarında yazan grupta olup olmadığımıza göre, veya konfigürasyon dosyalarında yazan kullanıcı adına sahip olup olmadığımıza göre, kök şifresini doğru girmek kaydıyla yetkiyi normal kullanıcıya veriyorlar.
Kök hesabına girişlerin devre dışı bırakılma nedeni ise güvenlik. Çünkü kök hesabının elinde, az önce de bahsettiğimiz gibi, tüm yetkiler bulunuyor. Bu yetkiler, hacker’lar ve kötü amaçlı yazılımlar tarafından da zorlanıyor. Eh, büyük gücün getirdiği büyük sorumluluk olsa gerek!
Bu yazımızda sizlere UNIX sistemlerde kullanıcı ve grup yönetim mekanizmalarını anlattık. Görüşlerinizi yorumlar kısmından paylaşabilir, sorularınızı Technopat Sosyal üzerinden sorabilirsiniz.