> Unix/Linux sistemlerinde "Login" süreci: >> "ctrl+alt+F1...F7" tuş kombinasyonlarını kullanarak siyah ekran üzerinden de oturum açabiliriz. >> Bilgisayarı ilk açtığımız zaman, bir takım işlemler arka planda çalıştırılır. Daha sonra işletim sistemi çalıştırılır ve işletim sistemi bir noktada kendini prosese dönüştürür. İş bu prosesin Kullanıcı ID değeri ise "0" şeklindedir. Bu prosesin adı "swapper" ya da "pager" ismindedir. Bu proses ise "init" isminde bir prosesi çalıştırıyor ki onun Kullanıcı ID değeri "1" şeklindedir. Daha sonra "swapper" ya da "pager" isimli proses bekletiliyor/devreden çıkıyor. "init" prosesinin hayata gelmesinden sonra "Kernel" kodlarının bir önemi kalmıyor çünkü "init" fonksiyonunun kodları "kernel" içerisinde DEĞİL. Artık hayatta olan iki proses vardır. Bunlar "swapper" isimli proses ile "init" isimli proses. "init" isimli proses ise bir takım işlemlerden sonra "login" isimli prosesi oluşturuyor. Bu "login" isimli program ise biz kullanıcılardan "username" ve "password" bilgilerini alıyor ve girilen bu bilgileri "etc/passwd" isimli dosya içerisindekiler ile karşılaştırıyor. BİR SİSTEMİ KULLANAN KULLANICILARIN BÜTÜN BİLGİLERİ "etc/passwd" İSİMLİ DOSYA İÇERİSİNDE SAKLAMAKTADIR. Herhangi bir kullanıcı, dosyayı görüntüleyebilir fakat sadece sistem yöneticileri burada değişiklik yapma hakkına sahiptir. >>> "etc/passwd" dosyası bildiğimiz bir text dosyasıdır. Yetkimiz olduğunda yeni bir kullanıcı oluşturmak için elle de giriş yapabiliriz. Bu dosyadaki metinler ":" ayrılmış alanlarda oluşmaktadır. Her satır bir kullanıcı için ayrılmıştır. ":" ile ayrılan toplam 7 adet de alan vardır. UNIX/Linux sistemlerinde Kullanıcı ID ve Kullanıcı İsminin eşleştirildiği tek dosya bu dosyadır. Aşağıda, "etc/passwd" dosyasının bir satırı yazılmıştır: // ... ahmopasa:x:1000:1000:Ahmet Kandemir PEHLİVANLI,,,:/home/ahmopasa:/bin/bash ^ ^ ^ ^ ^ ^ ^ I II III IV V VI VII Bunlardan, I: Kullanıcının ismi II: Kullanıcının şifresi. 'x' karakterinin yazılması durumunda, ilgili şifrenin kripte edilmiş hali "etc/shadow" isimli dosya içerisine yazıyoruz. 'x' karakterini kullanmayacaksak, şifrenin kripte edilmiş halini buraya yazıyoruz. İlgili program şifreleri karşılaştırırken kripte edilmiş hallerini karşılaştırdığından şifrenin ne olduğunu sistem de bilmemektedir. Bu tip şifreleme yapan algoritmalara ise tek yönlü şifreleme algoritmaları denmektedir. Şifrelemeyi yapan algoritmanın kaynak kodları da verilmiştir, incelenebilir. UNIX/Linux sistemlerinde "crypt" isimli program şifreleme için oluşturulmuştur. Bu alanın boş bırakılması oturum açarken "Enter" tuşuna basıp geçebileceğimiz anlamına gelmektedir. III: Oluşturduğumuz kullanıcının Kullanıcı ID değeri. IV: Oluşturduğumuz kullanıcının Grup ID değeri. Grupların ismi de "etc/group" isimli dosya içerisindedir. V: Kullanıcıya ait olan iletişim bilgierinin olduğu yer. VI: Oturum açtıktan sonra kendimizi bulacağımız dizin. "Current Working Directory". Bir zorunluluk olmamasına karşın, yeni bir kullanıcı eklerken, ek olarak "home" dizinin içerisine de yeni bir klasör oluşturmalıyız. VII: Oturum açtıktan sonra çalıştırılacak ilk programı belirtir. Bu kısma da kendimizin yazacağı bir programı geçebiliriz. Görüldüğü üzere ":" ile ayrılan her bir kısım aslında başka dosyaları işaret etmektedir. Bu dosyalardan; >>>> "etc/shadow" içerisindekiler: // ... ahmopasa:$6$DcUtZx5u4mUVFQfA$wSGIC2szvgP5zeos4YoaVEbVPbnAZxsSuydIUl9K0xy8DhfPo4hWROBFGm7.xWu5hq/uPVKDIvADYsX6q905Q0:18736:0:99999:7::: ^ ^ ^ ^ ^ ^ I II I: Kullanıcı ismi II: Kullanıcı şifresinin kripte edilmiş hali ... >>>> "etc/group" içerisindekiler: // ... adm:x:4:syslog,ahmopasa ^ ^ ^ ^ // ... ahmopasa:x:1000: ^ ^ ^ I II III sambashare:x:132:ahmopasa ^ ^ ^ ^ I II III IV I: Grubun ismi II: Grubun şifresi III: Grubun ID değeri IV: Bu gruba dahil olanlarınların kullanıcı adları Manuel olarak bir yeni kullanıcının eklenmesi için, ilk önce aşağıdaki komut "shell" programına girilir; "sudo vim /etc/passwd" Buradaki "sudo" kelimesi, bizlerin sistem yöneticisi olduğunu betimlemek içindir. "vim" kullandığımız için "vim" programı karşımıza gelecektir ve açılan text dosyasına yeni bir satır ekliyoruz. Bu yeni satırı eklerken, bilgileri ":" ile ayırarak eklemeliyiz. Dolayısıyla, I : Kısma kullanıcı adı olarak "student" yazısını yazıyoruz. II : Kısmı boş geçiyoruz. Böylelikle şifresiz bir şekilde oturum açabileceğiz. III: Kısma Kullanıcı ID olarak, 1001 sayısını giriyoruz. Genel olarak 1000'den başlatırlar sayıları. IV : Kısma Grup ID olarka, 10001 sayısını giriyoruz. V : Kısma "MyStudent,,," yazısını ekliyoruz. Buradaki "," atomları başka anlama gelmektedir. VI : Kısma "/home/student" yazısını ekliyoruz ki iş bu kullanıcı kendini bu dizinde bulsun. VII: Kısma "/bin/bash" yazısını ekliyoruz ki ilgili program oturum açıldıktan sonra çalıştırılsın. Daha sonra "etc/passwd" dosyasını kaydetip kapatıyoruz. Artık yeni bir kullanıcı oluşturuldu. Fakat bizler henüz "/home" dizini içerisinde "student" isminde yeni bir dizin oluşturmadık. Komut satırından "home" dizinine geliyoruz ve aşağıdaki komutu koşturarak yeni bir dizin oluşturuyoruz; "sudo mkdir student" Artık sistemimizde yeni bir kullanıcımız var. Yeni oluşturulan bu kullanıcıya bir şifre atamak için de yine "shell" programına şu aşağıdaki kodu yazıyoruz; "sudo passwd student" Daha sonra iş bu "student" kullanıcısına ait olacak bir şifreyi giriyoruz. Komut satırından, komutlar ile yeni bir kullanıcı eklemek için, şu aşağıdaki komutları kullanabiliriz; "sudo useradd" "sudo adduser" Bu iki komutun nasıl işlediğine, nasıl kullanabileceğimize internetten bakabiliriz. Bir kullanıcıyı silmek için ilk önce "etc/passwd" içerisindeki ilgili satır komple silinir. Daha sonra "etc/group" içerisindeki satırlardan, silinen kullanıcının ismi de silinir. Ayrıca, bu işlemleri gerçekleştiren "deluser" ve "userdel" komutlarını da kullanabiliriz. > Hatırlatıcı Notlar, >> "shell" komutu ile yeni bir kullanıcı eklerken, ilgili ismin daha önce alınıp alınmadığı kontrol edilmekte fakat elle yapılan kullanıcı eklemelerinde böyle bir kontrol yoktur. Dolayısıyla ilk gördüğü ismin bilgileri çekilecektir. Ama "Undefined Behaviour" meydana gelecektir. >> Hiç bir sistemde kullanıcının şifresi direkt olarak saklanmaz. O şifrenin şifrelenmiş hali saklanır. Karşılaştırma yapılırken bu şifrelenmiş versiyonlar karşılaştırılır. >> "etc/passwd" dosyasına yazma yapan bir POSIX fonksiyonu YAZILMAMIŞTIR. >> Sistemin, bir kullanıcının hangi gruplara dahil olduğunu tespit edebilmesi için, "etc/group" isimli dosyayı baştan sonra taraması ve ilgili kullanıcı isminin geçtiği grup isimlerini belirlemesi gerekiyor. >> "Ctrl + F + N" tuşlarına basarsak artık pencereli arayüzden siyah renkli terminale veya tam tersi yönde geçiş sağlarız. Örneğin, "Ctrl + F + 7" ile pencereli terminale geçiş yaparken "Ctrl + F + 5", "Ctrl + F + 6" ile siyah renkli terminale geçiş sağlarız. Buradaki pencereli terminallere genel olarak "pseudo terminals", siyah renkli olanlara ise "virtual terminals" adı verilir.