Toplu Kullanıcı Oluşturma

Bir dosyadan kullanıcı listesi okuyarak otomatik olarak birden fazla kullanıcı hesabı oluşturan script. Her kullanıcı için home dizini ve şifre ataması yapar.

Yayınlanma: 20.01.2024 Güncellenme: 15.11.2024

Detaylı Bilgi

Bu script, bir metin dosyasından kullanıcı listesi okuyarak birden fazla Linux kullanıcı hesabını otomatik olarak oluşturur. Sistem yöneticileri için vazgeçilmez bir araçtır ve özellikle yeni sunucu kurulumlarında, şirket içi sistemlerde veya eğitim ortamlarında çok faydalıdır.

Script Ne İşe Yarar?

Bu script, manuel olarak her kullanıcıyı tek tek oluşturmak yerine, bir dosyadan toplu olarak kullanıcı hesapları oluşturmanızı sağlar. Her kullanıcı için:

  • Kullanıcı hesabı oluşturur
  • Home dizini (/home/username) oluşturur
  • Şifre atar
  • İlk girişte şifre değiştirme zorunluluğu koyar
  • Varsayılan shell olarak bash atar

Neden Kullanmalısınız?

Manuel kullanıcı oluşturma işlemi zaman alıcı ve hataya açıktır. Bu script sayesinde:

  • Onlarca veya yüzlerce kullanıcıyı dakikalar içinde oluşturabilirsiniz
  • Hata riskini minimize edersiniz
  • Tutarlı kullanıcı yapılandırması sağlarsınız
  • İşlemi tekrar tekrar yapabilirsiniz (idempotent)

Güvenlik Özellikleri

Script, güvenlik en iyi uygulamalarını takip eder:

  • İlk girişte şifre değiştirme zorunluluğu
  • Mevcut kullanıcıları atlar (çift oluşturma önleme)
  • Root yetkisi kontrolü
  • Hata yönetimi ve raporlama

Nasıl Kullanılır?

Adım Adım Kullanım Kılavuzu

1. Kullanıcı Listesi Dosyası Oluşturun

Öncelikle users.txt adında bir dosya oluşturun ve kullanıcı bilgilerini ekleyin:

nano users.txt

Dosya formatı: kullaniciadi:sifre:tam_ad

ahmet:SecurePass123:Ahmet Yılmaz
mehmet:SecurePass456:Mehmet Demir
ayse:SecurePass789:Ayşe Kaya
# Yorum satırı - bu satır atlanır

2. Dosya İzinlerini Kısıtlayın

Güvenlik için dosya izinlerini sadece root'un okuyabileceği şekilde ayarlayın:

chmod 600 users.txt

3. Script Dosyasını Oluşturun

Script kodunu bir dosyaya kaydedin:

nano create_users.sh

Script kodunu yapıştırın ve kaydedin.

4. Scripti Çalıştırılabilir Yapın

chmod +x create_users.sh

5. Scripti Root Olarak Çalıştırın

sudo ./create_users.sh

Dosya Formatı Detayları

Her satır üç bölümden oluşur, iki nokta üst üste (:) ile ayrılır:

  • Kullanıcı adı: Sistemde kullanılacak kullanıcı adı (küçük harf, rakam, alt çizgi)
  • Şifre: Kullanıcının ilk şifresi (güçlü şifre kullanın)
  • Tam ad: Kullanıcının gerçek adı (boşluk içerebilir)

Gelişmiş Kullanım

Scripti özelleştirerek farklı shell'ler, farklı home dizinleri veya ek gruplar atayabilirsiniz. Script içindeki useradd komutunu düzenleyerek bu özellikleri ekleyebilirsiniz.

Gereksinimler

Gereksinimler

  • Root veya sudo yetkisi: Kullanıcı oluşturma işlemi için root yetkisi gereklidir
  • Linux/Unix Sistemi: Script Linux ve Unix tabanlı sistemlerde çalışır
  • useradd komutu: Kullanıcı oluşturma için gerekli
  • chpasswd komutu: Şifre atama için gerekli
  • chage komutu: Şifre politikası ayarları için gerekli
  • users.txt dosyası: Kullanıcı bilgilerinin bulunduğu dosya

Kurulum Kontrolü

Gerekli komutların kurulu olup olmadığını kontrol edin:

which useradd chpasswd chage

Bu komutlar genellikle Linux sistemlerde varsayılan olarak kuruludur. Eksikse:

# Ubuntu/Debian
sudo apt-get install passwd

# CentOS/RHEL
sudo yum install passwd

Dosya Formatı Gereksinimleri

  • Her satır bir kullanıcıyı temsil eder
  • Alanlar iki nokta üst üste (:) ile ayrılır
  • Boş satırlar atlanır
  • # ile başlayan satırlar yorum olarak atlanır
  • Kullanıcı adları küçük harf, rakam ve alt çizgi içerebilir

Kullanım Senaryoları

Kullanım Senaryoları

1. Yeni Sunucu Kurulumu

Yeni bir sunucu kurduğunuzda, tüm çalışanların veya kullanıcıların hesaplarını hızlıca oluşturabilirsiniz. Özellikle şirket içi sunucularda çok faydalıdır.

2. Eğitim Ortamları

Bir sınıf veya kurs için onlarca öğrenci hesabı oluşturmanız gerekiyorsa, bu script tam size göre. Her dönem başında yeni öğrenci hesapları oluşturabilirsiniz.

3. Toplu Kullanıcı Yönetimi

Mevcut kullanıcıları güncellemek veya yeni kullanıcılar eklemek için kullanabilirsiniz. Script mevcut kullanıcıları atladığı için güvenle çalıştırabilirsiniz.

4. Disaster Recovery

Bir sunucu çöktüğünde ve yeni bir sunucu kurduğunuzda, tüm kullanıcı hesaplarını hızlıca yeniden oluşturabilirsiniz.

5. Test Ortamları

Test ortamlarında çok sayıda test kullanıcısı oluşturmanız gerekiyorsa, bu script ile hızlıca oluşturabilirsiniz.

6. Geçici Projeler

Geçici projeler için kullanıcı hesapları oluşturmanız gerekiyorsa, proje bittiğinde kolayca silebilir ve gerektiğinde tekrar oluşturabilirsiniz.

Örnekler

Kullanım Örnekleri

Örnek 1: Temel Kullanım

Basit bir kullanıcı listesi oluşturup scripti çalıştırın:

# users.txt dosyası
ahmet:Passw0rd123:Ahmet Yılmaz
mehmet:Passw0rd456:Mehmet Demir
ayse:Passw0rd789:Ayşe Kaya

# Scripti çalıştır
sudo ./create_users.sh

Örnek 2: Yorum Satırları ile

Dosyada yorum satırları kullanarak organizasyon sağlayın:

# Yönetim Ekibi
ahmet:Passw0rd123:Ahmet Yılmaz - CEO
mehmet:Passw0rd456:Mehmet Demir - CTO

# Geliştirici Ekibi
ayse:Passw0rd789:Ayşe Kaya - Developer
ali:Passw0rd012:Ali Veli - Developer

Örnek 3: CSV'den Dönüştürme

Excel veya CSV dosyasından kullanıcı listesi oluşturun:

# CSV formatı: Name,Email,Department
# Bash ile dönüştürme:
cat users.csv | awk -F, '{print tolower($1)":Passw0rd123:"$1}' > users.txt

Örnek 4: Grup Atama ile Geliştirme

Scripti düzenleyerek kullanıcılara grup atayabilirsiniz:

useradd -m -c "$fullname" -s /bin/bash -G developers "$username"

Kod

#!/bin/bash

# Automated User Creation Script

if [ "$EUID" -ne 0 ]; then 
    echo "Error: This script must be run as root or with sudo"
    echo "Usage: sudo $0"
    exit 1
fi

USER_FILE="users.txt"

if [ ! -f "$USER_FILE" ]; then
    echo "Error: User file $USER_FILE not found!"
    echo ""
    echo "Please create a file named \"users.txt\" with the following format:"
    echo "username:password:Full Name"
    echo ""
    echo "Example:"
    echo "john:SecurePass123:John Doe"
    echo "jane:SecurePass456:Jane Smith"
    exit 1
fi

echo "======================================"
echo "   AUTOMATED USER CREATION"
echo "======================================"
echo "Reading users from: $USER_FILE"
echo ""

while IFS=: read -r username password fullname; do
    [[ -z "$username" || "$username" =~ ^#.*$ ]] && continue
    
    if id "$username" &>/dev/null; then
        echo "⚠️  User \"$username\" already exists. Skipping..."
        continue
    fi
    
    useradd -m -c "$fullname" -s /bin/bash "$username"
    
    if [ $? -eq 0 ]; then
        echo "✓ User \"$username\" created successfully"
        echo "$username:$password" | chpasswd
        
        if [ $? -eq 0 ]; then
            echo "  ✓ Password set for \"$username\""
        else
            echo "  ✗ Failed to set password for \"$username\""
        fi
        
        chage -d 0 "$username"
        echo "  ✓ Password change required on first login"
        echo ""
    else
        echo "✗ Failed to create user \"$username\""
        echo ""
    fi
done < "$USER_FILE"

echo "======================================"
echo "User creation process completed!"
echo ""
echo "Summary - Recent users:"
echo "----------------------"
getent passwd | grep -E "/home/" | tail -n 10

Kullanım

# Kullanıcı listesi oluştur (users.txt)
# Format: kullaniciadi:sifre:tam_ad
echo "ahmet:Passw0rd123:Ahmet Yılmaz" > users.txt
echo "mehmet:Passw0rd456:Mehmet Demir" >> users.txt

sudo chmod +x create_users.sh
sudo ./create_users.sh

Sorun Giderme

Sorun Giderme

Problem: "Permission denied" Hatası

Çözüm: Scripti root veya sudo ile çalıştırdığınızdan emin olun:

sudo ./create_users.sh

Problem: "useradd: command not found"

Çözüm: useradd komutu genellikle varsayılan olarak kuruludur. Eksikse:

# Ubuntu/Debian
sudo apt-get install passwd

# CentOS/RHEL
sudo yum install passwd

Problem: Kullanıcı Oluşturuldu Ama Şifre Çalışmıyor

Çözüm: Şifre formatını kontrol edin. Özel karakterler sorun yaratabilir. Şifrelerde tırnak işareti kullanmayın.

Problem: "users.txt: No such file or directory"

Çözüm: Script ile aynı dizinde users.txt dosyasının olduğundan emin olun. Veya script içindeki USER_FILE değişkenini tam yol ile güncelleyin.

Problem: Kullanıcı Adı Geçersiz

Çözüm: Kullanıcı adları sadece küçük harf, rakam ve alt çizgi içerebilir. Büyük harf, boşluk veya özel karakter kullanmayın.

Etiketler

kullanıcı oluşturma toplu işlem user management useradd