Yeni yazı: Kümeyi Kurmak: Ready Yazması Kümenin Çalıştığı Anlamına Gelmez
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ğer Anlamı
P Kullanılabilir bir parola var
L Parola kilitli (usermod -L ya da passwd -l uygulanmış)
NP Parola 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çenek Ne yapar
-s Kullanıcının kabuğunu değiştirir (/bin/bash, /usr/sbin/nologin)
-d Ev dizini yolunu değiştirir — dizini taşımaz
-m -d ile birlikte, mevcut ev dizininin içeriğini yeni yere taşır
-l Kullanıcı adını değiştirir (ev dizini ve grup adı değişmez)
-c Açıklama alanını (GECOS) düzenler
-g Birincil grubu değiştirir
-aG Ek grup üyeliği ekler
-L / -U Parolayı kilitler / kilidini açar
-e Hesabı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:::
# Alan Yukarıdaki satırda Anlamı
1 Kullanıcı adı ayse
2 Parola hash’i $y$… $y$ yescrypt, $6$ SHA-512. Başında ! varsa kilitli, * ise parolayla giriş hiç yapılamaz
3 Son değişiklik 19659 1970-01-01’den beri geçen gün sayısı (= 2023-10-29)
4 Minimum yaş 0 Parolayı değiştirdikten sonra kaç gün beklemeden yeniden değiştiremez
5 Maksimum yaş 99999 Parola kaç gün sonra süresi dolmuş sayılır
6 Uyarı süresi 7 Süre dolmadan kaç gün önce uyarılır
7 Etkisizlik süresi boş Parolanın süresi dolduktan sonra kaç gün daha kabul edileceği; bu süre de geçince kullanıcı giremez
8 Hesap son kullanma boş Hesabın kapanacağı tarih (yine gün sayısı olarak). Parola süresinden bağımsızdır
9 Ayrı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

Linux'da Yeni Kullanıcılar Oluşturma ve Silme

Linux'da Yeni Kullanıcılar Oluşturma ve Silme

Linux’ta kullanıcı oluşturmanın iki komutu vardır ve ikisi aynı şeyi yapmaz: useradd size hiçbir şey sormaz ve varsayılanlarla yetinir — çoğu dağıtımda ev dizini bile açmaz, parola belirlenmediği için hesap kilitli kalır. adduser ise soru sorar ve işi tamamlar. Yanlış olanı seçtiğinizde hata almazsınız; kullanıcının oturum açamadığını bir hafta sonra fark edersiniz.

Linux Dosya ve Dizin Hiyerarşisi: Verileri Organize Etme Sanatı

Linux Dosya ve Dizin Hiyerarşisi: Verileri Organize Etme Sanatı

Bir Linux sunucusuna ilk kez bağlandığınızda / altında yirmiye yakın dizin görürsünüz ve hiçbirinin adı ne işe yaradığını söylemez: /etc, /opt, /srv, /var. Bu isimler rastgele seçilmedi — her biri Filesystem Hierarchy Standard (FHS) adlı bir sözleşmenin parçası. O sözleşmeyi bilen yönetici, ömründe hiç görmediği bir dağıtımda bile log dosyasını, yapılandırmayı ve kullanıcı verisini nerede arayacağını bilir.

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.