Hepinize merhabalar
Uzun bir ara sonrasında aklıma aniden esmesi ile birlikte bu konuyu açmaya karar verdim
Fazla uzatmadan direk konuya giriş yapalım.
/etc/passwd Nedir?
Konum itibari ile kök dizinin altındaki konfigürasyon dosyalarının tutulduğu yer olan etc klasörünün altında bulunur.
İçerisinde sistemde ki kullanıcılar hakkında önemli bilgileri barındırır ve sistemin kullanıcıları yorumlayabilmesini sağlar.
Değiştirilmemiş hali buna benzer.
Her bir satır bir kullanıcı için ayrılmış ve orginize bilgiler içerir.
root:x:0:0:root:/root:/bin/bash
: (iki nokta) ifadesini bilgileri ayıran bir ayraç olarak kabul edersek kullanıcı adına 7 adet bilgi mevcut.
1- Kullanıcının adı. (root)
2- Kullanıcının parolasının şifrelenmiş hali. Güvenlik sebebi ile x ifadesi /etc/shadow dosyasından verinin alınması gerektiğini ifade eder. (x)
3- Kullanıcının id numarası. (0)
4- Kullanıcının grup id numarası. (0)
5- Kullanıcıya ait bilgiler. (root)
6- Kullanıcıya ait home dizini. (/root)
7- Kullanıcıda default çalışan terminal kabuğu. (/bin/bash)
İnceleyeceğiniz üzere diğer tüm satırlarda bu organizasyona sahiptir.
Sistemlerde 0 id numarasına sahip olan kullanıcı süperkullanıcı (admin) yetkilerine sahip olmaktadır.
Passwd Dosyasının Kasıtlı Değişikliği
İlk kısımda da belirttiğim gibi, sistem kullanıcılar hakkında bilgi alacağı zaman passwd dosyasına başvurur.
passwd dosyası kasıtlı olarak değiştirilmesi durumunda farklı sonuçlar meydana gelebilir.
Ben sizler için spesifik olarak bir senaryo seçtim ve onun üzerinden anlatmak istiyorum.
Baktığımız zaman passwd dosyasında iki değişiklik söz konusu:
1- Normal şartlarda 0 id'sine sahip olması gereken kullanıcı root olması gerekirken r00t adında farklı bir isim yazılmış.
2- 1001 id numarasından daha sonradan oluşturulmuş olduğunu anladığımız root adında bir kullanıcı eklenmiş.
Bu değişiklik beraberinde şu sıkıntıyı meydana getirecektir:
Bir yazılım root bilgisini 0 id değerinden değilde root kullanıcı adından çeker ise, yazılım başarılı bir şekilde süperkullanıcı yetkisinde olamayacaktır.
Örnek verelim.
su komutu kullanıcı değiştirmek için kullanılan bir komuttur.
Eğer herhangi bir kullanıcı adı verilmemesi durumunda otomatik olarak root kullanıcısına geçiş işlemini başlatacaktır.
[https://github.com/freebsd/freebsd-src/blob/de1aa3dab23c06fec962a14da3e7b4755c5880cf/usr.bin/su/su.c]
sudo komutu bir komutu başka bir kullanıcı üzerinden çalıştırmak için kullanılan bir komuttur.
Eğer herhangi bir kullanıcı verilmemesi durumda root kullanıcı yetkisi ile belirtilen komutu çalıştırır.
sudo komutunun -s paramteresi belirtilen kullanıcının terminaline erişim için kullanılır.
[https://github.com/sudo-project/sudo/blob/master/src/sudo.c]
Görüldüğü üzere normal şartlar altında bu komutular girildiğinde süperkullanıcı yetkisinde olmamız gerekir iken, yapılan değişiklik sebebi ile herhangi bir şekilde süperkullanıcı yetkisine geçiş yapılamıyor.
Sadece görünürde root olduğu algısı yaratıyor.
Peki Böyle Bir Durumda Nasıl Süper Kullanıcıya Geçiş Yapılabilir?
passwd dosyası üzerinden süperkullanıcının id bilgisi ile süper kullanıcıya geçiş yapılabilir.
Başarılı bir biçimde süperkullanıcı yetkisine sahip olabildik.
İyi forumlar dilerim.
Son düzenleme: