Yeni yazı: Active Directory Sağlık Kontrolü: krbtgt Rotasyonu ve Hesap Yaşam Döngüsü
Linux'da Kullanıcı Bilgilerini Değiştirme ve Parola Yönetimi

Linux'da Kullanıcı Bilgilerini Değiştirme ve Parola Yönetimi

İçindekiler

Bir çalışan işten ayrıldı, siz de hesabını kapatmak için usermod -L çalıştırdınız. Komut hata vermedi, /etc/shadow satırının başına ! düştü, iş bitti gibi görünüyor. Ama o kullanıcı SSH anahtarıyla sunucuya hâlâ girebiliyor — çünkü -L hesabı değil, parolayı kilitler.

Bu yazıda mevcut bir hesabın kabuğunu, ev dizinini ve parola ömrünü değiştiren komutları göreceğiz: usermod, passwd ve çoğu rehberde atlanan chage. Ayrıca /etc/shadow‘un dokuz alanını tek tek okuyacağız — üçü neredeyse her yerde yanlış anlatılıyor.

Önce Bak: id, passwd -S ve chage -l

Değiştirmeden önce mevcut durumu okuyun. Üç komut, üç farklı pencere:

id ayse
# uid=1001(ayse) gid=1001(ayse) groups=1001(ayse),27(sudo),1005(bilgiislem)
sudo passwd -S ayse
# ayse P 2023-10-29 0 99999 7 -1

passwd -S yedi alan verir: kullanıcı adı, parola durumu, son değişiklik tarihi, sonra sırasıyla minimum yaş, maksimum yaş, uyarı süresi ve etkisizlik süresi. İkinci alan üç değer alabilir ve en çok işinize yarayacak olan odur:

DeğerAnlamı
PKullanılabilir bir parola var
LParola kilitli (usermod -L ya da passwd -l uygulanmış)
NPParola hiç yok — hesap parolasız, tehlikeli

Tarihleri okunabilir biçimde isterseniz chage -l daha nettir:

sudo chage -l ayse
# Last password change                                  : Eki 29, 2023
# Password expires                                      : never
# Password inactive                                     : never
# Account expires                                       : never
# Maximum number of days between password change        : 99999
# Number of days of warning before password expires     : 7

usermod: Kabuk, Ev Dizini ve Grup Değiştirmek

usermod mevcut bir hesabın alanlarını düzenler. En çok kullanılan seçenekler:

SeçenekNe yapar
-sKullanıcının kabuğunu değiştirir (/bin/bash, /usr/sbin/nologin)
-dEv dizini yolunu değiştirir — dizini taşımaz
-m-d ile birlikte, mevcut ev dizininin içeriğini yeni yere taşır
-lKullanıcı adını değiştirir (ev dizini ve grup adı değişmez)
-cAçıklama alanını (GECOS) düzenler
-gBirincil grubu değiştirir
-aGEk grup üyeliği ekler
-L / -UParolayı kilitler / kilidini açar
-eHesabın son kullanma tarihini belirler
sudo usermod -s /bin/bash ayse
sudo usermod -c "Ayşe Yılmaz - Bilgi İşlem" ayse

-d‘yi -m olmadan yazmak en sık yapılan hatadır. Tek başına -d yalnızca /etc/passwd satırındaki yolu değiştirir; dosyalar eski yerinde kalır. Kullanıcı bir sonraki girişinde bomboş — hatta var olmayan — bir dizine düşer ve tüm dosyalarını kaybettiğini sanır:

sudo usermod -d /srv/ayse ayse        # yalnız kayıt değişti, dosyalar /home/ayse'de kaldı
sudo usermod -d /srv/ayse -m ayse     # doğrusu: içerik de taşınır

-m‘nin useradd -m ile aynı şey olmadığına dikkat edin: useradd -m ev dizinini oluşturur, usermod -m var olanı taşır. Mevcut dizin yoksa yenisi oluşturulmaz.

-g ile -aG de karıştırılır. -g birincil grubu değiştirir, eskisinin yerine geçer. -aG ek üyelik ekler — ve -a‘yı düşürüp yalnız -G yazarsanız kullanıcının diğer tüm ek üyelikleri silinir. Ayrıntısı gruplar yazısında.

/etc/shadow: Dokuz Alan, Üçü Yanlış Bilinir

Parolalar /etc/passwd‘de değil, yalnızca root’un okuyabildiği /etc/shadow‘da durur. Satırlar iki nokta ile ayrılmış dokuz alandan oluşur:

ayse:$y$j9T$2mKq7XvR1sPdN8wLcYtE30$Hn4vB6zQ1rT9sXcM2kL7pWdF5yJ8gA3eR0uV6iO1bC4:19659:0:99999:7:::
#AlanYukarıdaki satırdaAnlamı
1Kullanıcı adıayse
2Parola hash’i$y$…$y$ yescrypt, $6$ SHA-512. Başında ! varsa kilitli, * ise parolayla giriş hiç yapılamaz
3Son değişiklik196591970-01-01’den beri geçen gün sayısı (= 2023-10-29)
4Minimum yaş0Parolayı değiştirdikten sonra kaç gün beklemeden yeniden değiştiremez
5Maksimum yaş99999Parola kaç gün sonra süresi dolmuş sayılır
6Uyarı süresi7Süre dolmadan kaç gün önce uyarılır
7Etkisizlik süresiboşParolanın süresi dolduktan sonra kaç gün daha kabul edileceği; bu süre de geçince kullanıcı giremez
8Hesap son kullanmaboşHesabın kapanacağı tarih (yine gün sayısı olarak). Parola süresinden bağımsızdır
9AyrılmışboşKullanılmıyor

Son üç alan sık sık yanlış anlatılır. Özellikle 7. alan, başarısız giriş denemelerinden sonraki kilitlenme süresi değildir — o iş pam_faillock gibi PAM modüllerinin işidir ve /etc/shadow ile ilgisi yoktur. 7. alan yalnızca parolanın süresi dolduktan sonraki ek toleransı tanımlar. 8. alan ise parolayı değil hesabı kapatır; ikisi ayrı mekanizmadır.

Dosyayı elle düzenlemeyin. Tek bir alanı bozmak hesabı erişilemez hâle getirir; bu alanların hepsi passwd ve chage ile yönetilir.

Parola Yaşlandırma: chage

Yukarıdaki 4-8 arası alanları düzenleyen komut chage‘dir:

sudo chage -M 90 -W 14 ayse    # parola 90 günde dolsun, 14 gün önceden uyarsın
sudo chage -m 1 ayse           # değiştirdikten sonra 1 gün beklesin
sudo chage -I 7 ayse           # süresi dolduktan sonra 7 gün tolerans (7. alan)
sudo chage -E 2026-12-31 ayse  # hesap bu tarihte kapansın (8. alan, tarih UTC olarak yorumlanır)

En çok işe yarayanı, kullanıcıyı ilk girişte parola değiştirmeye zorlamaktır — yeni açılan hesaplarda standart uygulamadır:

sudo chage -d 0 ayse

Son değişiklik tarihini sıfırlar; kullanıcı bir sonraki oturum açışında parolasını değiştirmeden devam edemez.

Hesabı Kapatmak: -L Yetmez

Şimdi girişteki soruna dönelim. usermod -L yalnızca hash’in başına ! koyar:

sudo usermod -L ayse
sudo passwd -S ayse
# ayse L 2023-10-29 0 99999 7 -1

L görünüyor, parola artık çalışmıyor. Ama parola, sisteme girmenin tek yolu değildir:

  • ~/.ssh/authorized_keys içindeki bir anahtarla SSH oturumu hâlâ açılır; anahtar doğrulaması parolaya bakmaz.
  • Kullanıcı adına çalışan cron işleri çalışmaya devam eder.
  • Başka bir yönetici sudo su - ayse ile o kullanıcıya geçebilir.

Hesabı gerçekten kapatmak için üçünü birden yapın:

sudo usermod -L ayse                        # parolayı kilitle
sudo chage -E 1 ayse                        # hesabı süresi dolmuş say
sudo usermod -s /usr/sbin/nologin ayse      # kabuğu kaldır

chage -E 1 hesabın son kullanma tarihini 1970-01-02 yapar; oturum açma katmanı hesabı süresi dolmuş kabul eder ve SSH anahtarı da dahil hiçbir yöntemle giriş yapılamaz. usermod(8)‘in -L açıklamasındaki “yalnızca parolayla erişimi değil hesabı da kilitlemek istiyorsanız son kullanma tarihini 1 yapın” notu tam olarak bunu anlatır.

Sıfır yazmayın. Akla yatkın görünen chage -E 0 bu işi yapmaz: shadow(5), 8. alanda 0 değerinin “ya süresi hiç dolmayan bir hesap ya da 1970-01-01 tarihi olarak yorumlandığını, bu yüzden kullanılmaması gerektiğini” söyler. Yani -E 0 yazdığınızda hesabın kapanıp kapanmadığı sistemin yorumuna kalır — ayrıldığını sandığınız kullanıcı hâlâ girebilir. Doğru değer 1‘dir.

Çalışan süreçleri de unutmayın — kilitlemek açık oturumları kapatmaz:

sudo pkill -u ayse                          # kullanıcının süreçlerini sonlandır

Sonuç

  • -g birincil grubu değiştirir, -aG ek grup ekler. İkisini karıştırmak kullanıcının mevcut üyeliklerini silmek demektir; ayrıntısı Gruplar ve kullanıcıları gruplara ekleme/çıkarma yazısında.
  • /etc/shadow‘un 7. alanı başarısız giriş sayacı değildir. Parolanın süresi dolduktan sonraki toleransı tanımlar; başarısız denemeye göre kilitleme pam_faillock‘un işidir. Alanları elle değil passwd ve chage ile düzenleyin.
  • -L parolayı kilitler, hesabı kapatmaz. Kilitli bir hesaba SSH anahtarıyla hâlâ girilebilir ve cron işleri çalışmaya devam eder; hesabı gerçekten kapatan komut chage -E 1‘dir — -E 0 değil, çünkü shadow(5)‘e göre 0 belirsizdir.

Yol haritasında sırada üyeliklerin kendisi var: Gruplar ve Kullanıcıları Gruplara Ekleme/Çıkarma. Serinin tamamına GNU/Linux Öğrenme Yolculuğu sayfasından ulaşabilirsiniz.

Paylaş :

İlgili Yazılar

Symbolic Link ve Hard Link

Symbolic Link ve Hard Link

Bir dosyayı sildiniz ve yerinde duran bağlantı hâlâ orada — ama artık hiçbir şeye açılmıyor. Ya da tam tersi: dosyayı sildiniz, du çıktısında yer boşalmadı. İkisi de aynı sorunun iki yüzüdür: Linux’ta bir dosya adı ile dosyanın kendisi ayrı şeylerdir ve ln komutunun iki farklı biçimi bu ikisini farklı uçlarından bağlar.

Dosya Türleri ve İzinleri: Linux Dosya Yönetiminin Temelleri

Dosya Türleri ve İzinleri: Linux Dosya Yönetiminin Temelleri

ls -l çalıştırdığınızda her satırın başında on karakterlik bir dizi görürsünüz: -rw-r--r--. Çoğu kullanıcı bu diziyi okumadan geçer ve izin gerektiğinde chmod 777 yazıp sorunu “çözer” — sonra o dosyayı sistemdeki herkesin değiştirebildiğini fark etmez.

Linux'da Kullanıcı Hesapları ve Yetkileri: Sudo ve Su Komutları

Linux'da Kullanıcı Hesapları ve Yetkileri: Sudo ve Su Komutları

sudo ile su dışarıdan bakınca aynı işi yapar: ikisi de sizi root yapar. Ama biri sizin parolanızı sorar, diğeri root’un parolasını — ve Ubuntu gibi dağıtımlarda root’un parolası hiç ayarlanmadığı için ikincisi hiçbir zaman çalışmaz. su: Authentication failure hatasının sebebi yanlış yazdığınız parola değildir; öyle bir parola yoktur.