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