Linux kullanıcı yönetimi için gereken komutlar ve kullanımı

Linux işletim sisteminin güvenliğinin çekirdeği kullanıcı hesaplarıdır. Bir Linux sistemine erişen her kullanıcı, benzersiz bir kullanıcı hesabına sahip olmalıdır. Kullanıcıların sistemdeki dosyalar ve programlara ulaşması için gereken izinler, oturum açtıkları kullanıcı hesapları ile ilişkilidir. Sistem güvenliğini sağlamak için kullanıcı hesaplarını doğru yönetmek oldukça önemli. Bu yazımızda Linux kullanıcı yönetimi konusunu ele alıyoruz.

Kullanıcı izinleri, bir hesap oluşturulurken atanan kullanıcı kimliği (user ID, UID) kullanılarak takip edilir. UID, her kullanıcı için benzersiz, sayısal bir değerdir. Elbette Linux sistemine giriş yaparken kullanıcı kimliği yerine “login name” olarak adlandırılan oturum açma adı kullanılır.

Linux sistemi, sistemdeki kullanıcı hesaplarını izlemek ve yönetmek için özel dosyalar ve araçlar kullanır. Kullanıcı yönetimini sağlamanın ilk adımı, kullanıcı hesap bilgilerinin tutulduğu /etc/passwd dosyasını bilmektir.

/etc/passwd dosyası

Linux sistemi, oturum açma adına karşılık gelen UID değerini eşleştirmek için özel bir dosya kullanır. Bu dosya /etc/passwd dosyasıdır ve kullanıcı hakkında bazı bilgiler de içerir. Tipik bir /etc/passwd dosyası şöyle görünür;

Her bir satır, her bir kullanıcı için gerekli bilgileri içerir. Bu bilgiler “:” (iki nokta) işareti ile ayrılarak şu şekilde sıralanır;

/etc/passwd dosyasındaki kullanıcı bilgilerinin yapısı

Bizim örneğini verdiğimiz /etc/passwd dosyası içerisinde aslında root ve taylan adlı kullanıcılar haricinde başka kullanıcı bulunmamakta. Bazı servislerin (sistem hesapları) kullanıcı gibi tanımlanmasının sebebi, bu servislerin ihtiyaçları olan kaynaklara erişebilmesi için gerekli izinleri verebilmektir.

Linux dağıtımları genelde gerçek kullanıcılara ait UID değerlerini 500 ya da 1000 ile başlatır. Bizim örneğimizde taylan kullanıcısına ait UID değeri 1002 olarak tanımlanmış.

Bir Linux sisteminin en önemli kullanıcı hesabı olan root ise genelde UID 0 değerini alır. root kullanıcı hesabı Linux’un administrator olarak bilinen sistem yöneticisi hesabı olup sistemin tüm kaynaklarına erişim yetkisi vardır.

Yukarıda bahsettiğimiz bazı servislerin kullandığı sistem hesaplarının root hesabından ayrı tutulma sebebi, bu servislerden birinin yetkisiz bir kullanıcı tarafından ele geçirilmesi halinde bile tüm sisteme erişememesidir.

Kullanıcı şifreleri /etc/passwd dosyası içerisinde “x” olarak belirtilmiştir. Bu tüm kullanıcıların şifrelerinin aynı ya da “x” olduğu anlamına gelmez.

Linux’un eski zamanlarında (benim Linux ile tanıştığım 1999 yılından bile daha eski yıllarda), /etc/passwd dosyası kullanıcı şifrelerinin kriptolu hallerini “x” olarak belirtilen alanda saklıyordu. Pek çok servis ve programın /etc/passwd dosyasına erişmesi gerektiğinden, kullanıcı parolalarının bu alanda bulunması güvenlik açısından tehdit oluşturmaya başladı. Çünkü art niyetli kullanıcılar bu dosyadaki verilere ait kriptolu bilgileri kırarak kullanabilirlerdi. Bu durum Linux geliştiricilerini güvenlik politikaları konusunda değişiklik yapmaya yönlendirdi ve ortaya /etc/shadow dosyası çıktı.

/etc/shadow dosyası

Çoğu Linux sistemi kullanıcı parolalarını “shadow -gölge- dosyası” olarak adlandırılan /etc/shadow dosyasında tutar. Bu dosyaya sadece login için gerekli olan bazı servisler gibi özel programların ve elbette root kullanıcısının giriş izni vardır.

Bir /etc/shadow dosyasındaki kullanıcı bilgileri aşağıdaki gibi görünür;

Oturum açma adı dışında sırasıyla şu bilgiler saklanır; kriptolu parola, 01/01/1970’den şifrenin son değiştiği zamana gün sayısı, parolanın değiştirilebileceği minimum gün sayısı, parolanın mutlaka değiştirilmiş olması gereken gün sayısı, parolayı değişmesi için önceden kullanıcının uyarılacağı gün sayısı, hesap askıya alınmadan önce parolanın süresinin dolacağı gün sayısı, hesabın askıya alındığı zamandan itibaren gün sayısı.

/etc/shadow dosyasındaki bilgiler aslında kullanıcı yönetimi ve parola bilgileri açısından oldukça kolaylık sağlayan bilgiler içerir. Bir sistem yöneticisi buradaki bilgileri kullanarak kullanıcılara parolalarını değiştirmeleri ya da diğer parola gereksinimleri hakkında uyarılarda bulunabilir.

Yeni kullanıcı ekleme

Bir Linux sistemine yeni bir kullanıcı eklemek için kullanılan komut useradd komutu’dur. Bu komutu kullanarak sisteme yeni bir kullanıcı tanımlandığı gibi kullanıcı için kolaylıkla HOME dizininin oluşturulmasını da sağlar.

Yeni bir kullanıcı eklemeden önce /home klasörünün içerisinde hangi kullanıcılara ait klasörler olduğuna bakalım ve tail komutu ile /etc/passwd dosyasındaki son dört kullanıcıyı görüntüleyelim;

Görüldüğü gibi sadece taylan adlı kullanıcı var.

Şimdi yeni bir kullanıcı ekleyelim;

useradd komutu ile yeni kullanıcı ekleme

-m” parametresini eklememizin nedeni HOME klasörünün de oluşturmasını sağlamak, “-s” parametresi ile de kullanıcı için shell olarak bash kabuğunu atadık. Kabuk bilgisini girmesek de sistem varsayılan olarak bash kabuğunu atayacaktı. /home dizininde “salih” adlı bir klasör oluştuğunu görüyoruz. /etc/passwd dosyasında da kullanıcıya ait bilgileri görüyoruz.

Şimdi de salih kullanıcısına şifre tanımlayacağız; ama önce var olan kullanıcı bilgilerini düzenleyebileceğimiz komutun usermod olduğunu belirtelim. usermod komutunu kullanarak var olan bir kullanıcının login adını, UID bilgisini, kabuğunu, şifresini ve daha birçok bilgiyi değiştirebiliriz. Şifre atayalım;

usermod komutu ile kullanıcıya şifre atadık

-p” parametresi ile şifre ataması yaptık. Kullanıcı bu şifreyi kullanarak sisteme erişebilir. /etc/shadow dosyasında da şifrenin atandığını görebilirsiniz. Shadow dosyası kriptosuz olarak gösterdi bilgiyi, çünkü şifreyi atayan root yetkili kullanıcısı aynı ekranda şifreyi görüntülüyor. Zaten şifreyi girerken de ekranda görünüyordu.

Linux sistemlerinde bir işi yapmanın birden çok yöntemi var. Kullanıcı şifresi tanımlarken şu yolları da kullanabilirdik;

  • kullanıcıyı ilk kez tanımlarken -p parametresi ile birlikte şifre atayabilir (useradd -p [şifre] kullanıcı),
  • ya da “passwd salih” komutunu kullanarak şifre atayabilirdik.

Yukarıda saydığımız yöntemler haricinde userid:password formatında users.txt adlı bir metin dosyası oluşturup

komutu ile tanımlı tüm kullanıcı şifrelerini de değiştirebilirdik.

useradd ve usermod konutları ile yapılabilecekler için “help” bilgilerine bakmanızda yarar var.

Kullanıcı silmek

Bir kullanıcıyı sistemden silmek için userdel komutunu kullanabiliriz. userdel normalde bir kullanıcıya ait bilgileri /etc/passwd dosyasından kaldırır. Eğer kullanıcının HOME klasörünü ve atanan mail hesapları gibi bilgilerini de kaldırmak istiyorsak “-r” parametresini kullanabiliriz;

Kullanıcıyı Sistemden Silmek

Komut sonrası kontrol ettiğimizde HOME klasörünün ve /etc/passwd dosyasındaki bilgilerin silindiğini görüyoruz. Ancak bir kullanıcının HOME klasörünü kaldırmadan önce içerisinde önemli bilgi ve belgelerin olmadığına emin olun.

Linux’ta bir iş yapmanın birden fazla yolu var demiştik. Örneğin kullanıcı için varsayılan kabuğu değişmek için chsh komutu (change shell) da kullanılabilir (usermod ile de değiştirebilirsiniz).

Linux kullanıcı grupları

Sistem kaynaklarını ve dosyaları ayrı ayrı kullanıcılara tanımlama haricinde, kullanıcı grupları kurarak paylaşımı bu gruplar için düzenleyebilirsiniz.

/etc/passwd dosyasının içerisinde UID bilgisinin sağında GID olarak grup kimliği tanımlanmıştır. Bu bilgi eğer kullanıcı için ayrıca tanımlanmazsa, kullanıcı kimliğiyle aynı değer atanır.

/etc/group dosyası

/etc/group dosyası içerisinde tıpkı kullanıcı bilgileri gibi grup bilgileri saklanır. Dosya içeriğine göz atalım;

/etc/group dosyasının içeriği

/etc/group dosyası sırayla şu bilgileri içerir:

Kullanıcılara tanımlanmış GID (group ID) değerlerinin farklı olduğuna dikkat edin. Henüz gruplara atanmış kullanıcılar olmadığından GID’den sonra bir kullanıcı göremiyoruz. Bunlar kullanıcı tanımlanırken otomatik olarak oluşturulan varsayılan grup adları.

Yeni kullanıcı grubu oluşturma

Yeni grup tanımlamak için groupadd komutunu kullanabiliriz;

Yeni bir kullanıcı grubu oluşturmak

tp_editor” adında bir grup oluşturduk ve kontrol ettik.

Maalesef groupadd komutu gruba kullanıcı eklemeyi desteklemiyor. Gruba üye ekleme işlemini usermod komutu ile yapabiliyoruz;

Gruba kullanıcı eklemek için usermod komutu kullanılabilir

/ect/group dosyasını incelediğimizde “tp_editor” grubuna kullanıcıların eklendiğini görebiliriz.

Eklediğiniz kullanıcı, halihazırda oturum açmış ise sistemden çıkıp (logoff) yeniden girdiğinde gruba erişebilir.

Grup adını ya da grup kimliğini değişmek için groupmod komutu kullanılmaktadır.

GID değiştirmek için;

grup adını değiştirmek için;

komutları kullanılabilir.

Bir başka yazımızda buluşmak dileğiyle.

BİR CEVAP BIRAK