Kullanıcı İşlemleri
Linux'ta birçok kullanıcı hesabının olabildiğini ve bunlar içinde en yetkilinin root kullanıcısı olduğunu önceki derslerimizde tecrübe etmiştik. Ancak sistemde root kullanıcısı olmadan da root kullanıcısının yetkilerine sahip olmamız mümkün. Bu imkanı bize Linux Grup Yönetimi veriyor.
Grup Yönetimi
Aynı grupta yer alan kullanıcılar bizim tanımlamamızla aynı haklara sahip olabiliyorlar.
Biraz daha ayrıntılı vermek gerekirse Linux ve UNIX sistemlerindeki kullanıcılar bir veya daha fazla gruba aşağıdaki nedenlerle atanır:
- Dosyaları veya diğer kaynakları Grup yönetimi sayesinde ilgili kullanıcılarla paylaşarak, sistemde erişim sınırlamalarıyla güvenlik sağlaması.
- Kullanıcı yönetim ve denetiminde kolaylık sağlıyor olması.
- Grup üyeliği, bu gruba izin verilen dosyalara, dizinlere veya cihazlara özel erişim sağlar. Bu madde baştaki madde ile benzer amaca hizmet ederek tamamen kontrolü elde tutmayı sağlamak için kullanılır.
Yani genel olarak Grup sistemini bir çeşit kontrol mekanizması gibi düşünebilirsiniz.
Bu kısa bilgilendirmeden sonra gelin grup yönetimi ile ilgili işlemlere geçelim.
Bir grup oluşturulduğunda bu grubun bilgisi /etc dizini içerisinde yer alan group isimli dosyada tutuluyor.
Yani mevcut grupları görüntülemek istersek /etc dizini içerisinde yer alan group dosyasına bakmamız gerekir.
Bunun için less /etc/group
, more /etc/group
, cat /etc/group
komutlarından herhangi birini kullanabiliriz. Çıktıları aşağıdaki şekilde olacaktır.(Çıktıyı uzun olması nedeni ile aşağıdaki çıktının görselini keserek verdim.)
Hemen bu çıktıda yer alan kısımlara bir açıklık getirelim. Bunun için bir grubu bölüm bölüm numaralandırarak açıklayalım. Ben bu durum için örnek bir grup belirtiyorum.
Belirtilen numaralı kısımların açıklamaları:
1. Grup_ismi : Gruba verilen isimdir.
2. Parola : Parola alanını belirtiyor. Genelde parola kullanılmaz ancak kimi durumlarda kullanıldığı oluyor, bizim çıktımızda da x ile belirtilen alan parola kısmının boş olduğunu belirtiyor. Bu parola belirleme işlemi çok sık kullanılmasa da, ayrıcalıklı gruplarda uygulamak için yararlıdır.
3. Grup Kimliği (GID) : Atanan grup kimliğini(grup numarasını) belirtiyor.
4. Grup Listesi : Grubun üyesi olan kullanıcıların kullanıcı adlarının bir listesidir. Kullanıcı adları, virgülle ayrılmış şekilde belirtiliyor.
Bu alanların neleri ifade ettiğini öğrendiğimize göre, gelin hangi kullanıcının hangi gruba dahil olduğunu nasıl öğrenebiliriz onu görelim.
Kullanıcı Gruplarını Sorgulamak
Kullanıcıların ait olduğu grupları görmek istersek komut satırına id kullanıcı_adı
şeklinde komut vermemiz yeterli olacaktır.
Ben "burak" kullanıcı hesabı için sorgulama yapmak üzere konsola id burak
şeklinde komutumu veriyorum.
Gördüğünüz gibi "burak" kullanıcı hesabı için burada; uid(user id /kullanıcı numarası), gid(group id/grup numarası) ve dahil olduğu gruplar listelenmiş oldu.
Burada yeri gelmişken çıktıda da görülen uid(user id/kullanıcı numarası) ve gid(group id/grup numarası) kavramlarına değinelim. Bu numara aralıkları kullanıcı hesabına göre değişiklik gösteriyor. Yani kullanıcı çeşidine göre numaraları üç temel gruba ayırabiliriz. O da şu şekilde ;
- root kullanıcısı : UID=0, GID=0
- sistem kullanıcısı : UID=1 - 499, GID=1 - 499
- normal kullanıcı : UID=500 < X, GID=500 < X (Buradaki X ifadeleri 500'den büyük tüm sayıları temsil etmektedir.)
Ayrıca id
komutunun birçok parametresi vardır bazıları birazdan göreceğimiz grup oluşturma kısmındaki parametrelerden oluşuyor. Detaylı bilgi için man sayfasına bakabilirsiniz. Ben yine de örnek olması açısından birkaç parametresini gösteriyorum ve daha sonra grup oluşturma ile konumuza devam ediyoruz.
g : id -g kullanıcı_adı
belirtilen kullanıcının grup numarasını(gid) verecektir.
u : id -u kullanıcı_adı
belirtilen kullanıcının kullanıcı numarasını(uid) verecektir.
G : ìd -G kullanıcı_adı
belirtilen kullanıcının dahil olduğu tüm grupları(groups) verecektir.
Yukarıdaki parametreler haricindekiler için man kılavuz sayfasına bakın lütfen.
Sıra geldi yeni grup oluşturmaya..
Yeni bir grup oluşturmak istersek groupadd yeni_grup_adı
şeklinde komutumuzu kullanırız.
Ben örnek olması açısından "yeni" isimli bir grup oluşturmak için komut satırına groupadd yeni
şeklinde komutumu veriyorum.
Ve oluşturduğumuz grubu sorgulamak için grup bilgilerinin tutulduğu dosyaya bakmak üzere cat /etc/group | grep grup_adı
komutunu ya da tail -n 1 /etc/group
kullanabiliriz.
Ayrıca grup oluşturulurken kullanılabilecek bazı parametreler var. Bunlar;
g : Grup id belirleme. İstediğiniz numarayı başka bir gruba ait numara ile aynı olmayacak şekilde verebilirsiniz.
Eğer aynı grup id ile başka bir grup eklemek istersek konsol bize "bu id ye sahip başka bir grubun halihazırda bulunduğu" uyarısını verecektir. Dolayısı ile grup ekleme işlemi başarısız olacaktır.
f : işlemi hatalar olsa bile zorlayarak tamamlar. Genelde bu kullanım sorunlar çıkardığı için pek tavsiye edilmez.
Parametreler bunlar ile sınırlı değil ancak sizler man groupadd
ve groupadd --help
komutları yardımı ile diğer parametreleri de keşfedebilirsiniz.
Ayrıca oluşturduğunuz grupları silmek isterseniz konsola groupdel grup_adı
şeklinde komut yazmanız yeterli olacaktır.
Kullanıcı Yönetimi
Sistemimize yeni bir kullanıcı eklemek için kullanabileceğimiz iki farklı komut var. Bunlar adduser
ve useradd
komutlarıdır.
adduser
Yeni kullanıcı eklemek için komutumuzu adduser kullanıcı_adı
şeklinde veriyoruz. Böylelikle oluşturduğumuz kullanıcıya ait ev dizini home/kullanıcı_adı
şeklinde otomatik olarak oluşmuş oluyor.
Ben örnek olaması açısından "hasan" isimli bir kullanıcı hesabı eklemek üzere konsola adduser hasan
komutunu veriyorum.
Çıktıları inceleyecek olursak ev dizini otomatik olarak oluşturulmuş ve "hasan" isimli kullanıcı "hasan" grubuna dahil edilmiş. Yeni eklemiş olduğumuz "hasan" isimli kullanıcı hesabını teyit etmek için; Sistemde kullanıcı hesapları ile ilgili bilgilerin tutulduğu etc dizini içerisindeki passwd dosyaya bakalım.
Dosyanın en alt satırına baktığımızda yeni eklemiş olduğumuz "hasan" isimli kullanıcı hesabının eklenmiş olduğunu görüyoruz. Son olarak da home dizinine "hasan" kullanıcı hesabı için dosya oluşturulmuş mu buna bakalım.
Çıktıda görüldüğü gibi home dizininde oluşturmuş olduğum "hasan" isminde kullanıcı dosyası bulunuyor.
useradd
Kullanıcı oluşturmak için bahsettiğimiz 2. komut olan useradd
komutu kullanımı; useradd -m kullanıcı_adı
şeklindedir. Burada komutumuz ile birlikte kullanmış olduğumuz m
parametresi ile, oluşturduğumuz kullanıcıya ait ev dizininin otomatik oluşmasını sağladık. Birde son olarak kullanıcıya ait bir parola belirlemek üzere passwd kullanıcı_adı
şeklinde komutumuzu vererek parolamızı oluşturuyoruz.
Parola oluşturma işleminde kullandığımız passwd kullanıcı_adı
şeklindeki komut bütün hesaplar için şifre güncelleme işleminde de kullanılıyor. Ve bir bilgi daha; bu parola bilgileri /etc dizini altındaki shadow isimli dosyada şifreli şekilde tutuluyor.
Ben örnek olması açısından "ali" isimli bir kullanıcı hesabı oluşturmak üzere komutumu useradd -m ali
şeklinde verdikten sonra "ali" isimli kullanıcı hesabı için şifre belirlemek üzere passwd ali
komutunu kullandım.
Görüldüğü gibi "ali" isimli kullanıcı hesabımız başarılı şekilde oluşturulmuş oldu. Şimdi home dizinini ve passwd dosyasına bakarak bu durumu teyit edelim.
Çıktı sonuçlarında bir problem olmadığına göre konumuza, kullanıcı silme işlemi ile devam edebiliriz.
Kullanıcı Silmek
Oluşturulan kullanıcı hesabını ev dizini ile birlikte silmek için deluser --remove-home kullanıcı_adı
komutunu kullanmamız yeterli olacaktır.
Kullanıcı silme işlemlerini kontrol etmek adına home dizinini kontrol edelim.
Çıktıda "hasan" ya da "ali" bulunmadığına göre kullanıcı silme işlemimiz başarılı şekilde tamamlanmış oldu.
Gruplara Kullanıcı Ekleme-Çıkarma İşlemi
Yeni grup ve yeni kullanıcı hesabı nasıl oluşturulur bunları gördük. Şimdi sıra geldi gruba yeni kullanıcı ekleme ve gruptan kullanıcı çıkarma işlemlerine.
Gruba Kullanıcı Eklemek
Var olan bir gruba yeni bir kullanıcı eklemek için gpasswd
komutunun a
parametresini kullanarak, komutumuzu gpasswd -a kullanıcı_adı ekleneceği_grup_adı
şeklinde kullanmamız yeterlidir.
Gruptan Kullanıcı Çıkarmak
Eğer gruba dahil olan bir kullanıcıyı gruptan çıkarmak istersek de gpasswd
komutunun d
parametresini kullanarak, komutu gpasswd -d kullanıcı_adı çıkarılacağı_grup_adı
şeklinde kullanmamız gerekmektedir.
Aktif-Pasif Hesap Ayarlama
Varolan bir kullanıcı hesabını kilitlemek için usermod -L kullanıcı_adı
komutunu kullanırız. Buradaki kilitlemekten kasıt kullanıcının sisteme giriş yapmasını engellemek için parolasının kilitlenmesidir. Parolayı devre dışı bırakmak için, sistem otomatik olarak şifreli parolanın önüne '!' işareti koyar ve kullanıcı hesabına giriş yapamaz.
Bu durumu denemek için öncelikle kullanıcı hesaplarının parolalarının şifreli bir şekilde tutulduğu dosya olan shadow dosyasına bakalım.
"burak" isimli kullanıcının parolasını yukarıdaki şekildedir. Daha sonra karşılaştırma yaparken tekrar ele alacağız.
Konsol ekranına usermod -L burak
yazarsam "burak" kullanıcısının hesabını kilitlemiş olurum. Bu kilitleme işlemini; kullanıcının hesaba girişte kullandığı parolanın önüne sistem tarafından otomatik olarak getirilen !
(ünlem işareti) sayesinde gerçekleşmektedir.
Bu durumu teyit etmek için tekrar shadow dosyasına bakalım ve önceki hali ile sonraki halini kıyaslayarak görelim.
Gördüğünüz gibi hesabı kilitleme işleminde; hesaba girişte kullanılan parolanın önüne otomatik olarak gelen !
(ünlem işareti) hesaba girmeyi engelleyerek hesabı kilitlemiş oluyor.
Pasif durumdaki hesabı aktif hale getirmek için ise usermod -U kullanıcı_adı
komutu kullanılır. Aynı şekilde hesabın tekrar aktif hale getirilmesi de devre dışı bırakılmış olan kullanıcı parolasının önündeki '!' işaretinin kaldırılmasıyla gerçekleşir.
Eğer anlamadığınız bir nokta varsa bu durumu GIF ile anlattım, dikkatlice takip ederseniz gayet net anlaşılacaktır.
Kimlik Değişimi
Örneğin ben "burak" kullanıcısıyken, yapmak istediğim işlem ancak "root" kullanıcısının yetki alanındaysa ve ben "root" hesabının parolasını biliyorsam, "root" hesabının kimliğine bürünerek o işlemi gerçekleştirebilirim.
Geçiş işlemleri için su
komutunu kullanıyoruz. Komutun kullanımı ile ilgili iki farklı durum var, bunlar:
- su kullanıcı_adı : diğer kullanıcı kimliğine geçiş yapar.
- su - kullanıcı_adı : diğer kullanıcı kimliğine geçiş yapar ve direk olarak geçiş yapılan kullanıcının kabuğunda çalışmaya başlar.
Bu durum en iyi örnekler ile açıklanabilir. İlk önce "root" kullanıcısıyken "burak" isimli kullanıcı hesabına giriş yapacağım daha sonra "burak" isimli kullanıcıdan "root" hesabına giriş işlemini gerçekleştireceğim. Adımları sırasıyla takip edin lütfen.
Hemen mevcut kullanıcı oturumunu daha önce öğrenmiş olduğumuz whoami
komutu ile sorgulayalım.
"root" kullanıcısıyken "burak" hesabına geçiş yapmak için su burak
komutunu kullanıyoruz. Ve whoami
komutu ile geçiş durumunu kontrol ediyoruz.
Geçiş yaptığımız "burak" hesabından "root" hesabına dönmek için exit
komutunu kullanmamız yeterli.
Şimdi su - burak
komutu kullanarak geçiş yapacağımız kullanıcı kabuğunda çalışalım.
Görsellere dikkatlice bakacak olursanız; su burak
komutunu kullanarak geçiş yaptığımızda burak@taylan:/root$
olan konsol ismi su - burak
komutunu kullandığımızda direk olarak geçiş yaptığımız hesabın kabuğunda çalışmaya başlayarak burak@taylan:~$
şeklinde oldu. Yani su - burak
komutu bize tıpkı o hesap oturumunu açmışız gibi tepki verdi.
Aşağıda çıktılara tekrar bakarsanız aradaki farkı daha net anlayabilirsiniz.
Fark etmiş olacaksınız ki başta geçiş yapabilmemiz için geçeceğimiz hesabın parolasını bilmemiz gerektiğini söylemiştim. Ancak "burak" hesabına yaptığımız geçişlerde parola sorulmadı. Bunun sebebi "burak" hesabının normal kullanıcı olmasıdır. Şimdi bu durumu birde "burak" hesabındayken "root" kullanıcısı için iki farklı kullanımda da deneyelim.
Gördüğünüz gibi yönetici hesabına erişmek için bizlerden parola bilgisi istendi. Bu durum da başta açıkladığımız yetkili hesaplara geçişlerde şifre sorma olayını açıklıyor.
Alıştırmalar Hakkında
Öğrendiğiniz bilgilerin kalıcı olması için mutlaka bolca alıştırma yapmalısınız.Burada belirtilen alıştırmalar dışında da kendi kendinize özellikle de zorlandığınız konularda bol bol alıştırmalar yapın. Aksi halde öğrendiğiniz bilgiler kısa sürede unutulup gidecektir. Yani gerçekten öğrenmek istiyorsanız lütfen öğrendiğinizi hissede kadar alıştırmalar yapın.
Linus isminde yeni bir kullanıcı hesabı oluşturun ve home
dizinine bakarak teyit edin.
GNU isminde 1515 grup numarasına(gid) sahip yeni bir grup oluşturun ve grubun oluşup oluşmadığını ilgili dosyaya bakarak teyit edin.
Oluşturmuş olduğunuz GNU isimli guruba yeni oluşturmuş olduğunuz Linus kullanıcı hesabını ekleyin.
Linus isimli kullanıcının dahil olduğu grubu konsoldan ilgili komut ile sorgulayın.(uid(user id/kullanıcı numarası), gid(group id/grup numarası) ve dahil olduğu grupları konsoldan listeleyin.)
GNU isimli gruba eklemiş olduğunuz Linus kullanıcı hesabını gruptan çıkarın ve bu durumu(gruptan çıkarılıp çıkarılmadığını) teyit edin.
GNU isimli gurubu silin ve silme işlemini de teyit edin.
Linus isimli kullanıcı hesabına giriş yapın(oturum açın) ve Linus kullanıcı hesabındayken root kullanıcı hesabına kimlik değişimi ile konsoldan geçiş yapın. Geçiş yaptıktan sonra geçişi ilgili komut(hangi kullanıcı oturumunda çalışmakta olduğumuzu bildiren komut) ile teyit edin. Ve daha sonra root kullanıcı hesabından ilgili komut ile çıkış yaparak tekrar Linus kullanıcı hesabına dönün ve geçişi ilgili komutla teyit edin.
Linus kullanıcı hesabındayken ilgili komut ile konsoldan root kullanıcı hesabının kimliğine geçiş yapıp direk olarak root kullanıcı hesabının kabuğundan çalışmaya başlayın. Ve bu durumu ilgili komut ile teyit edin.(Burada önemli nokta geçiş yapılan kullanıcının kabuğunda çalışmaktır.)
Linus kullanıcı hesabındayken oturumu kapatıp root kullanıcı hesabına geçin ve root kullanıcı hesabındayken Linus kullanıcı hesabını kilitleyin. Ve hesabın kilitlenip kilitlenmediğini de teyit edin.
Kilitlemiş olduğunuz Linus kullanıcı hesabının kilidini açın ve hesaba giriş yaparak açılıp açılamadığını teyit edin.
Geri Bildirimde Bulunun
Sizlere daha verimli bir kaynak sunabilmemiz için, uygulamada veya dokümantasyonlarda yer alan tüm hata ve eksiklerimizi bize bildirebilirsiniz.