CentOS 7 Sunucusunda Kullanıcı Ekleme ve Silme: Kapsamlı Bir Rehber
CentOS 7 gibi bir Linux sunucusunu yönetirken, kullanıcı hesaplarını etkin bir şekilde yönetmek, hem güvenlik hem de operasyonel verimlilik açısından kritik öneme sahiptir. Sunucu üzerinde çalışan her hizmet veya her insan kullanıcısı için uygun yetkilere sahip hesaplar oluşturmak, sistemin bütünlüğünü korurken, farklı görevlerin düzgün bir şekilde yürütülmesini sağlar. Bu kapsamlı rehberde, CentOS 7 sunucunuzda kullanıcıları nasıl ekleyeceğinizi, şifrelerini yöneteceğinizi, bilgilerini değiştireceğinizi ve güvenli bir şekilde sileceğinizi adım adım inceleyeceğiz.
Kullanıcı Yönetiminin Temelleri
Linux sistemlerinde her kullanıcının kendine ait bir kimliği (UID – User ID) ve birincil bir grubu (GID – Group ID) bulunur. Kullanıcı hesapları, sistem kaynaklarına (dosyalar, dizinler, uygulamalar) erişimi kontrol etmek için kullanılır. Her kullanıcının genellikle kendi ev dizini (/home/kullanici_adi) ve varsayılan bir kabuğu (shell) bulunur. Bu bilgiler, /etc/passwd ve /etc/shadow gibi kritik sistem dosyalarında saklanır.
* /etc/passwd: Kullanıcı hesaplarının temel bilgilerini (kullanıcı adı, UID, GID, ev dizini, kabuk) içerir. Şifreler bu dosyada saklanmaz.
* /etc/shadow: Kullanıcı şifrelerinin şifrelenmiş hallerini ve şifre politikası bilgilerini (son değiştirme tarihi, geçerlilik süresi vb.) içerir. Bu dosya sadece root kullanıcısı tarafından okunabilir olmalıdır.
* /etc/group: Sistemdeki grupların ve bu gruplara ait üyelerin listesini içerir.
Bu rehberdeki tüm komutlar root kullanıcısı olarak veya sudo yetkisiyle çalıştırılmalıdır.
Kullanıcı Ekleme
CentOS 7’de yeni bir kullanıcı eklemek için en yaygın kullanılan komut useradd‘dir. Bu komut, kullanıcının ev dizinini, birincil grubunu ve diğer temel ayarlarını otomatik olarak oluşturur.
useradd Komutu ile Kullanıcı Ekleme
Temel bir kullanıcı eklemek için:
sudo useradd yeni_kullanici
Bu komut, yeni_kullanici adında bir kullanıcı oluşturur, otomatik olarak aynı isimde birincil bir grup (yeni_kullanici) oluşturur, /home/yeni_kullanici dizinini oluşturur ve varsayılan kabuğu (/bin/bash veya sistemin varsayılanı) atar. Ancak bu kullanıcı henüz bir şifreye sahip değildir ve oturum açamaz.
useradd Komutunun Yaygın Seçenekleri
useradd komutu, kullanıcı oluştururken daha fazla kontrol sağlamak için çeşitli seçeneklere sahiptir:
* -m veya --create-home: Kullanıcının ev dizinini oluşturur. (Çoğu sistemde varsayılan davranıştır, ancak açıkça belirtmek iyi bir alışkanlıktır.)
* -s veya --shell: Kullanıcıya atanacak kabuğu belirtir. Örneğin, bash yerine zsh veya nologin (kullanıcının oturum açmasını engellemek için) atayabilirsiniz.
sudo useradd -s /bin/bash yeni_kullanici2
* -d veya --home-dir: Kullanıcının ev dizini için özel bir yol belirler.
sudo useradd -d /var/www/yeni_kullanici3 yeni_kullanici3
* -g veya --gid: Kullanıcının birincil grubunu (GID) belirler. Belirtilen grup zaten mevcut olmalıdır.
sudo groupadd webadmins
sudo useradd -g webadmins yeni_kullanici4
* -G veya --groups: Kullanıcıyı, birincil grubuna ek olarak, virgülle ayrılmış ikincil gruplara ekler.
sudo groupadd developers
sudo groupadd testers
sudo useradd -G developers,testers yeni_kullanici5
* -c veya --comment: Kullanıcı hakkında açıklayıcı bir yorum ekler (genellikle kullanıcının tam adı veya görevi).
sudo useradd -c "John Doe, Proje Yöneticisi" johndoe
* -u veya --uid: Kullanıcıya özel bir UID atar. Genellikle sistem tarafından otomatik olarak atanır, ancak bazı özel durumlarda manuel atama gerekebilir (örneğin, bir kullanıcının UID’sinin başka bir sistemdeki UID ile eşleşmesi gerektiğinde).
sudo useradd -u 1005 ozel_kullanici
* -e veya --expiredate: Kullanıcı hesabının geçerlilik süresini YYYY-MM-DD formatında belirler. Bu tarihten sonra hesap devre dışı kalır.
sudo useradd -e 2024-12-31 gecici_kullanici
* -f veya --inactive: Şifre süresi dolduktan sonra hesabın kaç gün sonra devre dışı kalacağını belirtir. 0 hemen devre dışı bırakır, -1 ise bu özelliği devre dışı bırakır.
sudo useradd -f 30 sonrasi_devredisi_kullanici
Örnek: Yeni bir kullanıcı oluşturalım, ev dizinini oluşturalım, kabuğunu /bin/bash olarak ayarlayalım, onu developers ve webadmins gruplarına ekleyelim ve bir açıklama ekleyelim:
sudo groupadd developers # Eğer yoksa
sudo groupadd webadmins # Eğer yoksa
sudo useradd -m -s /bin/bash -G developers,webadmins -c "Alice Smith, Yazılımcı" alicesmith
Şifre Belirleme: passwd Komutu
Bir kullanıcı hesabı oluşturulduktan sonra, kullanıcının oturum açabilmesi için bir şifre atanması gerekir. Bu işlem passwd komutu ile yapılır.
sudo passwd alicesmith
Bu komutu çalıştırdığınızda, sizden alicesmith kullanıcısı için yeni bir şifre girmeniz ve ardından onaylamak için tekrar girmeniz istenecektir. Güçlü şifreler kullanmaya özen gösterin.
Kullanıcı Bilgilerini Görüntüleme
Oluşturduğunuz veya mevcut bir kullanıcının bilgilerini kontrol etmek için çeşitli komutlar kullanabilirsiniz:
* id : Kullanıcının UID’sini, birincil GID’sini ve ait olduğu tüm grupları gösterir.
id alicesmith
* cat /etc/passwd | grep : /etc/passwd dosyasındaki kullanıcının girişini görüntüler.
cat /etc/passwd | grep alicesmith
Çıktı örneği: alicesmith:x:1001:1001:Alice Smith, Yazılımcı:/home/alicesmith:/bin/bash
* groups : Kullanıcının ait olduğu tüm grupları listeler.
groups alicesmith
Grup Yönetimi
Kullanıcı yönetiminin ayrılmaz bir parçası da grup yönetimidir. Gruplar, birden fazla kullanıcıya aynı anda dosya ve dizin erişim izinleri atamanıza olanak tanıyarak yetkilendirme yönetimini basitleştirir.
Grup Ekleme: groupadd
Yeni bir grup oluşturmak için:
sudo groupadd yeni_grup
Gruba Kullanıcı Ekleme/Çıkarma: usermod
Mevcut bir kullanıcıyı bir gruba eklemek veya bir gruptan çıkarmak için usermod komutu kullanılır.
* Kullanıcıyı ikincil bir gruba ekleme: -aG (append to group) seçeneğini kullanın. -a (append) seçeneği önemlidir, çünkü bu olmadan kullanıcıyı yalnızca belirtilen gruplara atar ve mevcut ikincil gruplarından çıkarır.
sudo usermod -aG yeni_grup alicesmith
* Kullanıcıyı bir gruptan çıkarma: gpasswd komutu kullanılır.
sudo gpasswd -d alicesmith yeni_grup
* Kullanıcının birincil grubunu değiştirme: -g seçeneğini kullanın.
sudo usermod -g yeni_birincil_grup alicesmith
Grup Silme: groupdel
Bir grubu silmek için:
sudo groupdel silinecek_grup
Dikkat: Bir grup silindiğinde, bu grubun birincil grubu olduğu kullanıcılar için sorunlar ortaya çıkabilir. Genellikle, kullanıcıların birincil grubunu silmeden önce değiştirmek veya kullanıcıları silmek daha güvenlidir. Eğer bir grubun birincil grubu olduğu bir kullanıcı varsa, o kullanıcı birincil grubu olmadan kalır ve bu durum bazı uygulamalarda beklenmedik davranışlara yol açabilir.
Kullanıcı Şifrelerini Yönetme
passwd komutu sadece şifre atamakla kalmaz, aynı zamanda şifre politikalarını ve hesap durumlarını yönetmek için de kullanılır.
Şifre Değiştirme
* Kendi şifrenizi değiştirmek:
passwd
* Başka bir kullanıcının şifresini değiştirmek (root yetkisiyle):
sudo passwd
Şifre Politikaları ve Hesap Durumu Yönetimi
passwd komutunun bazı önemli seçenekleri:
* -l veya --lock: Bir kullanıcının hesabını kilitler, böylece şifreyle oturum açamaz.
sudo passwd -l alicesmith
* -u veya --unlock: Kilitli bir hesabın kilidini açar.
sudo passwd -u alicesmith
* -e veya --expire: Kullanıcının şifresinin hemen süresinin dolmasına neden olur. Kullanıcı bir sonraki oturum açtığında yeni bir şifre belirlemesi istenir.
sudo passwd -e alicesmith
* -S veya --status: Bir kullanıcının şifre durumu hakkında bilgi gösterir (kilitli mi, son değiştirme tarihi, minimum/maksimum şifre yaşı vb.).
sudo passwd -S alicesmith
Şifre politikaları (minimum uzunluk, karmaşıklık vb.) genellikle PAM (Pluggable Authentication Modules) ayarları (/etc/pam.d/system-auth, /etc/pam.d/password-auth) ve /etc/login.defs dosyası üzerinden yapılandırılır. Örneğin, /etc/login.defs dosyasındaki PASS_MAX_DAYS, PASS_MIN_DAYS, PASS_WARN_AGE gibi parametreler şifrelerin geçerlilik sürelerini belirler.
Kullanıcıları Silme
Bir kullanıcının artık sunucuya erişmesine gerek kalmadığında, güvenlik ve düzen açısından hesabını silmek önemlidir. userdel komutu bu işlem için kullanılır.
userdel Komutu ile Kullanıcı Silme
Temel bir kullanıcıyı silmek için:
sudo userdel silinecek_kullanici
Bu komut, kullanıcının hesap girişini /etc/passwd ve /etc/shadow dosyalarından siler. Ancak, kullanıcının ev dizinini ve e-posta kuyruğunu (varsa) silmez. Bu dosyalar sistemde kalır ve manuel olarak temizlenmesi gerekir.
Ev Dizinini ve E-posta Kuyruğunu Silme: -r Seçeneği
Kullanıcıyı silerken ev dizinini ve e-posta kuyruğunu da otomatik olarak silmek için -r veya --remove seçeneğini kullanın:
sudo userdel -r silinecek_kullanici
Bu, genellikle tercih edilen yöntemdir, çünkü kullanıcının tüm kalıntılarını sistemden temizler.
Kullanıcı Silmeden Önce Dikkat Edilmesi Gerekenler
* Açık Oturumlar: Kullanıcıyı silmeden önce, kullanıcının aktif bir oturumu olup olmadığını kontrol etmek iyi bir uygulamadır. who veya w komutları ile aktif oturumları görebilirsiniz. Aktif bir oturumu olan bir kullanıcı silindiğinde, oturumu sonlanana kadar bazı işlemleri hala yapabilir. Güvenlik açısından, kullanıcının oturumunu kapatmasını beklemek veya oturumunu manuel olarak sonlandırmak (pkill -KILL -u ) daha güvenli olabilir.
* Dosya Sahipliği: Kullanıcı silindikten sonra, kullanıcının sahip olduğu tüm dosyaların ve dizinlerin sahibi artık geçerli bir UID’ye sahip olmayan “numaralandırılmış” bir kullanıcı (örneğin, 1001 yerine kullanici_adi görünmez) olarak görünür. Bu dosyaların sahipliğini başka bir kullanıcıya (chown -R yeni_sahip:yeni_grup /yol/dosya) veya root’a aktarmak genellikle iyi bir uygulamadır, özellikle bu dosyalar hala önemliyse.
* Hizmet Hesapları: Eğer silmek istediğiniz kullanıcı bir hizmet hesabıysa (örneğin, bir web sunucusu veya veritabanı için kullanılan bir hesap), bu hizmetin çalışmasını etkileyebilir. Silmeden önce hizmetin bağımlılıklarını kontrol edin.
Kullanıcı Bilgilerini Değiştirme: usermod
Mevcut bir kullanıcının çeşitli özelliklerini değiştirmek için usermod komutu kullanılır. Bu komut useradd komutuna benzer birçok seçeneğe sahiptir.
* Kullanıcı Adını Değiştirme: -l veya --login seçeneği ile kullanıcı adını değiştirebilirsiniz.
sudo usermod -l yeni_ad eski_ad
Dikkat: Kullanıcı adını değiştirmek, kullanıcının ev dizininin adını otomatik olarak değiştirmez. Ev dizinini de taşımak için -d ve -m seçeneklerini birlikte kullanmanız gerekir.
* UID Değiştirme: -u veya --uid seçeneği ile kullanıcının UID’sini değiştirebilirsiniz.
sudo usermod -u 1006 alicesmith
Dikkat: UID’yi değiştirmek, kullanıcının sahip olduğu tüm dosyaların sahipliğini de güncellemenizi gerektirebilir. find / -uid -exec chown {} \; gibi bir komutla bu yapılabilir, ancak bu riskli bir işlemdir ve dikkatli olunmalıdır.
* Ev Dizinini Değiştirme ve Taşıma: -d (yeni ev dizini) ve -m (eski ev dizinini yeniye taşı) seçeneklerini birlikte kullanın.
sudo usermod -d /var/www/alicesmith -m alicesmith
* Kabuk Değiştirme: -s veya --shell seçeneği ile kullanıcının kabuğunu değiştirebilirsiniz.
sudo usermod -s /bin/zsh alicesmith
* Yorum Değiştirme: -c veya --comment seçeneği ile kullanıcının açıklamasını değiştirebilirsiniz.
sudo usermod -c "Alice Smith, Kıdemli Yazılımcı" alicesmith
* Hesabı Kilitleme/Kilidini Açma: -L (lock) ve -U (unlock) seçenekleri passwd -l ve passwd -u ile aynı işlevi görür.
sudo usermod -L alicesmith # Hesabı kilitler
sudo usermod -U alicesmith # Hesabın kilidini açar
* Son Kullanma Tarihi Belirleme: -e veya --expiredate seçeneği ile hesabın son kullanma tarihini değiştirebilirsiniz.
sudo usermod -e 2025-01-01 alicesmith
sudo Yetkilendirmesi
root kullanıcısı, sistem üzerinde sınırsız yetkiye sahiptir ve doğrudan root olarak oturum açmak veya sürekli su komutunu kullanmak güvenlik açısından riskli olabilir. Bunun yerine, standart kullanıcılara belirli komutları root yetkisiyle çalıştırma izni veren sudo (superuser do) mekanizması kullanılır.
sudo Yetkisi Verme
CentOS 7’de, bir kullanıcıya sudo yetkisi vermenin en yaygın ve önerilen yolu, kullanıcıyı wheel grubuna eklemektir. wheel grubu, varsayılan olarak sudoers dosyasında sudo yetkisine sahip olarak yapılandırılmıştır.
sudo usermod -aG wheel alicesmith
Bu komuttan sonra, alicesmith kullanıcısı oturumunu kapatıp tekrar açtığında sudo komutunu kullanabilir. İlk sudo kullanımında kendi şifresi sorulacaktır.
sudoers Dosyasını Düzenleme
Bazı durumlarda, wheel grubuna eklemek yerine daha özel sudo yetkileri tanımlamanız gerekebilir. Bu, /etc/sudoers dosyasını düzenleyerek yapılır. Bu dosyayı her zaman visudo komutu ile düzenlemelisiniz. visudo komutu, dosyayı kaydetmeden önce sözdizimi hatalarını kontrol eder ve hatalı bir yapılandırma nedeniyle sisteminizin kilitlenmesini önler.
sudo visudo
visudo ile açılan dosyada, wheel grubu için aşağıdaki gibi bir satır göreceksiniz (genellikle yorum satırı olarak):
## Allows people in group wheel to run all commands
%wheel ALL=(ALL) ALL
Bu satırdaki # işaretini kaldırarak wheel grubuna sudo yetkisi verebilirsiniz:
%wheel ALL=(ALL) ALL
Belirli bir kullanıcıya özel yetki vermek için, dosyanın sonuna aşağıdaki gibi bir satır ekleyebilirsiniz:
alicesmith ALL=/usr/bin/yum update, /usr/bin/systemctl restart httpd
Bu örnek, alicesmith kullanıcısının yalnızca yum update ve systemctl restart httpd komutlarını sudo ile çalıştırmasına izin verir.
Güvenlik İpuçları:
* Sadece gerçekten ihtiyacı olan kullanıcılara sudo yetkisi verin.
* Mümkünse, kullanıcılara tam ALL=(ALL) ALL yetkisi yerine, yalnızca ihtiyaç duydukları belirli komutlar için yetki verin.
* sudo loglarını (/var/log/secure) düzenli olarak kontrol edin.
Gelişmiş Kullanıcı Yönetimi Konuları
Kullanıcı yönetiminde bazı daha gelişmiş senaryolar da mevcuttur:
Kullanıcı Kotaları
Kullanıcıların disk alanını aşırı kullanmasını önlemek için kotalar tanımlayabilirsiniz. Bunun için quota paketini kurmanız ve dosya sistemlerinizde kotaları etkinleştirmeniz gerekir.
sudo yum install quota
Ardından, /etc/fstab dosyasını düzenleyerek ilgili dosya sistemi için usrquota ve/veya grpquota seçeneklerini eklemeniz gerekir.
/dev/sda1 /home ext4 defaults,usrquota,grpquota 1 2
Değişiklikleri uyguladıktan sonra dosya sistemini yeniden bağlayın ve quotacheck ile veritabanını oluşturun:
sudo mount -o remount /home
sudo quotacheck -cum /home
sudo quotaon /home
Şimdi edquota ile kullanıcılara kota atayabilirsiniz:
sudo edquota -u alicesmith
Hesap Süresinin Dolması (Expiration)
chage komutu, şifrelerin ve hesapların son kullanma tarihlerini yönetmek için kullanılır.
* Hesap son kullanma tarihi belirleme:
sudo chage -E 2025-01-01 alicesmith
* Şifrenin hemen süresinin dolmasını sağlama:
sudo chage -d 0 alicesmith
* Şifre için minimum/maksimum gün belirleme:
sudo chage -M 90 -m 7 alicesmith # Şifre 90 günde bir değişmeli, 7 gün içinde tekrar değişemez
* Kullanıcı şifre bilgilerini görüntüleme:
sudo chage -l alicesmith
Hesap Bilgisi Denetimi
* lastlog: Her kullanıcının son oturum açma zamanını gösterir.
lastlog
* faillog: Başarısız oturum açma denemelerini gösterir.
sudo faillog -u alicesmith
* last: Sistemdeki tüm oturum açma/kapatma geçmişini gösterir.
last
Bu komutlar, sistemdeki kullanıcı aktivitelerini izlemek ve olası güvenlik ihlallerini tespit etmek için faydalıdır.
Güvenlik İpuçları ve En İyi Uygulamalar
Etkili kullanıcı yönetimi, sağlam bir sunucu güvenliğinin temelidir. İşte bazı önemli güvenlik ipuçları:
1. Güçlü Şifre Politikaları Uygulayın: Kullanıcıların karmaşık (büyük/küçük harf, rakam, özel karakter içeren) ve yeterince uzun şifreler kullanmasını zorunlu kılın. Şifrelerin düzenli olarak değiştirilmesini sağlayın. PAM modüllerini (pam_cracklib veya pam_pwquality) kullanarak şifre karmaşıklığını artırabilirsiniz.
2. Minimum Yetki Prensibini Uygulayın: Kullanıcılara ve hizmet hesaplarına yalnızca görevlerini yerine getirmek için kesinlikle ihtiyaç duydukları en düşük yetkiyi verin. Tam root yetkisi yerine sudo ile belirli komutlara izin verin.
3. Kullanılmayan Hesapları Devre Dışı Bırakın veya Silin: Artık ihtiyaç duyulmayan veya uzun süredir kullanılmayan kullanıcı hesaplarını devre dışı bırakın (usermod -L) veya silin (userdel -r). Bu, potansiyel güvenlik açıklarını azaltır.
4. Root Kullanıcısını Doğrudan Kullanmaktan Kaçının: Günlük yönetim görevleri için doğrudan root kullanıcısı olarak oturum açmak yerine, sudo yetkisine sahip standart bir kullanıcı hesabı kullanın. Bu, yanlışlıkla yapılan hataların veya saldırıların etkisini sınırlar.
5. SSH Anahtar Tabanlı Kimlik Doğrulama Kullanın: Şifre tabanlı kimlik doğrulama yerine SSH anahtar tabanlı kimlik doğrulamasını tercih edin. Bu, daha güvenlidir ve parola denemesi saldırılarına karşı koruma sağlar. Şifreyle oturum açmayı devre dışı bırakın (/etc/ssh/sshd_config dosyasında PasswordAuthentication no).
6. Logları Düzenli Kontrol Edin: /var/log/secure, /var/log/audit/audit.log ve auth.log gibi kimlik doğrulama ve yetkilendirme loglarını düzenli olarak inceleyin. Anormal oturum açma denemeleri, yetkilendirme hataları veya diğer şüpheli aktiviteler için dikkatli olun.
7. Sistem Güncellemelerini Yapın: İşletim sisteminizi ve tüm yüklü paketleri düzenli olarak güncelleyerek bilinen güvenlik açıklarını kapatın.
8. Hesap Kilitlenme Politikaları: Başarısız oturum açma denemelerinin belirli bir sayısından sonra hesapları geçici olarak kilitleyen politikalar (pam_faillock veya pam_tally2) uygulayın.
Sonuç
CentOS 7 sunucusunda kullanıcı ekleme, silme ve yönetme, güvenli ve istikrarlı bir sunucu ortamının temelini oluşturur. useradd, passwd, usermod ve userdel gibi temel komutları anlamak ve doğru bir şekilde kullanmak, sistem yöneticileri için vazgeçilmez bir beceridir. Grup yönetimini ve sudo yetkilendirmesini etkin bir şekilde kullanarak, kullanıcılarınıza gerekli erişimi sağlarken aynı zamanda sisteminizin güvenliğini en üst düzeyde tutabilirsiniz. Bu rehberde açıklanan adımları ve en iyi uygulamaları takip ederek, CentOS 7 sunucunuzda kullanıcı hesaplarını güvenli ve verimli bir şekilde yönetebilirsiniz. Unutmayın, iyi bir kullanıcı yönetimi stratejisi, sunucunuzun genel güvenliğinin ve performansının anahtarıdır.
