Açık Kaynak İşletim Sistemleri

7 - Kullanıcı ve Grup Yönetimi

Emre Can Yılmaz

Ondokuz Mayıs Üniversitesi

2025

İç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.

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: adduser

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]

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.

Kullanıcı Yönetim Dosyaları: Örnekler

Örnek /etc/passwd satırı:

foo:x:1002:1002:,,,:/home/foo:/bin/bash

Örnek /etc/shadow satırı:

foo:$6$HMuOU7Ul44s.jQix$YHLn24CkHg3oYTg2TkaiHxvkNvf/3CjGIdof8ZnlQat407uBJr398NeV745s5qmd8odw3lQbg.qT1Tt1djFai/:19088:0:99999:7:::

Kullanıcı Silme

  • Kullanıcı deluser komutu ile silinebilir.

Örnek: deluser --remove-home foo

sudo 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.

    passwd
  • 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.

    sudo passwd foo

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.

sudo usermod -L kullanıcı_adı
# veya
sudo 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$...

Kullanıcıyı Aktifleştirmek

Pasif kullanıcıyı yeniden aktifleştirmek için aşağıdaki komut kullanılır:

sudo usermod -U kullanıcı_adı

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: yeni isminde bir grup eklemek.

sudo groupadd yeni

Kullanıcıyı Gruba Ekleme (gpasswd)

Bu işlem gpasswd komutuyla yapılabilir.

Kullanım: sudo gpasswd -a kullanıcı_adı grup_adı

Örnek: foo kullanıcısını yeni grubuna ekleme

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.

sudo gpasswd -a kullanici_adi sudo

Kullanıcıyı Gruba Ekleme (usermod)

Kullanıcıyı gruba eklemek için usermod komutu da kullanılabilir.

Örneğin cezmi kullanıcısına yönetici haklarını vermek için aşağıdaki komutla onu sudo grubuna ekleyebiliriz.

sudo usermod -aG sudo cezmi
  • -a: Ekle (Append) - Mevcut grupları koruyarak yenisini ekler.
  • -G: İkincil grup(lar) (Groups).

Kullanıcıyı Gruptan Çıkarma

Kullanım: sudo gpasswd -d kullanıcı_adı grup_adı

Örnek: foo kullanıcısını yeni grubundan çıkarma.

sudo gpasswd -d foo yeni

Kullanıcı Gruplarını Sorgulama

Kullanıcının gruplarını ve grupların id’lerini 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)

Not: groups komutu da kullanıcıların gruplarını gösterir ancak grup id’lerini göstermez.

groups foo
# Çıktı: foo : foo yeni

Grup Yönetim Dosyası

Gruplar üzerinde yapılan işlemler /etc/group dosyasına işlenir.

Örnek /etc/group satırı (yeni grubu ve üyesi foo):

yeni:x:1003:foo

Biçim: grup_adı:parola_yeri:grup_id:üyeler

Kimlik Değişimi (su)

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: foo kullanıcısına geçiş

cezmi@server:~$ su foo
Password: # foo kullanıcısının parolası istenir
foo@server:/home/cezmi$ whoami
foo
  • Geçiş yapılan anda kullanıcının ev dizininden başlamak isteniyorsa (- veya -l):
cezmi@server:~$ su - foo
Password:
foo@server:~$ pwd
/home/foo
  • Çıkış için CTRL + D kombinasyonunu ya da exit komutunu verebilirsiniz.

Kimlik Değişimi (su ve sudo)

  • root kullanıcısına geçiş yapmak için (root parolası gerekir):

    su -
  • sudo ile root parolası girmeden (kendi parolanızla) root olmak için:

    sudo su -
    # veya daha çok tercih edilen
    sudo -i

Araştırma Sorusu: /etc/sudoers dosyası nedir ne işe yarar?

Başka Bir Kullanıcı Olarak Komut Çalıştırma (sudo -u)

Başka bir kullanıcı olarak (genellikle) parola girmeden komut çalıştırmak için sudo komutu kullanılabilir.

Kullanım: sudo -u kullanıcı_adı komut

Örnek: foo kullanıcısı olarak whoami komutunu çalıştırma

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.

Temel İzinler

Bir kullanıcının dosya ve dizinler üzerinde yapabileceği 3 temel işlem vardır:

  • okuma (r - read): Dizin listesini ve dosya içeriğini görüntüleme.
  • yazma (w - write): Dosya veya dizin üzerinde değişiklik yapma (oluşturma, silme, yeniden adlandırma).
  • çalıştırma (x - execute): Hedef dosyayı çalıştırma (program/script ise) veya dizin içerisine erişme (cd komutu).

İzinleri Görme: ls -l

ls -l komutu çıktısının ilk sütunu izinleri gösterir:

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

-rw-r--r-- ve drwxr-xr-x gibi ifadeler izinleri ve dosya türünü belirtir.

İzinlerin Yapısı: Tür ve Üçlü Gruplar

d rwx r-x r-x örneği üzerinden:

  1. İlk karakter: Dosya türü.
    • -: Normal dosya
    • d: Dizin (Directory)
    • l: Sembolik bağlantı (Link)
    • s: Soket
    • p: Pipe (FIFO)
    • b: Blok cihaz dosyası
    • c: Karakter cihaz dosyası
  2. Kalan 9 karakter: Üçlü gruplar halinde izinler (rwx).
    • Grup 1 (rwx): Sahip (User/Owner) izinleri
    • Grup 2 (r-x): Grup (Group) izinleri
    • Grup 3 (r-x): Diğerleri (Others) izinleri

İzinlerin Anlamı

rwx r-x r-x izinlerini açıklayalım:

  • rwx (Sahip): Dosyanın sahibi okuyabilir (r), yazabilir (w), çalıştırabilir/erişebilir (x).
  • r-x (Grup): Dosyanın grubu ile aynı gruptaki kullanıcılar okuyabilir (r), çalıştırabilir/erişebilir (x), fakat yazamaz (-).
  • r-x (Diğerleri): Diğer tüm kullanıcılar okuyabilir (r), çalıştırabilir/erişebilir (x), fakat yazamaz (-).

Dosya İzinlerini Değiştirme (chmod)

Dosya/dizin izinleri chmod komutu ile değiştirilir. İki temel yöntem vardır: Sembolik ve Sayısal.

Sembolik Yöntem Parametreleri:

  • Kimler için?
    • u: Sahip (User)
    • g: Grup (Group)
    • o: Diğerleri (Others)
    • a: Herkes (All = ugo)
  • Ne yapılacak?
    • +: İzin ekle
    • -: İzin çıkar
    • =: İzinleri tam olarak ayarla (diğerlerini kaldırır)
  • Hangi izinler?
    • r: Okuma
    • w: Yazma
    • x: Çalıştırma/Erişim

chmod Sembolik Örnekler

  • Bir dosyaya herkesin yazma izni eklemek için:

    chmod a+w dosya_adı
  • Bir dosyayı herkesin çalıştırabilmesi için (izin ekle):

    chmod a+x dosya_adı
  • Bir dosyadan çalıştırma yetkisini (herkesten) almak için:

    chmod a-x dosya_adı
  • Dosyanın grubundan okuma yetkisini almak için:

    chmod g-r dosya_adı
  • Bir dizine yalnızca sahibi girebilsin (x) ve okuyabilsin (r), grup ve diğerleri hiçbir şey yapamasın:

    chmod u=rx,g=,o= dizin_adı

Alıştırmalar (Sembolik)

  • Bir dosyayı kimse okuyamasın iznini nasıl ayarlarız?

    # Cevap:
    chmod a-r dosya_adı
    # Veya daha kesin:
    chmod u-r,g-r,o-r dosya_adı
  • Bir dosyayı yalnızca sahibi ve grubu okuyabilsin (diğerleri okuyamasın) iznini nasıl ayarlarız?

    # Cevap:
    chmod u+r,g+r,o-r dosya_adı
    # Veya mevcut izinleri sıfırlayıp ayarlamak:
    chmod u=r,g=r,o= dosya_adı # Bu yazma/çalıştırma izinlerini de kaldırır!
    # Sadece okuma ile ilgiliyse:
    chmod u+r, g+r, o-r dosya_adı
  • Bir dosya herkes tarafından okunabilsin ve yazılabilsin?

    # Cevap:
    chmod a+rw dosya_adı

chmod Sayısal (Oktal) Yöntem

İzinler r, w, x harflerinin sayısal (oktal) karşılıklarının toplamı ile de ifade edilebilir.

  • r (okuma) = 4
  • w (yazma) = 2
  • x (çalıştırma) = 1
  • - (izin yok) = 0

Her üçlü grup (sahip, grup, diğerleri) için bu değerler toplanır.

Sayısal Yöntem - Örnek 1

Bir dosyanın yalnızca sahibi tarafından okunup (r), yazılmasını (w) istiyoruz. Diğerleri hiçbir şey yapamasın.

İstenen izin görünümü: -rw-------

Üçlü gruplar: rw- --- ---

  • Sahip (rw-): r(4) + w(2) + -(0) = 6
  • Grup (—): -(0) + -(0) + -(0) = 0
  • Diğerleri (—): -(0) + -(0) + -(0) = 0

Sayısal değer: 600

Komut:

chmod 600 dosya_adı

Bu chmod u=rw,g=,o= dosya_adı ile aynıdır.

Sayısal Yöntem - Örnek 2

Bir dizine yalnızca sahibi ve grubu tarafından çalıştırma (x), okuma (r) ve yazma (w) hakkı verilmek isteniyor. Diğerleri hiçbir şey yapamasın.

İstenen izin görünümü (dizin olduğu için ‘d’ ile başlar): drwxrwx---

Üçlü gruplar: rwx rwx ---

  • Sahip (rwx): r(4) + w(2) + x(1) = 7
  • Grup (rwx): r(4) + w(2) + x(1) = 7
  • Diğerleri (—): -(0) + -(0) + -(0) = 0

Sayısal değer: 770

Komut:

chmod 770 dizin_adı

Sembolik olarak: chmod u=rwx,g=rwx,o= dizin_adı

Sahiplik Değiştirme: chown

  • Dosyanın/dizinin sahibini ve isteğe bağlı olarak grubunu değiştirir.
  • Kullanım: chown yeni_sahip[:yeni_grup] dosya/dizin
  • -R (Recursive): Belirtilen dizin ve içindekilerin (alt dizinler, dosyalar) sahipliğini değiştirir. (Dikkatli kullanılmalı!)
  • Genellikle sudo gerektirir.

Örnek: benioku dosyasının sahibini foo, grubunu da foo yapma.

cezmi@server:~$ touch benioku
cezmi@server:~$ ls -l benioku
-rw-rw-r-- 1 cezmi cezmi 0 Apr  6 11:46 benioku

cezmi@server:~$ sudo chown foo:foo benioku

cezmi@server:~$ ls -l benioku
-rw-rw-r-- 1 foo foo 0 Apr  6 11:46 benioku

Grup Sahipliğini Değiştirme: chgrp

  • Sadece dosya/dizinin grubunu değiştirir.
  • Kullanım: chgrp yeni_grup dosya/dizin
  • chown gibi -R parametresi kullanılabilir.
  • Genellikle sudo veya dosya sahibi olma ve hedef grubun üyesi olma hakkı gerektirir.

Örnek: benioku dosyasının grubunu cezmi yapma (sahibi foo idi).

cezmi@server:~$ ls -l benioku
-rw-rw-r-- 1 foo foo 0 Apr  6 11:46 benioku

cezmi@server:~$ sudo chgrp cezmi benioku
# veya eğer foo kullanıcısı cezmi grubundaysa: 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 İzni

Yazdığınız bir betiği (script) veya derlediğiniz bir programı doğrudan ./dosya_adı şeklinde çalıştırabilmek için çalıştırma iznine (x) sahip olmanız gerekir.

Örneğin, merhaba isimli dosya içeriği:

#!/bin/bash
echo Merhaba Dünya

Çalıştırma denemesi (başlangıçta x izni yoksa):

cezmi@server:~$ ./merhaba
bash: ./merhaba: Permission denied

Çalıştırma izni verme (chmod +x) ve çalıştırma:

cezmi@server:~$ chmod +x merhaba
cezmi@server:~$ ls -l merhaba
-rwxrwxr-x 1 cezmi cezmi 25 Apr 6 12:00 merhaba # x izni eklendi
cezmi@server:~$ ./merhaba
Merhaba Dünya

Teşekkürler!