15%

Tüm Hosting Hizmetlerinde %15 indirim

Becerilerini test et ve herhangi bir hosting planında İndirim kazan

Kodu kullanın:

Skills
Başlayın
09.10.2024

useradd ve adduser: Teknik Farklılıklar, Kullanım Senaryoları ve Her Birinin Ne Zaman Kullanılacağı

`useradd`, neredeyse her Linux dağıtımında mevcut olan ve `/etc/passwd`, `/etc/shadow` ve `/etc/group` dosyalarına doğrudan yazarak kullanıcı hesapları oluşturan düşük seviyeli bir ikili yardımcı programdır. `adduser`, Debian tabanlı sistemlerde genellikle Perl ile yazılmış, dahili olarak `useradd` çağırırken ev dizini oluşturma, iskelet dosyası doldurma, parola sorgulama ve GECOS alanı toplama işlemlerini otomatikleştiren daha üst düzey bir sarmalayıcı betiktir. Pratik fark yalnızca ergonomi değildir: otomatik bir sağlama hattında veya Debian dışı bir sistemde yanlış aracı seçmek, sessiz sedasız eksik kullanıcı hesapları oluşturabilir.

Her iki komut da nihayetinde bir kullanıcıyı sistemin kimlik doğrulama veritabanına kaydeder; ancak davranışları varsayılanlar, etkileşim, taşınabilirlik ve betiklenebilirlik açısından önemli ölçüde farklılaşır. Bu kılavuz, bir yöneticinin bilinçli bir karar vermesi için ihtiyaç duyduğu her teknik ayrımı kapsamaktadır.

useradd Arka Planda Gerçekte Ne Yapar

`useradd`, shadow-utils paketinin (eski dağıtımlarda bazen `passwd` olarak adlandırılır) bir parçasıdır. Çağrıldığında bir dizi atomik işlem gerçekleştirir:

  1. Varsayılan UID aralıklarını, parola eskime politikalarını ve varsayılan olarak ev dizini oluşturulup oluşturulmayacağını belirlemek için `/etc/login.defs` dosyasını okur.
  2. Varsayılan kabuk, iskelet dizini yolu ve grup davranışı için `/etc/default/useradd` dosyasını okur.
  3. `/etc/passwd` ve `/etc/shadow` dosyalarına yeni bir giriş yazar.
  4. `-m` açıkça geçirilmişse isteğe bağlı olarak bir ev dizini oluşturur ve `/etc/skel` dizininden dosyaları kopyalar.
  5. `/etc/login.defs` dosyasında `USERGROUPS_ENAB` değeri `yes` olarak ayarlanmışsa isteğe bağlı olarak kullanıcı adıyla eşleşen özel bir grup oluşturur.

Pek çok kılavuzun atladığı kritik bir nokta: Red Hat tabanlı dağıtımlarda (RHEL, CentOS, Rocky Linux, AlmaLinux), `useradd` varsayılan olarak ev dizinini oluşturur; çünkü `/etc/login.defs` dosyası `CREATE_HOME yes` değerini ayarlar. Debian ve Ubuntu’da ise bu gerçekleşmez — `/etc/default/useradd` dosyasını değiştirmediğiniz sürece `-m` bayrağı zorunludur. Bu davranışsal asimetri, yöneticiler dağıtım aileleri arasında geçiş yaptığında sık karşılaşılan bir karışıklık kaynağıdır.

Temel Bayraklar ve Davranışları

BayrakAmaçNotlar
———————-
`-m`Ev dizini oluşturDebian/Ubuntu’da yapılandırma değişikliği olmadan zorunludur
`-d /path`Özel ev dizini yolu belirle`-m` da kullanılmadıkça dizini oluşturmaz
`-s /bin/bash`Giriş kabuğunu ayarlaVarsayılan olarak `/bin/sh` veya `/etc/default/useradd` dosyasındaki değer kullanılır
`-u UID`Belirli bir UID ataBenzersiz olmalıdır; yinelenenlere izin vermek için `-o` kullanın
`-g GID`Birincil grubu ayarlaGrup zaten mevcut olmalıdır
`-G group1,group2`Ek gruplar ekleVirgülle ayrılmış, boşluk olmadan
`-e YYYY-MM-DD`Hesap sona erme tarihi`/etc/shadow` dosyasının 8. alanına yazılır
`-f days`Parola etkinlik dışı kalma süresiSona ermeden sonra hesabın kilitlenmesine kadar geçen gün sayısı
`-r`Sistem hesabı oluştur`/etc/login.defs` dosyasında `SYS_UID_MAX` değerinin altında UID, varsayılan olarak ev dizini yok
`-M`Ev dizini açıkça oluşturmaDağıtım varsayılanlarını geçersiz kılar
`-N`Kullanıcıya özel grup oluşturmaKullanıcının birincil grubu varsayılan grup olur
`-k /path`Alternatif iskelet dizini belirt`/etc/skel` değerini geçersiz kılar

Tam Seçeneklerle Pratik useradd Örneği

“`bash

useradd

-m

-d /srv/appuser

-s /bin/bash

-u 1500

-g developers

-G sudo,docker

-e 2025-12-31

-c "Application Service Account"

appuser

passwd appuser

“`

`passwd` çağrılana kadar parola ayarlanmaz. O zamana kadar hesap mevcut olmakla birlikte kilitlidir — shadow girişi, parola karması olarak `!` içerir ve parola kimlik doğrulaması yoluyla girişi engeller. Ancak SSH anahtar tabanlı giriş bu durumdan etkilenmez.

adduser Arka Planda Gerçekte Ne Yapar

Debian ve Ubuntu’da `adduser`, `/usr/sbin/adduser` konumunda bulunan bir Perl betiğidir. Kendi yapılandırmasını `/etc/login.defs` dosyasından ayrı bir dosya olan `/etc/adduser.conf` dosyasından okur ve ardından bu yapılandırmaya ile kullanıcı girdisine dayanarak uygun bayraklarla `useradd` komutunu çağırır.

Betik, `useradd` komutunun tek başına gerçekleştirmediği ek adımlar uygular:

  • Parola için etkileşimli olarak soru sorar ve ikinci bir girişle doğrular.
  • Yönlendirmeli istemler aracılığıyla GECOS alanlarını (tam ad, oda numarası, iş telefonu, ev telefonu, diğer) toplar.
  • `-m` gerektirmeden `/etc/skel` dizininden iskelet dosyalarını otomatik olarak kopyalar.
  • Ev dizininde doğru sahiplik ve izinleri ayarlar.
  • İsteğe bağlı olarak kullanıcıyı `/etc/adduser.conf` dosyasında tanımlanan ek gruplara ekler.

Red Hat tabanlı sistemlerde, `adduser` genellikle `useradd` komutuna sembolik bir bağlantıdır; yani düşük seviyeli ikili programla aynı şekilde davranır — etkileşimli bir sarmalayıcı yoktur. Bu, dağıtımlar arası betikler yazarken en önemli taşınabilirlik sorunudur.

adduser Yapılandırma Dosyası: /etc/adduser.conf

Davranışı etkileyen `/etc/adduser.conf` dosyasındaki temel yönergeler:

“`

DSHELL=/bin/bash # Default shell

DHOME=/home # Parent directory for home directories

GROUPHOMES=no # Whether to create group-named subdirectories

LETTERHOMES=no # Whether to use first-letter subdirectories

USERGROUPS=yes # Create a group with the same name as the user

USERS_GID=100 # Default GID if USERGROUPS=no

DIR_MODE=0755 # Permissions on new home directories

SETGID_HOME=no

QUOTAUSER=""

SKEL=/etc/skel

SKEL_IGNORE_REGEX="dpkg-(old|new|dist|tmp)"

“`

Bu dosyayı değiştirmek, her seferinde bayrak geçirmeden bir Debian/Ubuntu sunucu filosunda kullanıcı oluşturmayı standartlaştırmanıza olanak tanır.

Pratik adduser Örneği

“`bash

adduser customuser

“`

Etkileşimli oturum şöyle görünür:

“`

Adding user 'customuser' …

Adding new group 'customuser' (1001) …

Adding new user 'customuser' (1001) with group 'customuser' …

Creating home directory '/home/customuser' …

Copying files from '/etc/skel' …

New password:

Retype new password:

passwd: password updated successfully

Changing the user information for customuser

Enter the new value, or press ENTER for the default

Full Name []: Jane Smith

Room Number []:

Work Phone []:

Home Phone []:

Other []:

Is the information correct? [Y/n] Y

“`

Mevcut bir kullanıcıyı `adduser` ile etkileşimsiz olarak bir gruba eklemek için:

“`bash

adduser customuser sudo

“`

Bu kayda değer bir özelliktir: `adduser`, tek bir komutla `useradd` komutunun çoğaltamadığı bir grup üyeliği yönetim aracı olarak da işlev görür.

Yan Yana Karşılaştırma

Özellik`useradd``adduser`
Türİkili (C programı)Betik (Debian’da Perl, RHEL’de sembolik bağlantı)
EtkileşimEtkileşimsiz; tüm seçenekler bayraklar aracılığıylaVarsayılan olarak etkileşimli istemler
Ev dizini`-m` geçirilmediği sürece oluşturulmaz (Debian)Otomatik olarak oluşturulur
Parola kurulumuAyrı `passwd` komutu gerektirirOluşturma sırasında sorulur
GECOS alanlarıTek bir dize olarak `-c` bayrağıyla ayarlanırEtkileşimli olarak alan alan toplanır
İskelet dosyalarıYalnızca `-m` bayrağıyla kopyalanırHer zaman kopyalanır
Yapılandırma dosyası`/etc/login.defs`, `/etc/default/useradd``/etc/adduser.conf`
Dağıtımlar arası kullanılabilirlikTüm Linux dağıtımlarıYalnızca Debian/Ubuntu (sarmalayıcı betik olarak)
Betik uygunluğuMükemmel — tamamen etkileşimsizZayıf — istemleri önlemek için `–disabled-password` ve `–gecos` bayrakları gerektirir
Sistem hesapları`-r` bayrağıyla desteklenir`–system` bayrağıyla desteklenir
Grup yönetimiYalnızca oluşturma zamanındaOluşturma sonrasında kullanıcıyı mevcut gruba ekleyebilir
Ayrıntı düzeyiHer parametre üzerinde tam kontrolÖnceden belirlenmiş varsayılanlar, daha az ayrıntılı

useradd Ne Zaman Kullanılır

Otomasyon ve Kod Olarak Altyapı

`useradd`, etkileşimsiz her bağlamda doğru seçimdir: Ansible playbook’ları, Terraform sağlayıcıları, Docker `RUN` talimatları, cloud-init betikleri ve CI/CD hattları. Stdin bağımlılığı olmadan belirleyici çıktı üretir.

“`bash

Ansible task equivalent

useradd -m -s /bin/bash -G sudo -c "Deploy User" deployuser

echo "deployuser:$(openssl passwd -6 'securepassword')" | chpasswd

“`

Dağıtımlar Arası Taşınabilirlik

Hem Debian tabanlı hem de RHEL tabanlı sistemlerde çalışması amaçlanan herhangi bir kabuk betiği `useradd` kullanmalıdır. `adduser` davranışına güvenmek, CentOS, Fedora, Rocky Linux veya Alpine Linux’ta sessiz hatalara veya beklenmedik davranışlara yol açar.

Sistem ve Servis Hesapları

Daemon’lar için kilitli, girişsiz servis hesapları oluşturmak `useradd` komutunun uzmanlık alanıdır:

“`bash

useradd -r -s /usr/sbin/nologin -d /var/lib/myservice -m myservice

“`

`-r` bayrağı, sistem hesabı eşiğinin altında bir UID atar, yöneticilere bunun bir insan kullanıcı hesabı olmadığını bildirir ve servis yalıtımının kritik önem taşıdığı VPS Hosting ortamlarında uygulama dağıtımı için standart bir kalıptır.

Hassas UID/GID Kontrolü

NFS ortamlarında, konteyner orkestrasyonunda veya birden fazla sunucu arasında kullanıcı veritabanlarını senkronize ederken tutarlı UID ve GID’ler zorunludur. `useradd -u 1500 -g 1500` bunu garanti eder; `adduser` ise önemli yapılandırma olmadan aynı belirleyici kontrolü sunmaz.

adduser Ne Zaman Kullanılır

Etkileşimli Sunucu Kurulumu

Yeni bir Dedicated Server‘ı manuel olarak sağlarken ve ilk birkaç insan kullanıcı hesabını eklerken, `adduser` eksik kurulum riskini azaltır. Yönlendirmeli istemler, parola adımını unutmayı neredeyse imkânsız kılar.

Standart Varsayılanlarla Debian/Ubuntu Ortamları

Tüm altyapınız Debian veya Ubuntu üzerinde çalışıyorsa ve standart ev dizinli kullanıcılar oluşturuyorsanız, `adduser` daha az bayrak hatırlamanızı gerektirerek daha hızlı doğru sonuçlar üretir.

Oluşturma Sonrası Grup Yönetimi

Mevcut bir kullanıcıyı mevcut bir gruba eklemek için `adduser username groupname` sözdizimi, `usermod -aG groupname username` komutuna kıyasla daha temizdir; her ikisi de geçerlidir.

Genç Yöneticilerin Yetiştirilmesi

`adduser` komutunun etkileşimli yapısı, onu daha iyi bir öğretim aracı haline getirir. Önemli alanları (parola, tam ad) öne çıkarır ve yönetici hazır olana kadar UID aralıkları ile iskelet dizinlerinin karmaşıklığını gizler.

Kritik Uç Durumlar ve Tuzaklar

Eksik Ev Dizini Tuzağı

Debian/Ubuntu’da `useradd username` komutunu `-m` olmadan çalıştırmak, kullanıcıyı oluşturur ancak ev dizinini oluşturmaz. Kullanıcı giriş yapabilir (bir parola ayarlandıktan sonra), ancak `$HOME` mevcut olmayacaktır; bu durum, ilk girişte ev dizinine yazan her uygulamada — `.bash_history`, `.ssh/authorized_keys` ve pek çok uygulama yapılandırma dizini dahil — hatalara yol açar.

“`bash

Verify home directory existence after creation

ls -la /home/newuser || echo "Home directory missing — run: mkhomedir_helper newuser"

“`

Shadow Dosyası Kilitleme

Her iki komut da yazma işlemleri sırasında `/etc/shadow` dosyasını kilitler. Aynı anda düzinelerce kullanıcı oluşturan yüksek eşzamanlılıklı sağlama betiklerinde bu durum yarış koşullarına neden olur. Toplu kullanıcı oluştururken bir kuyruk veya sıralı yürütme kullanın.

Konteynerleştirilmiş Ortamlarda UID Çakışması

VPS with cPanel veya diğer kontrol paneli ortamlarında uygulama dağıtırken, panel UID tahsisini kendisi yönetir. `useradd` komutunu sabit kodlanmış bir UID ile manuel olarak çalıştırmak, panel tarafından atanan UID’lerle çakışabilir ve birden fazla hesapta izin hatalarına neden olabilir. Bir UID’yi manuel olarak belirtmeden önce her zaman `getent passwd | awk -F: '{print $3}' | sort -n` dosyasını kontrol edin.

Betik Yazımı için adduser –disabled-password

Bir betikte `adduser` kullanmanız gerekiyorsa (örneğin, `/etc/adduser.conf` varsayılanlarından yararlanmak için), etkileşimli istemleri bastırın:

“`bash

adduser –disabled-password –gecos "Automated User,,," scriptuser

echo "scriptuser:$(openssl passwd -6 'password')" | chpasswd

“`

`–gecos` bayrağı, GECOS alanlarıyla eşleşen virgülle ayrılmış bir dize kabul ederek tüm etkileşimli istemleri ortadan kaldırır.

PAM ve NSS Entegrasyonu

Ne `useradd` ne de `adduser`, LDAP, Active Directory veya diğer merkezi kimlik doğrulama sistemleri için PAM modüllerini veya NSS (Name Service Switch) girişlerini yapılandırır. `sssd` veya `winbind` ile entegre sunucularda, her iki komutla yerel kullanıcı oluşturmak, dizin hizmeti hesaplarıyla çakışabilecek veya onlar tarafından geçersiz kılınabilecek hesaplar oluşturur. Etki alanına katılmış sistemlerde yerel kullanıcı oluşturmadan önce `/etc/nsswitch.conf` dosyasını doğrulayın.

İskelet Dosyası Özelleştirme

Her iki komut da varsayılan olarak `/etc/skel` dizininden kopyalar. Her kullanıcının önceden yapılandırılmış `.bashrc`, `.vimrc` veya SSH yapılandırmasına ihtiyaç duyduğu Shared Web Hosting ortamlarını yöneten ekipler için, hesap oluşturulduktan sonra dosyaları değiştirmek yerine her iki komutu çalıştırmadan önce `/etc/skel` dizinini doldurmak doğru yaklaşımdır.

Kullanıcı Oluşturmayı Doğrulama

Hangi komutu kullandığınızdan bağımsız olarak sonucu doğrulayın:

“`bash

Check passwd entry

getent passwd newuser

Check shadow entry (requires root)

getent shadow newuser

Check group memberships

groups newuser

id newuser

Verify home directory and permissions

ls -la /home/newuser

Test login shell

su -s /bin/bash – newuser -c "echo login successful"

“`

Kullanıcıları Değiştirme ve Silme

`useradd` ve `adduser` yalnızca hesap oluşturur. Oluşturma sonrası yönetim farklı komutlar kullanır:

  • `usermod` — Mevcut kullanıcı özelliklerini değiştirir (kabuk, gruplar, ev dizini, sona erme).
  • `userdel` / `deluser` — Hesapları kaldırır. Debian’daki `deluser –remove-home username` ayrıca ev dizinini ve posta biriktiricisini de kaldırır.
  • `passwd` — Parolaları ayarlar veya değiştirir, hesapları kilitler/kilidini açar.
  • `chage` — Parola eskime ve sona erme politikalarını yönetir.

“`bash

Lock an account without deleting it

usermod -L username

Unlock

usermod -U username

Force password change on next login

chage -d 0 username

“`

Pratik Karar Matrisi

Doğru komutu seçmek için bu kontrol listesini kullanın:

  • Betik Debian dışı bir sistemde mi çalışıyor ya da taşınabilir olması mı gerekiyor? `useradd` kullanın.
  • Bu otomatik, etkileşimsiz bir ortam mı (CI/CD, Ansible, Docker)? `useradd` kullanın.
  • NFS veya konteyner tutarlılığı için belirli bir UID/GID’e mi ihtiyacınız var? `useradd -u -g` kullanın.
  • Giriş kabuğu olmayan bir sistem/servis hesabı mı oluşturuyorsunuz? `useradd -r -s /usr/sbin/nologin` kullanın.
  • Debian/Ubuntu’dasınız ve etkileşimli olarak standart bir insan kullanıcı hesabı mı oluşturuyorsunuz? `adduser` kullanın.
  • Mevcut bir kullanıcıyı temiz bir tek satırlık komutla bir gruba eklemek mi istiyorsunuz? `adduser username groupname` kullanın.
  • Debian’da belge yazıyor veya genç personeli mi eğitiyorsunuz? `adduser` kullanın.
  • Ev dizini konumunu, sona ermeyi veya kabuğu ölçekte etkileşimsiz olarak özelleştirmeniz mi gerekiyor? Açık bayraklarla `useradd` kullanın.

Doğru kullanıcı hesabı yönetimi, sunucu güvenliğinin temelini oluşturur. İster tek bir VPS ister bir Dedicated Servers filosu yönetiyor olun, her komutun diske tam olarak ne yazdığını — ve neyi ayarlamadan bıraktığını — anlamak, eksik hesap sağlamadan kaynaklanan ayrıcalık yükseltme ve kimlik doğrulama hatası sınıfını önler.

SSS

useradd varsayılan olarak ev dizini oluşturur mu?

Bu, dağıtıma bağlıdır. Red Hat tabanlı sistemlerde (RHEL, CentOS, Rocky Linux), `CREATE_HOME yes` dosyasındaki `/etc/login.defs` ayarı, `useradd` komutunun ev dizinini otomatik olarak oluşturmasına neden olur. Debian ve Ubuntu’da ise `-m` bayrağını açıkça geçmediğiniz sürece ev dizini oluşturulmaz.

adduser, CentOS veya Rocky Linux’ta kullanılabilir mi?

RHEL tabanlı dağıtımlarda `adduser`, Debian/Ubuntu’da bulunan etkileşimli Perl sarmalayıcısı değil, `useradd` komutuna sembolik bir bağlantıdır. CentOS’ta `adduser username` çalıştırmak, `useradd username` ile aynı şekilde davranır — istem yok, Debian tarzı varsayılanlarla otomatik ev dizini yok.

adduser’ı bir betikte etkileşimsiz olarak nasıl kullanabilirim?

Parola istemini atlamak için `–disabled-password` ve GECOS alanı istemlerini atlamak için `–gecos ""` geçirin: `adduser –disabled-password –gecos "" username`. Parolayı daha sonra `echo "username:password" | chpasswd` ile veya bir `openssl passwd -6` karması aktararak ayarlayın.

/etc/login.defs ile /etc/adduser.conf arasındaki fark nedir?

`/etc/login.defs`, `useradd`, `userdel` ve `usermod` tarafından okunan sistem genelinde yapılandırma dosyasıdır — UID/GID aralıklarını, parola eskime varsayılanlarını ve ev dizini oluşturma davranışını kontrol eder. `/etc/adduser.conf` ise yalnızca Debian tabanlı sistemlerdeki `adduser` ve `deluser` Perl betikleri tarafından okunur ve varsayılan kabuk, ev dizini üst yolu ve iskelet dizini gibi üst düzey varsayılanları kontrol eder.

Aynı Debian sunucusunda useradd ve adduser’ı güvenle karıştırabilir miyim?

Evet. Her ikisi de nihayetinde aynı `/etc/passwd`, `/etc/shadow` ve `/etc/group` dosyalarına yazar. Her iki komutla oluşturulan hesaplar sistem düzeyinde birbirinden ayırt edilemez. Tek pratik endişe tutarlılıktır: ekibiniz etkileşimli olarak `adduser` kullanıyorsa ve bir otomasyon betiği `useradd` komutunu `-m` olmadan kullanıyorsa, bazı kullanıcıların ev dizinleri eksik olabilir. Her ortam için tek bir yaklaşımda standartlaşın ve bunu belgeleyin.

15%

Tüm Hosting Hizmetlerinde %15 indirim

Becerilerini test et ve herhangi bir hosting planında İndirim kazan

Kodu kullanın:

Skills
Başlayın