Açık Kaynak İşletim Sistemleri

7 - Kullanıcı ve Grup Yönetimi

Emre Can Yılmaz

Ondokuz Mayıs Üniversitesi

2026

Bu Derste: Kullanıcı, Grup ve İzin

Linux’ta yetki; kullanıcı, grup ve izin ilişkisi üzerinden belirlenir.

Bu derste bu yapıyı adduser, su, sudo, chmod, chown ve chgrp komutlarıyla inceleyeceğiz.

Kullanıcılar ve Gruplar

  • Çok kullanıcılı sistemlerde her kullanıcı ayrı bir kimlik ile çalışır.
  • Kullanıcılar, çoğu zaman tek tek değil, gruplar üzerinden yetkilendirilir.
  • Bir kullanıcı birden fazla gruba üye olabilir.
  • Bazı gruplar, örneğin sudo, ek yönetim yetkileri sağlayabilir.

Burada önemli nokta şudur: yönetim yetkisi genel olarak “grup” kavramından değil, ilgili grubun sistemde nasıl tanımlandığından gelir.

sudo Nedir?

sudo, bir komutu geçici olarak yönetim yetkisiyle çalıştırmayı sağlar.

Bazı işlemler normal kullanıcı yetkisiyle yapılamaz.
Örneğin:

  • yeni kullanıcı eklemek,
  • grup oluşturmak,
  • dosya sahibi değiştirmek

gibi işlemlerde komutun başına sudo yazarız.

sudo adduser foo
sudo groupadd proje
sudo chown foo:proje rapor.txt

Buradaki amaç sürekli root olarak çalışmak değil, yalnızca gerektiğinde yetkili komut çalıştırmaktır.

Yeni Kullanıcı Oluşturma: adduser

Yeni bir kullanıcı eklemek için yaygın komut:

sudo adduser foo

Bu işlem sırasında genellikle:

  • kullanıcı oluşturulur,
  • kullanıcıya ait birincil grup açılır,
  • ev dizini hazırlanır,
  • parola belirlenir,
  • isteğe bağlı kimlik bilgileri girilir.

Varsayılan ev dizini çoğunlukla /home/foo olur.

Örnek: adduser Çıktısı

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]

Burada dikkat edilmesi gereken nokta, kullanıcı oluşturulurken çoğu zaman aynı isimde bir grubun da açılmasıdır.

Kullanıcı Bilgileri Nerede Tutulur?

Kullanıcılarla ilgili bilgiler temel olarak iki dosyada tutulur:

  • /etc/passwd
  • /etc/shadow

Genel fikir:

  • /etc/passwd: kullanıcı adı, uid, gid, ev dizini, kabuk gibi bilgiler
  • /etc/shadow: parola özeti ve parola politikaları

/etc/passwd herkes tarafından okunabilirken, /etc/shadow dosyasına erişim sınırlıdır.

/etc/passwd Örneği

Örnek satır:

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

Bu yapı soldan sağa şu alanları içerir:

  1. kullanıcı adı
  2. parola alanı yer tutucusu
  3. kullanıcı kimliği (uid)
  4. birincil grup kimliği (gid)
  5. açıklama bilgisi
  6. ev dizini
  7. giriş kabuğu

Bu satır, kullanıcının sistemde nasıl tanımlandığını gösterir.

Buradaki x Ne Anlama Gelir?

/etc/passwd satırındaki x, parolanın doğrudan bu dosyada tutulmadığını gösterir.

Yani:

  • kullanıcı tanımı /etc/passwd içindedir,
  • parola özeti ise /etc/shadow içindedir.

Bu ayrım, parola bilgisinin daha korumalı bir dosyada tutulmasını sağlar.

/etc/shadow Örneği

Örnek satır:

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

Bu dosyada parola özeti ve parola yaşlandırma bilgileri tutulur.

Bu nedenle:

  • /etc/passwd daha genel kullanıcı bilgisidir,
  • /etc/shadow ise parola tarafıdır.

Kullanıcı Üzerinde Temel İşlemler

Parola değiştirme:

passwd
sudo passwd foo

Kullanıcıyı silme:

sudo deluser --remove-home foo

Parolayı kilitleyerek hesabı pasifleştirme:

sudo usermod -L foo
# veya
sudo passwd -l foo

Yeniden açma:

sudo usermod -U foo

Burada kilitleme işlemi çoğunlukla parola alanını devre dışı bırakır.

Grup Mantığı

Gruplar, kullanıcıları tek tek yetkilendirmek yerine ortak kümeler hâlinde yönetmeyi sağlar.

Örneğin:

  • aynı laboratuvarı kullanan öğrenciler,
  • aynı dizine erişecek kullanıcılar,
  • yönetim yetkisi verilecek kullanıcılar

ayrı gruplarda toplanabilir.

Bu yapı, yetki yönetimini daha düzenli hâle getirir.

Grup Oluşturma ve Üye Ekleme

Yeni grup oluşturma:

sudo groupadd proje

Bir kullanıcıyı gruba ekleme:

sudo gpasswd -a foo proje

Aynı işi usermod ile yapmak da mümkündür:

sudo usermod -aG proje foo

-aG kullanımında -a parametresi önemlidir; mevcut grup üyeliklerini koruyarak ekleme yapar.

Yönetim Yetkisi İçin Grup Örneği

Bir kullanıcıya sudo yetkisi vermek için onu uygun gruba ekleyebiliriz:

sudo usermod -aG sudo foo

Bu kullanıcı artık doğrudan root olmaz.

Daha doğru ifade şudur:

  • kullanıcı yine kendi kimliğiyle çalışır,
  • gerektiğinde sudo ile geçici olarak yetkili komut çalıştırır.

Yani sudo, root yetkisinin sürekli olarak kullanıcıya devredilmesi değil, gerektiğinde kullanılabilmesidir.

Grup Üyeliğini Görme ve Düzenleme

Kullanıcının grup bilgilerini görüntüleme:

id foo
groups foo

Örnek çıktı:

cezmi@server:~$ id foo
uid=1002(foo) gid=1002(foo) groups=1002(foo),1003(proje)

Gruptan çıkarma:

sudo gpasswd -d foo proje

Grup bilgileri /etc/group dosyasında tutulur.

Örnek: /etc/group

proje:x:1003:foo

Biçim:

grup_adı:parola_yeri:grup_id:üyeler

Bu satır, proje grubunun kimliğini ve üyelerini gösterir.

Başka Bir Kullanıcıya Geçmek: su

Geçici olarak başka bir kullanıcı kimliğiyle kabuk açmak için:

su foo

Örnek:

cezmi@server:~$ su foo
Password:
foo@server:/home/cezmi$ whoami
foo

Burada kullanıcı değişir; fakat bulunduğunuz ortam ve dizin her zaman tam olarak yenilenmeyebilir.

su - Ne Yapar?

Kullanıcının kendi oturum ortamıyla başlamak için:

su - foo

Bu kullanımda genellikle:

  • ev dizini değişir,
  • oturum ortamı yenilenir,
  • daha temiz bir kullanıcı geçişi sağlanır.

Bu yüzden su foo ile su - foo aynı şey değildir.

sudo -i ve sudo -u

Yetkili bir kabuk açmak için:

sudo -i

Belirli bir komutu başka kullanıcı olarak çalıştırmak için:

sudo -u foo whoami

Örnek düşünelim:

  • sudo -i size yetkili bir kabuk verir,
  • sudo -u foo ls /home/foo yalnızca tek bir komutu foo olarak çalıştırır.

Bu ikinci kullanım özellikle test ve yönetim işlerinde çok kullanışlıdır.

Kullanıcı, Grup ve İzin Birlikte Nasıl Çalışır?

Bir dosya üzerinde işlem yapılırken sistem yalnızca “komut ne?” sorusuna bakmaz.

Aynı zamanda şunları birlikte değerlendirir:

  • işlemi yapan kullanıcı kim,
  • bu kullanıcı hangi gruplarda,
  • dosyanın sahibi kim,
  • dosya hangi gruba ait,
  • izinler ne durumda.

Bu nedenle izinleri okumadan önce kullanıcı ve grup tarafını anlamak gerekir.

İzin Modeli

Linux’ta temel izinler üç tanedir:

  • r = okuma
  • w = yazma
  • x = çalıştırma / erişim

Bu izinler üç ayrı kitle için tanımlanır:

  • sahip
  • grup
  • diğerleri

Dolayısıyla her dosya veya dizin için üçlü bir yapı vardır.

İzinleri Görme: ls -l

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

İlk sütundaki ifade dosya türünü ve izinleri gösterir.

Örneğin:

  • -rw-r--r--
  • drwx------

İzin Dizesini Okuma

Örnek:

drwxr-xr-x

Bunu şu şekilde ayırabiliriz:

d | rwx | r-x | r-x

Anlamı:

  • ilk karakter: tür
  • ilk üçlü: sahip izinleri
  • ikinci üçlü: grup izinleri
  • üçüncü üçlü: diğerleri izinleri

İlk karakter için bazı yaygın örnekler:

  • - normal dosya
  • d dizin
  • l sembolik bağ

Dosya ve Dizin İçin İzinler Aynı Şekilde Yorumlanmaz

Dosyada:

  • r: içeriği okuma
  • w: içeriği değiştirme
  • x: dosyayı çalıştırma

Dizinde:

  • r: dizin listesini görebilme
  • w: dizin içinde ekleme, silme, yeniden adlandırma
  • x: dizine girebilme ve içeriğe erişebilme

Özellikle dizinlerde x izni, ilk bakışta en çok karıştırılan noktalardan biridir.

Sahip, Grup, Diğerleri Ne Anlama Gelir?

Örnek izin:

-rw-r-----

Anlamı:

  • sahip: okuyabilir, yazabilir
  • grup: okuyabilir
  • diğerleri: hiçbir işlem yapamaz

Bir kullanıcı dosyanın sahibi değilse ama dosyanın grubuna üyeyse, ikinci üçlü dikkate alınır.

chmod Komutunun Mantığı

chmod komutu iki temel biçimde kullanılır:

  • sembolik yöntem
  • sayısal yöntem

Sembolik yöntemde şu harfler kullanılır:

  • u: sahip
  • g: grup
  • o: diğerleri
  • a: herkes

İşlemler:

  • + ekle
  • - kaldır
  • = tam olarak ayarla

chmod Sembolik Örnekler

Bir dosyaya çalıştırma izni eklemek:

chmod u+x dosya_adı

Grubun yazma iznini eklemek:

chmod g+w dosya_adı

Diğerlerinden okuma iznini kaldırmak:

chmod o-r dosya_adı

Bir dizini yalnızca sahibine açmak:

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

İlk örneklerde daha kontrollü izinler görmek, daha doğru bir alışkanlık kazandırır.

Sayısal Yöntem

Sayısal yöntemde:

  • r = 4
  • w = 2
  • x = 1

Toplanarak değer bulunur.

Kısa tablo:

İzin Değer
r 4
w 2
x 1

Örnekler:

  • rw- = 6
  • r-x = 5
  • rwx = 7
  • --- = 0

Bu değerler sırasıyla sahip, grup ve diğerleri için yazılır.

Sayısal Örnek 1

Yalnızca sahibi okuyup yazabilsin:

-rw-------

Parçalama:

rw- --- ---

Hesap:

  • sahip = 6
  • grup = 0
  • diğerleri = 0

Komut:

chmod 600 dosya_adı

Sayısal Örnek 2

Bir dizinde sahip ve grup tam yetkili olsun, diğerleri erişemesin:

drwxrwx---

Parçalama:

rwx rwx ---

Hesap:

  • sahip = 7
  • grup = 7
  • diğerleri = 0

Komut:

chmod 770 dizin_adı

Sembolik karşılığı:

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

Kısa Not: Varsayılan İzinler Neden Böyle Gelir?

Yeni oluşturulan dosya ve dizinlerin izinleri tamamen rastgele belirlenmez.

Burada umask adı verilen ayar da devreye girer.

Örneğin çoğu sistemde:

  • yeni dosya çoğunlukla 644,
  • yeni dizin çoğunlukla 755

gibi görünür.

Bu derste umask ayrıntısına girmiyoruz; ama varsayılan izinlerin arka planında böyle bir mekanizma olduğunu bilmek yeterlidir.

Sahiplik Değiştirme: chown

Bir dosya veya dizinin sahibini, istenirse grubunu değiştirmek için:

chown yeni_sahip[:yeni_grup] dosya/dizin

Örnek:

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

Bu komut çoğu durumda sudo gerektirir.

Grup Sahipliğini Değiştirme: chgrp

Sadece grup bilgisini değiştirmek için:

chgrp yeni_grup dosya/dizin

Örnek:

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

cezmi@server:~$ sudo chgrp proje benioku

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

chown ve chgrp, izinlerden farklı olarak “kim adına” kısmını değiştirir.

Çalıştırılabilir Dosya İzni

Bir betiği doğrudan ./dosya_adı biçiminde çalıştırmak için x izni gerekir.

Örnek dosya:

#!/bin/bash
echo Merhaba Dünya

İzin yoksa:

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

İzin verelim:

chmod +x merhaba
./merhaba

Bu durumda dosya doğrudan çalıştırılabilir hâle gelir.

Özet

Bu derste şu ilişkiyi kurduk:

  • kullanıcılar ve gruplar sistemdeki kimlik yapısını oluşturur,
  • su ve sudo bu kimliklerle işlem yapmayı sağlar,
  • dosya ve dizinlerde sahiplik ile izinler birlikte değerlendirilir,
  • chmod, chown ve chgrp bu yapıyı yönetmek için kullanılır.

Bu mantık anlaşılınca komutlar tek tek ezberlenmesi gereken parçalar olmaktan çıkar.

Alıştırmalar

  1. foo kullanıcısını oluşturun.
  2. proje adında bir grup açın.
  3. foo kullanıcısını proje grubuna ekleyin.
  4. rapor.txt adlı bir dosya oluşturup sahibini foo yapın.
  5. Dosyanın izinlerini yalnızca sahibi okuyup yazabilecek şekilde ayarlayın.
  6. sudo -u foo whoami komutunu çalıştırın.
  7. ls -l rapor.txt çıktısına bakıp şu soruya cevap verin: Bu dosyayı aynı gruptaki başka bir kullanıcı okuyabilir mi?
  8. Aynı dosyanın izinlerini grup da okuyabilecek şekilde değiştirin.
  9. Son durumda şu soruya cevap verin: Sahip, grup ve diğerleri için hangi izinler oluştu?

Teşekkürler!