Sunucu Yönetimi & Linux

    Linux'ta Kullanıcı ve Grup Yönetimi

    Linux sunucuda kullanıcı ve grup oluşturma, düzenleme, yetki devri ve hesap yönetiminin temel komutları.

    12 dk okuma Güncellendi: 10 Temmuz 2026

    Linux, ta baştan çok kullanıcılı (multi-user) bir işletim sistemi olarak tasarlandı. Aynı sunucuya farklı kişilerin, farklı servislerin ve farklı otomasyon süreçlerinin bağlanabilmesi; her birinin kendi dosyalarına, kendi süreçlerine ve kendi yetki sınırlarına sahip olabilmesi bu tasarımın doğrudan sonucudur. Bir web sunucusunda Nginx'i çalıştıran hesapla, sizin SSH ile bağlandığınız hesabın ve gece yarısı yedek alan cron işinin hesabının birbirinden ayrı olması tesadüf değil, bilinçli bir güvenlik modelidir. Bu ayrımın taşıyıcı sütunları da kullanıcılar ve gruplardır.

    Bu rehberde bir Linux sunucusunda kullanıcı hesaplarını sıfırdan nasıl oluşturacağınızı, gruplarla yetkileri nasıl düzenli tutacağınızı ve gündelik yönetimde en çok işinize yarayacak komutları örneklerle ele alıyoruz. useradd ile adduser arasındaki farktan başlayıp usermod, passwd, groupadd ve userdel komutlarına; oradan /etc/passwd ve /etc/group dosyalarının anatomisine geçiyoruz. Son bölümlerde ise bir hesabı geçici olarak kapatmak (kilitleme), servisler için sistem kullanıcıları oluşturmak ve tüm bunları güvenli bir düzende tutmak için pratik öneriler bulacaksınız. Komutların çoğu root yetkisi (sudo) gerektirir; örneklerde bunu varsayıyoruz.

    Linux'ta Kullanıcılar ve Gruplar Nasıl Çalışır?#

    Linux, insanlarla değil sayılarla çalışır. Sizin bildiğiniz deploy ya da www-data gibi isimler aslında birer takma addır; çekirdek (kernel) her kullanıcıyı bir UID (User ID), her grubu bir GID (Group ID) tam sayısıyla tanır. İsimler yalnızca insanların okuması için /etc/passwd ve /etc/group dosyalarında bu sayılara eşlenir. Bir dosyanın "sahibi" dediğimizde de aslında dosyanın taşıdığı UID değerinden bahsederiz.

    UID değerlerinin belli aralıklara ayrılması bir gelenektir ve yönetimi kolaylaştırır:

    UID aralığıAnlamı
    0root (süper kullanıcı, tüm yetkiler)
    1-999Sistem/servis kullanıcıları (Nginx, MySQL, systemd servisleri)
    1000 ve üzeriGerçek (insan) kullanıcı hesapları

    Her kullanıcının bir birincil grubu (primary group) ve isteğe bağlı olarak birden çok ikincil (supplementary) grubu vardır. Birincil grup, o kullanıcının oluşturduğu yeni dosyalara varsayılan olarak atanan gruptur. İkincil gruplar ise bir kullanıcıya ek yetkiler devretmenin en temiz yoludur: örneğin bir kullanıcıyı docker grubuna eklerseniz, tek tek dosya izinleriyle uğraşmadan Docker soketine erişebilir hâle gelir. Grupların asıl gücü de burada ortaya çıkar — yetkiyi kişiye değil role bağlarsınız. Dosya sahipliği ve izin modelinin ayrıntılarını Linux dosya izinleri yazımızda ele aldık; bu rehber onun tamamlayıcısı niteliğindedir.

    Kullanıcı Oluşturma: useradd ve adduser#

    Yeni bir kullanıcı eklemenin iki yolu vardır ve ikisi sık sık karıştırılır.

    useradd, tüm dağıtımlarda bulunan düşük seviyeli, betiklere uygun (non-interactive) çekirdek komuttur. adduser ise (Debian/Ubuntu'da) useradd'i sarmalayan, ev dizinini oluşturan, parolayı soran ve varsayılanları sizin yerinize dolduran etkileşimli bir yardımcı betiktir. Elle tek kullanıcı açıyorsanız Ubuntu/Debian üzerinde adduser daha rahattır; otomasyon veya betik yazıyorsanız useradd tercih edilir.

    Aşağıda useradd ile eksiksiz bir kullanıcı oluşturmayı görüyoruz:

    # Ev dizini (-m) oluştur, kabuğu bash yap (-s), açıklama ekle (-c)
    useradd -m -s /bin/bash -c "Deploy Kullanicisi" deploy
    
    # Parola ata (etkileşimli sorar)
    passwd deploy
    

    Buradaki bayrakların anlamı önemlidir:

    • -m ev dizinini (/home/deploy) oluşturur ve /etc/skel içindeki iskelet dosyaları (.bashrc, .profile vb.) kopyalar. Bu bayrağı unutmak, "kullanıcı var ama ev dizini yok" sorununun en yaygın nedenidir.
    • -s /bin/bash oturum açma kabuğunu belirler. Çoğu sistemde useradd'in ham varsayılanı /bin/sh ya da hiç kabuk atamamak olabilir; interaktif bir kullanıcı için /bin/bash açıkça verilmelidir.
    • -c GECOS alanına açıklama (genelde tam ad) yazar.
    • -u 1500 ile belirli bir UID, -g grup ile belirli bir birincil grup zorlayabilirsiniz.

    Ubuntu/Debian'da aynı işi tek komutla ve rehberli biçimde yapmak için:

    adduser deploy
    

    Bu komut ev dizinini oluşturur, deploy adında bir birincil grup açar, parolayı ve isteğe bağlı ad/oda bilgilerini sorar. Kısacası pratikte "insan kullanıcı" açarken adduser, altyapı otomasyonunda useradd düşünün.

    passwd ile Parola ve Hesap Zamanlaması Yönetimi#

    Bir kullanıcının parolası hiçbir zaman /etc/passwd içinde açık metin olarak tutulmaz; karma (hash) hâlinde /etc/shadow dosyasında saklanır ve bu dosya yalnızca root tarafından okunabilir. Parola işlemlerinin tamamı passwd komutuyla yönetilir:

    passwd deploy          # deploy kullanıcısının parolasını (yeniden) ayarla
    passwd                 # kendi parolanızı değiştirin (root gerekmez)
    passwd -l deploy       # hesabı kilitle (parola ile girişi engelle)
    passwd -u deploy       # kilidi aç
    passwd -e deploy       # parolayı "süresi dolmuş" say → ilk girişte değiştirtir
    

    passwd -e özellikle yeni bir hesap teslim ederken çok işe yarar: kullanıcıya geçici bir parola verir, passwd -e ile süresini "dolmuş" işaretlersiniz ve kişi ilk girişte parolayı kendisi değiştirmek zorunda kalır. Böylece sizin belirlediğiniz geçici parola kalıcı olmaz.

    Parola politikasının zamanla ilgili tarafını (kaç günde bir değişmeli, ne zaman uyarı verilmeli) ise chage komutu yönetir:

    chage -l deploy                 # mevcut parola yaşlanma bilgisini listele
    chage -M 90 -W 7 deploy         # en fazla 90 günde bir değişsin, 7 gün önceden uyar
    

    Güçlü bir parola düzeni kurmak, sunucu güvenliğinin ucuz ama etkili adımlarından biridir; parola dışında SSH anahtarına geçiş gibi daha sağlam yöntemler için sunucu güvenliği temelleri yazımıza da göz atmanızı öneririz.

    Grup Oluşturma ve Kullanıcıyı Gruba Ekleme#

    Grup yönetimi, yetkileri temiz tutmanın anahtarıdır. Yeni bir grup groupadd ile oluşturulur:

    groupadd web                    # "web" adında yeni bir grup
    groupadd -g 1600 developers     # belirli bir GID ile grup
    

    Asıl kritik kısım bir kullanıcıyı gruba eklerken yapılır ve burada en sık düşülen tuzak -a bayrağını atlamaktır. Bir kullanıcıyı ikincil bir gruba eklemenin doğru biçimi şudur:

    usermod -aG web deploy          # DOĞRU: mevcut gruplara "web"i EKLE
    

    Buradaki -a "append/ekle" demektir ve -G ile birlikte kullanılması zorunludur. Eğer -a'yı unutup sadece usermod -G web deploy yazarsanız, kullanıcının tüm mevcut ikincil gruplarının üzerine yazılır ve kullanıcı yalnızca web grubunda kalır. Bu, bir yöneticiyi sudo grubundan yanlışlıkla çıkarıp sunucuya kilitlemenin klasik yoludur — o yüzden usermod ile grup eklerken her zaman -aG yazın.

    Bir kullanıcının hangi gruplarda olduğunu görmek için:

    groups deploy                   # deploy'un tüm grupları
    id deploy                       # UID, birincil GID ve tüm grupları tek satırda
    

    Bir kullanıcıyı gruptan çıkarmak için gpasswd -d kullanici grup kullanılır:

    gpasswd -d deploy web           # deploy'u "web" grubundan çıkar
    

    Önemli bir ayrıntı: grup üyeliği değişiklikleri kullanıcının aktif oturumuna anında yansımaz. Kullanıcının yeni grup yetkisini kazanması için oturumu kapatıp açması (ya da servisse yeniden başlatılması) gerekir; aynı oturumda hızlı test için newgrp web komutu kullanılabilir.

    usermod ve userdel: Kullanıcıyı Düzenleme ve Silme#

    usermod yalnızca grup eklemek için değil, var olan bir hesabın hemen her özelliğini değiştirmek için kullanılan İsviçre çakısıdır:

    usermod -s /usr/sbin/nologin deploy   # kabuğu değiştir (girişi kapatmak için)
    usermod -l yenideploy deploy          # kullanıcı adını değiştir (-l = login name)
    usermod -d /srv/deploy -m deploy      # ev dizinini taşı (-m içeriği de taşır)
    usermod -g www-data deploy            # birincil grubu değiştir
    usermod -L deploy                     # hesabı kilitle (passwd -l ile aynı etki)
    usermod -U deploy                     # kilidi aç
    

    Bir hesabı tamamen kaldırmak içinse userdel kullanılır. Burada dikkat edilmesi gereken nokta, ev dizininin ve kullanıcıya ait dosyaların kaderidir:

    userdel deploy          # hesabı sil, AMA ev dizini /home/deploy'u BIRAK
    userdel -r deploy       # hesabı ve ev dizinini + posta kutusunu birlikte sil
    

    -r bayrağı olmadan userdel yalnızca hesabı kaldırır; /home/deploy dizini ortada kalır ve o dizinin sahipliği artık "sahipsiz" bir UID'ye düşer. İleride aynı UID başka bir kullanıcıya atanırsa, o kullanıcı istemeden eski dosyaların sahibi hâline gelir. Bu yüzden silmeden önce dizinin yedeğini almak veya -r ile bilinçli biçimde temizlemek iyi bir alışkanlıktır. Kullanıcının o an açık bir süreci varsa userdel uyarı verebilir; önce ilgili süreçleri sonlandırmak gerekir.

    /etc/passwd ve /etc/group Dosyalarının Yapısı#

    Tüm bu komutlar aslında birkaç düz metin dosyasını düzenler. Bu dosyaları okuyabilmek, sorun giderirken paha biçilmezdir. /etc/passwd her kullanıcı için iki nokta üst üste ile ayrılmış yedi alanlık bir satır tutar:

    deploy:x:1001:1001:Deploy Kullanicisi:/home/deploy:/bin/bash
    

    Bu satırın alanları sırasıyla şöyledir:

    AlanÖrnekAnlamı
    1deployKullanıcı adı
    2xParola yer tutucusu (gerçek karma /etc/shadow'da)
    31001UID
    41001Birincil GID
    5Deploy KullanicisiGECOS (tam ad/açıklama)
    6/home/deployEv dizini
    7/bin/bashOturum kabuğu

    İkinci alandaki x, "parola karması burada değil, /etc/shadow'a bak" anlamına gelir. Yedinci alandaki kabuk değeri, hesabın interaktif giriş yapıp yapamayacağını belirler — buraya /usr/sbin/nologin ya da /bin/false yazılırsa kullanıcı SSH ile shell oturumu açamaz.

    /etc/group dosyası ise daha basittir, dört alan taşır:

    web:x:1600:deploy,ci-bot
    

    Alanlar sırasıyla grup adı, parola yer tutucusu, GID ve o grubun ikincil üyelerinin virgülle ayrılmış listesidir. Dikkat: bir kullanıcının birincil grubu bu listede görünmez, çünkü o bağ /etc/passwd'deki dördüncü alanda tutulur. Yani bir kullanıcının tam grup tablosunu çıkarmak için hem /etc/group'a hem birincil GID'ye bakmak gerekir — id komutu bu ikisini sizin için birleştirir. Bu dosyaları elle düzenlemek mümkündür ama önerilmez; usermod/gpasswd gibi komutlar aynı anda kilitleme ve tutarlılık denetimi yaptığından çok daha güvenlidir.

    Hesap Kilitleme ve Sistem Kullanıcıları#

    Bazen bir hesabı silmek istemezsiniz ama girişini de kapatmak istersiniz — örneğin işten ayrılan bir ekip üyesinin dosyaları hâlâ gerekliyken hesabına giriş yapılmasını engellemek gibi. Bunun için iki tamamlayıcı yöntem vardır ve ikisini birlikte kullanmak en sağlamıdır.

    Birincisi parolayı kilitlemektir. passwd -l deploy (veya usermod -L deploy), /etc/shadow'daki parola karmasının başına bir ! ekleyerek onu eşleşmesi imkânsız hâle getirir. Bu, parola ile girişi durdurur ancak SSH anahtarı ile girişi tek başına engellemez. Bu yüzden ikinci adım, kabuğu devre dışı bırakmaktır:

    passwd -l deploy                          # parola girişini kilitle
    usermod -s /usr/sbin/nologin deploy       # shell oturumunu da kapat
    

    /usr/sbin/nologin kabuğu, kullanıcı giriş yapmaya çalıştığında kibar bir mesaj gösterip oturumu hemen kapatır. Kilidi geri açmak için passwd -u deploy ve kabuğu tekrar /bin/bash yapmak yeterlidir.

    Sistem (servis) kullanıcıları ise bu mantığın kalıcı hâlidir. Nginx, MySQL, Redis gibi servisler kendi adlarına açılmış, insan olmayan kullanıcılar altında çalışır. Bu hesapların ne parolası ne de shell'i olur; amaçları yalnızca ilgili sürece kendi izin sınırını çizmektir. Bir servis kullanıcısını şöyle oluşturursunuz:

    # Sistem kullanıcısı (-r), shell yok, ev dizini oluşturulmaz
    useradd -r -s /usr/sbin/nologin -M appservice
    

    -r bayrağı UID'yi sistem aralığından (genelde 1000 altı) seçer, -M ev dizini oluşturmaz ve nologin kabuğu interaktif girişi baştan imkânsız kılar. Bir web uygulamasını root yerine böyle sınırlı bir hesap altında çalıştırmak, olası bir güvenlik açığında saldırganın erişebileceği alanı daralttığı için temel bir sağlamlaştırma adımıdır.

    Kullanıcı Yönetiminde Güvenlik Önerileri#

    Kullanıcı hesapları, bir sunucunun en çok hedef alınan yüzeyidir; birkaç disiplinli alışkanlık saldırı riskini belirgin biçimde düşürür.

    • root ile doğrudan çalışmayın. Kendinize normal bir kullanıcı açın, onu sudo (Debian/Ubuntu) veya wheel (RHEL/AlmaLinux/Rocky) grubuna ekleyin ve günlük işleri sudo ile yapın. Böylece her ayrıcalıklı komut günlüğe yazılır ve yanlış bir komutun etkisi sınırlı kalır.
    • En az yetki ilkesini uygulayın. Bir kullanıcıya gerçekten ihtiyacı olan grupları verin; "ne olur ne olmaz" diye herkesi sudo grubuna atmayın. Yetkiyi role bağlamak için ikincil grupları kullanın.
    • Parola yerine SSH anahtarını tercih edin. Anahtar tabanlı kimlik doğrulama, kaba kuvvet (brute-force) saldırılarına karşı parolalardan çok daha dayanıklıdır. Anahtar kullanıyorsanız /etc/ssh/sshd_config içinde PasswordAuthentication no ile parola girişini tamamen kapatabilirsiniz.
    • Kullanılmayan hesapları temizleyin. Ayrılan çalışanların veya kaldırılmış uygulamaların hesaplarını kilitleyin ya da silin; unutulmuş bir hesap açık bir kapıdır.
    • Kabuk atamalarını bilinçli yapın. İnsan olmayan her hesaba nologin verin; yalnızca gerçekten kabuğa ihtiyacı olan kullanıcılara /bin/bash tanıyın.
    • /etc/sudoers dosyasını her zaman visudo ile düzenleyin. visudo kaydetmeden önce söz dizimini denetler; doğrudan düzenlerken yapılan bir hata tüm sudo erişimini bozup sizi sunucudan kilitleyebilir.

    Bu ilkeleri en rahat uygulayabileceğiniz yer, kök (root) erişimine tam sahip olduğunuz bir ortamdır; paylaşımlı bir hosting hesabında kullanıcı/grup katmanı büyük ölçüde barındırma sağlayıcısı tarafından yönetilir. Kendi kullanıcı düzeninizi baştan sona kurgulamak istiyorsanız VDS veya sanal sunucu paketlerimiz bu esnekliği sunar; kurulumun ve sürekli bakımın yükünü bize bırakmak isterseniz sunucu yönetimi hizmetimiz devreye girer.

    Sıkça Sorulan Sorular#

    useradd ile adduser arasındaki fark nedir?#

    useradd, her Linux dağıtımında bulunan düşük seviyeli çekirdek komuttur ve varsayılan olarak ev dizini veya kabuk oluşturmayabilir; bu yüzden betiklerde ve otomasyonda tercih edilir. adduser ise Debian ve Ubuntu'ya özgü, useradd'i sarmalayan etkileşimli bir yardımcıdır ve ev dizinini oluşturup parolayı sizin için sorarak elle kullanıcı açmayı kolaylaştırır.

    usermod -aG komutundaki -a bayrağı neden önemli?#

    -a bayrağı "append" yani ekleme anlamına gelir ve kullanıcıyı mevcut gruplarına dokunmadan yeni bir gruba ekler. Eğer -a olmadan usermod -G grup kullanici yazarsanız kullanıcının tüm ikincil grupları silinip yalnızca belirttiğiniz grupla değiştirilir; bu da bir yöneticiyi yanlışlıkla sudo grubundan çıkarıp sunucuya kilitleyebileceği için grup eklerken her zaman -aG kullanılmalıdır.

    Bir kullanıcının hangi gruplarda olduğunu nasıl görürüm?#

    En pratik yol id kullanici komutunu çalıştırmaktır; bu komut kullanıcının UID değerini, birincil grubunu ve tüm ikincil gruplarını tek satırda gösterir. Yalnızca grup adlarını görmek isterseniz groups kullanici komutu da aynı bilgiyi daha sade biçimde verir.

    userdel çalıştırınca kullanıcının dosyaları da silinir mi?#

    Hayır, tek başına userdel yalnızca hesabı kaldırır ve ev dizini ile kullanıcıya ait dosyaları olduğu gibi bırakır. Ev dizinini ve posta kutusunu da temizlemek istiyorsanız userdel -r kullanici biçimini kullanmalısınız; aksi hâlde sahipsiz kalan dosyalar ileride aynı UID'yi alan başka bir kullanıcıya geçebilir.

    Bir hesabı silmeden nasıl geçici olarak kapatabilirim?#

    Bir hesabı silmeden kapatmanın en sağlam yolu iki adımı birleştirmektir; önce passwd -l kullanici ile parola girişini kilitler, ardından usermod -s /usr/sbin/nologin kullanici ile kabuk oturumunu kapatırsınız. Bu ikili yaklaşım hem parola hem de anahtar/shell tabanlı girişi engeller ve daha sonra passwd -u ile kabuğu geri açarak hesabı yeniden etkinleştirebilirsiniz.

    Sistem kullanıcısı ile normal kullanıcı arasındaki fark nedir?#

    Normal kullanıcılar insanların oturum açması için tasarlanmıştır, genelde 1000 ve üzeri bir UID taşır, ev dizinleri ve interaktif bir kabukları vardır. Sistem kullanıcıları ise Nginx veya MySQL gibi servisleri çalıştırmak için -r bayrağıyla açılır, düşük UID aralığında yer alır, çoğunlukla parolaları ve kabukları olmaz; amaçları giriş yapmak değil, ilgili sürece sınırlı bir yetki alanı çizmektir.

    Kapanış#

    Kullanıcı ve grup yönetimi ilk bakışta birkaç komuttan ibaret görünse de, aslında bir sunucunun güvenlik ve düzen felsefesinin temelini oluşturur. useradd/adduser ile hesap açmayı, usermod -aG ile yetkileri gruplara devretmeyi, passwd ile parola politikasını ve userdel ile temizliği doğru yaptığınızda; hem uygulamalarınız sorunsuz çalışır hem de olası bir sızıntının etki alanı en aza iner. /etc/passwd ve /etc/group dosyalarını okuyabilmek de sorun giderme anlarında size büyük zaman kazandırır.

    Bu düzeni tam anlamıyla kurgulayabilmek için kök erişimine sahip olmanız gerekir. Kendi kullanıcı ve grup yapınızı sıfırdan kurmak isterseniz VDS ve sanal sunucu çözümlerimize, kurulum ile sürekli bakımı uzman ekibimize bırakmak isterseniz sunucu yönetimi hizmetimize göz atabilir; sunucunuzu daha da sağlamlaştırmak için SSL ve WAF katmanlarımızı ekleyebilirsiniz. Sorularınız olursa Clou.TR ekibi bir tık uzağınızda.

    KullanıcıGrupLinux

    Uygulamaya geçmeye hazır mısınız?

    NVMe SSD, ücretsiz SSL ve %99.9 uptime garantisiyle Clou.TR hosting ve sunucu çözümleriyle projenizi hayata geçirin.