Kullanıcı ve Grup İşlemleri
BLP208 - Sunucu İşletim Sistemleri 1
İçerik
Kullanıcı ve Grup Yönetimi Linux Yetkilendirme Modeli
Kullanıcılar ve Gruplar
Sunucuda farklı işleri yönetmek için farklı kullanıcılar bulunmakta ve istendiği takdirde yeni kullanıcılar eklenebilmektedir.
Kullanıcıların yetkilerini toplu bir şekilde yönetebilmek için gruplar oluşturulmuştur.
Örneğin grup yapısı, sisteme "root" kullanıcısı ile giriş yapmasanız bile yönetici gibi işlem yapabilmeyi mümkün kılar.
BLP208 - Sunucu İşletim Sistemleri 3
Kullanıcı Eklemek
Yeni bir kullanıcı eklemek için adduser komutu kullanılır.
foo isminde bir kullanıcı oluşturmak için sudo adduser foo komutu verilir.
Sorulan alanlar doldurulur.
Açılan kullanıcının ev dizini /home/foo olarak ayarlanır.
Örnek
cezmi@server:~$ sudo adduser foo [sudo] password for cezmi:
Adding user `foo' ...
Adding new group `foo' (1002) ...
Adding new user `foo' (1002) with group `foo' ...
Creating home directory `/home/foo' ...
Copying files from `/etc/skel' ...
New password:
Retype new password:
passwd: password updated successfully Changing the user information for foo
Enter the new value, or press ENTER for the default Full Name []:
Room Number []:
Work Phone []:
Home Phone []:
Other []:
Is the information correct? [Y/n]
BLP208 - Sunucu İşletim Sistemleri 5
Kullanıcı Yönetim Dosyaları
Eklenen kullanıcıların kaydı /etc/passwd ve /etc/shadow dosyalarında tutulur.
/etc/passwd dosyasında parola dışındaki, kullanıcı adı, id, grup id, kullandığı kabuk, ev dizini gibi tanımlamalar bulunur.
Parola ve parola kullanım süresi, değiştirme süresi gibi tanımlar ise /etc/shadow
dosyasında tutulmaktadır.
/etc/passwd dosyasını kullanıcılar okuyabiliyorken /etc/shadow dosyasına sadece root kullanıcısı erişebilmektedir.
Örnek /etc/passwd satırı:
foo:x:1002:1002:,,,:/home/foo:/bin/bash
Örnek /etc/shadow satırı:
foo:$6$HMuOU7Ul44s.jQix$YHLn24CkHg3oYTg2TkaiHxvkNvf/3CjGIdof8ZnlQat407uBJr3 98NeV745s5qmd8odw3lQbg.qT1Tt1djFai/:19088:0:99999:7:::
BLP208 - Sunucu İşletim Sistemleri 7
Kullanıcı Silme
Kullanıcı deluser komutu ile silinebilir.
Örnek: deluser --remove-home foo
Kullanıcı Parolasını Değiştirme
Parola değiştirme işlemleri passwd komutu ile gerçekleştirilir.
Giriş yapılan kullanıcının parolasını değiştirmek için yalnızca passwd komutu çalıştırılır.
Yönetici olarak başka bir kullanıcının parolasını değiştirmek için sudo passwd kullanıcı_adı komutu çalıştırılır.
BLP208 - Sunucu İşletim Sistemleri 9
Kullanıcıyı Pasifleştirmek
Kullanıcının giriş yapmasını engellemek için yani pasifleştirmek için aşağıdaki komutlardan biri verilebilir.
usermod -L kullanıcı_adı passwd -l kullanıcı_adı
Bu işlem /etc/shadow dosyasındaki parola alanının başına ! karakterini ekler. Bu işlemi elle de yapabilirdik.
foo:!$6$HMuOU7Ul44s.jQix$YHLn24CkHg3oYTg2TkaiHxvkNvf/3CjGIdof8ZnlQat407uBJr 398NeV745s5qmd8odw3lQbg.qT1Tt1djFai/:19088:0:99999:7:::
Kullanıcıyı Aktifleştirmek
Pasif kullanıcıyı yeniden aktifleştirmek için aşağıdaki komut kullanılır:
usermod -U kullanıcı_adı
BLP208 - Sunucu İşletim Sistemleri 11
Gruplar
Kullanıcıların sistemdeki yetkilerini toplu bir şekilde yönetebilmek için gruplar oluşturulmuştur.
Bir kullanıcının birden fazla grubu olabilir.
Grup Ekleme
Grup ekleme işlemi groupadd komutuyla yapılır.
Örnek: sudo groupadd yeni
BLP208 - Sunucu İşletim Sistemleri 13
Kullanıcıyı Gruba Ekleme
Bu işlem gpasswd komutuyla yapılabilir.
Kullanım: sudo gpasswd -a kullanıcı_adı grup_adı
Örnek:
cezmi@server:~$ sudo gpasswd -a foo yeni Adding user foo to group yeni
Not: Kullanıcıya yönetici hakları vermek için kullanıcıyı sudo grubuna ekleyebilirsiniz.
Kullanıcıyı Gruptan Çıkarma
Kullanım: sudo gpasswd -d kullanıcı_adı grup_adı
BLP208 - Sunucu İşletim Sistemleri 15
Kullanıcı Gruplarını Sorgula
Kullanıcının gruplarını sorgulamak için id komutunu kullanabilirsiniz. Kullanım: id kullanıcı_adı
Örnek:
cezmi@server:~$ id foo
uid=1002(foo) gid=1002(foo) groups=1002(foo),1003(yeni)
Grup Yönetim Dosyası
Gruplar üzerinde yapılan işlemler /etc/group dosyasına işlenir.
Örnek /etc/group satırı
yeni:x:1003:foo
BLP208 - Sunucu İşletim Sistemleri 17
Kimlik Değişimi
Giriş yaptığınız kullanıcıdan çıkış yapmadan farklı bir kullanıcıyla kabuk açmak istiyorsanız su kullanıcı_adı komutunu kullanabilirsiniz.
Örnek:
cezmi@server:~$ su foo Password:
foo@server:/home/cezmi$ whoami foo
Geçiş yapılan anda kullanıcının ev dizininden başlamak isteniyorsa:
cezmi@server:~$ su - foo Password:
foo@server:~$
root kullanıcısına geçiş yapmak için: su -
sudo ile root parolası girmeden root olmak için: sudo su - Araştırma Sorusu: /etc/sudoers dosyası nedir ne işe yarar?
BLP208 - Sunucu İşletim Sistemleri 19
Başka Bir Kullanıcı Olarak Komut Çalıştırma
Başka bir kullanıcı olarak parola girmeden komut çalıştırmak için sudo komutu kullanılabilir. Kullanım: sudo -u kullanıcı_adı komut
Örnek:
cezmi@server:~$ sudo -u foo whoami foo
Linux Yetkilendirme Modeli
Linux sistemlerinin güvenlik yapısı gereği, dosya ve dizinlere ait birçok kısıtlama ve yetkilendirme ayarları vardır. Bu yetkilerin hepsine sahip olan tek kullanıcı ise root kullanıcısıdır.
BLP208 - Sunucu İşletim Sistemleri 21
Kullanıcı Yetkileri
Bir kullanıcının dosya ve dizinler üzerinde yapabileceği 3 işlem vardır:
okuma(r): Dizin listesini ve dosya içeriğini görüntüleme.
yazma(w): Dosya veya dizin üzerinde değişiklik yapma.
çalıştırma(x): Hedef dosyayı çalıştırma veya dizin içerisine erişme.
ls -l komutu çıktısını hatırlayalım
cezmi@server:~$ ls -al total 24
drwxr-xr-x 3 cezmi cezmi 4096 Mar 30 10:52 . drwxr-xr-x 4 root root 4096 Mar 24 08:10 ..
-rw-r--r-- 1 cezmi cezmi 220 Mar 24 08:10 .bash_logout -rw-r--r-- 1 cezmi cezmi 3771 Mar 24 08:10 .bashrc
drwx--- 2 cezmi cezmi 4096 Mar 30 10:52 .cache -rw-r--r-- 1 cezmi cezmi 807 Mar 24 08:10 .profile
Çıktının sol sütunundaki, drwxr-xr-x ve -rw-r--r-- şeklinde gördüğünüz kısımlar dosya izinlerini ifade ediyor.
BLP208 - Sunucu İşletim Sistemleri 23
drwxr-xr-x ve -rw-r--r-- gibi ifadelerin ilk karakterleri dosyanın türünü belirtiyor.
- Normal dosya.
d Dizin.
l Sembolik bağlantı.
s Soket haberleşme dosyası.
p FIFO, pipe.
b Blok dosya.
c Karakter dosya.
Dosya türünü belirten karakter çıkartıldığında kalan kısım üçlü gruplara ayrılır.
rwxr-xr-x = rwx r-x r-x rw-r--r-- = rw- r-- r--
Sırayla; birinci harf kümesi dosya sahibinin izinlerini, ikinci harf kümesi grup izinleri ve son küme de diğer kullanıcıların izinlerini belirtir.
BLP208 - Sunucu İşletim Sistemleri 25
Bu bilgilere göre rwx r-x r-x ve izinlerini açıklayacak olursak:
rwx : dosyanın sahibi olan kullanıcı okuyabilir, yazabilir, çalıştırabilir.
r-x : dosyanın grubu ile aynı gruba dahil kullanıcılar okuyabilir, çalıştırabilir fakat yazamaz(değişiklik yapamaz).
r-x : diğer kullanıcılar okuyabilir, çalıştırabilir fakat yazamaz(değişiklik yapamaz).
Dosya İzinlerini Değiştirme (chmod)
Dosya izinleri chmod komutu ile değiştirilir.
chmod ile kullanılan parametreler şu şekildedir:
u : Dosya-dizinin sahibi
g : Dosya-dizinin sahibi ile aynı grupta bulunan kullanıcılar o : Diğer kullanıcılar
a : Herkese açık.
= : Yetki eşitleme + : Yetki ekleme - : Yetki çıkarma
BLP208 - Sunucu İşletim Sistemleri 27
İzin Örnekleri
Bir dosyaya herkesin yazmasına izin vermek için: chmod a+w dosya
Bir dosyayı herkesin çalıştırabilmesi için: chmod a+x dosya
Bir dosyadan çalıştırma yetkisini almak için: chmod a-x dosya
Dosyanın grubundan okuma yetkisini almak için: chmod g-r dosya
Bir dizine yalnızca sahibi tarafından girilebilsin ve dizin okunabilsin: chmod
u=xr,g=,o=
Alıştırmalar
Bir dosyayı kimse okuyamasın iznini nasıl ayarlarız?
Bir dosyayı yalnızca sahibi ve grubu okuyabilsin iznini nasıl ayarlarız?
Bir dosya herkes tarafından okunabilsin ve yazılabilsin?
BLP208 - Sunucu İşletim Sistemleri 29
Sayılarla İzin Ayarlama
İzinler değiştirilirken augo xrw harfleri yerine xrw 'nin sayısal karşılıklarının toplamı da kullanılabilir.
'r' okuma izni(4) 'w' yazma izni(2) 'x' çalıştırma izni(1)
Örnek 1
Bir dosyanın yalnızca sahibi tarafından okunup, yazılmasını istiyorsak, dosyanın izninin
ls çıktısındaki görünümü şöyle olmalı değil mi?
-rw--- yani üçerli olarak düşünürsek: rw- --- ---
ilk grup dosyanın sahibinin yetkilerini belirtiyordu: rw- rw- = r(4) + w(2) = 6
İkinci grup dosyanın grubunun yetkilerini belirtiyordu: --- --- = 0
Üçüncü grup diğer kullanıcıların yetkilerini belirtiyordu: ---
--- = 0
BLP208 - Sunucu İşletim Sistemleri 31
Üç değeri yanyana yazınca 600 sayısını elde etmiş oluyoruz.
Dosyanın izinlerini artık chmod ile değiştirebiliriz:
chmod 600 dosya_adı
Bu chmod u=rw,g=,o= dosya_adı komutuyla aynı işi yapmaktadır.
Örnek 2
Bir dizine yalnızca sahibi ve grubu tarafından çalıştırma, okuma ve yazma hakkı verilmek isteniyor. Bu izni;
Sayısal olarak nasıl ayarlarsınız?
Harflerle nasıl ayarlarsınız?
Dizinin izinlerini değiştirecek kodu tam ve doğru bir şekilde yazın.
BLP208 - Sunucu İşletim Sistemleri 33
Örnek 2 - Çözüm
Öncelikle dosyanın hiç izni olmadığını düşün. Üçerli gösterimi şu şekilde olur:
--- --- ---
Sahibine çalıştırma, yazma ve okuma hakkı veriliyorsa üçerli grup şu hale gelir:
rwx --- ---
Grubuna da çalıştırma, yazma ve okuma hakkı verilmek isteniyormuş:
rwx rwx ---
Diğer kullanıcılara izin verilmek istenmiyormuş, o halde son üçlü sabit kalır.
Bulunan rwx rwx --- bu değeri önce sayısal değere dönüştürürüz.
sahibi: r(4) + w(2) + x(1) = 7 grubu: r(4) + w(2) + x(1) = 7 diğerleri: 0
Yanyana yazınca: 770 değerine ulaşılır.
Dizinin iznini değiştirmek için:
chmod 770 dizin_adı
BLP208 - Sunucu İşletim Sistemleri 35
rwx rwx --- ifadesini harflerle ayarlamak için:
chmod u=rwx,g=rwx,o= dosya_adı
chown
Dosyanın sahibini ve grubunu değiştirir.
-R parametresi belirtilen dizinin tüm dosyaları ve alt dizinleriyle birlikte sahip ve grup bilgilerini değiştir.
Örnek:
cezmi@server:~$ touch benioku cezmi@server:~$ ls -l benioku
-rw-rw-r-- 1 cezmi cezmi 0 Apr 6 11:46 benioku cezmi@server:~$ chown foo:foo benioku
cezmi@server:~$ ls -l benioku
-rw-rw-r-- 1 foo foo 0 Apr 6 11:46 benioku
BLP208 - Sunucu İşletim Sistemleri 37
chgrp
Sadece dosya ve dizinin grubunu değiştirmede kullanır. chown komutu gibi –R parametresi kullanılabilir.
Örnek:
cezmi@server:~$ sudo chgrp cezmi benioku cezmi@server:~$ ls -l benioku
-rw-rw-r-- 1 foo cezmi 0 Apr 6 11:46 benioku
Çalıştırılabilir Dosya
Bir kod yazdığınızda bunu doğrudan çalıştırabilmek için dosyayı çalıştırılabilir yapmanız gerekmektedir.
Örneğin merhaba isminde bir dosya oluşturdunuz ve içeriğini aşağıdaki gibi yaptınız:
#!/bin/bash
echo Merhaba
Bu dosyayı çalıştırmaya çalıştığınızda aşağıdaki gibi hata alırsınız:
cezmi@server:~$ ./merhaba
-bash: ./merhaba: Permission denied
BLP208 - Sunucu İşletim Sistemleri 39
Bu dosyayı çalıştırmak için öncelikle çalışma izni vermeniz gerekiyor:
cezmi@server:~$ chmod +x merhaba cezmi@server:~$ ./merhaba
Merhaba
Kaynaklar
https://linux-dersleri.github.io/docs/temel_linux/11.html https://linux-dersleri.github.io/docs/temel_linux/12.html
https://www.pardus.org.tr/kitaplar/LPI-Sertifikasyon-Kitabı-pardus.org.tr.pdf
BLP208 - Sunucu İşletim Sistemleri 41