USB Tabanlı PAM Otomatik Oturum Açma Sistemi¶
Bu belge, LightDM üzerinde çalışan bir sistemde USB disk üzerinden kullanıcıya özel otomatik oturum açma işlemini açıklamaktadır.
Yapı, bir /etc/open.txt dosyası ile tetiklenir ve PAM modülü tarafından değerlendirilir.
Amaç¶
USB diskin içinde kullanıcı bilgisi bulundurarak,
/etc/open.txt dosyasını güncellemek ve sistemin LightDM üzerinden
ilgili kullanıcı için otomatik oturum açmasını sağlamaktır.
Genel Mantık¶
PAM, oturum açma sırasında
/usr/local/sbin/usb-pam-auth-testbetiğini çağırır.Betik,
OPENSTATEortam değişkenini veya/etc/open.txtdosyasını okur.Dosyada belirtilen duruma göre
exit 0(başarılı) veyaexit 1(başarısız) döndürür.Eğer oturum başarıyla açılırsa,
/etc/open.txtiçeriği sıfırlanır.Böylece bir sonraki açılışta sistem otomatik olarak giriş yapmaz.
/etc/open.txt Dosya Yapısı¶
Dosya iki bilgiyi tutar:
<KULLANICI>|<DURUM>
Örnek:
etapadmin|1
Bu durumda:
- Kullanıcı adı: etapadmin
- Durum: 1 → Oturum açılabilir.
Durum harf olduğunda PAM script exit 1 döndürür ve oturum açılmaz:
mehmet|0
Güncellenmiş PAM Script¶
Dosya: /usr/local/sbin/usb-pam-auth-test
#!/bin/bash
CONFIG="/etc/open.txt"
# OPENSTATE yoksa /etc/open.txt dosyasını oku
if [ -z "${OPENSTATE:-}" ]; then
if [ -r "$CONFIG" ]; then
line="$(head -n1 "$CONFIG" 2>/dev/null | tr -d '\r\n ' )"
USERNAME="${line%%|*}" # | öncesi kullanıcı adı
OPENSTATE="${line##*|}" # | sonrası durum
fi
fi
# Durum kontrolü
if [[ "$OPENSTATE" =~ ^[0-9]+$ ]] && [ -n "$USERNAME" ]; then
echo "Oturum açılıyor: $USERNAME"
# Oturum açıldıktan sonra tekrar açılmaması için open.txt sıfırlanır
echo "${USERNAME}|0" > "$CONFIG"
exit 0
else
echo "kapalı....."
exit 1
fi
Kurulum¶
Betiği oluşturun:
sudo tee /usr/local/sbin/usb-pam-auth-test > /dev/null <<'EOF' (yukarıdaki betik yapıştırılır) EOF
İzinleri ayarlayın:
sudo chmod 700 /usr/local/sbin/usb-pam-auth-test sudo chown root:root /usr/local/sbin/usb-pam-auth-test
Test dosyasını oluşturun:
echo "etapadmin|1" | sudo tee /etc/open.txt
PAM yapılandırmasında
pam_exec.somodülünü ekleyin:auth requisite pam_exec.so quiet expose_authtok /usr/local/sbin/usb-pam-auth-test
Bu satır, aşağıdaki dosyalardan birine eklenebilir:
/etc/pam.d/lightdmveya
/etc/pam.d/common-auth(dağıtıma göre değişebilir)
Örnek (
/etc/pam.d/lightdmiçinde):auth requisite pam_exec.so quiet expose_authtok /usr/local/sbin/usb-pam-auth-test auth required pam_unix.so
LightDM’i yeniden başlatın:
sudo systemctl restart lightdm
Test edin:
echo "etapadmin|1" | sudo tee /etc/open.txt sudo systemctl restart lightdm # Oturum açıldıktan sonra /etc/open.txt içeriği artık: # etapadmin|a # Tekrar açmayı denersen otomatik açılmaz.
Çalışma Prensibi¶
/etc/open.txtiçeriğinde geçerli (sayısal) değer varsa PAMexit 0döner.exit 0→ Oturum açılır ve dosya sıfırlanır.exit 1→ Greeter açık kalır, giriş engellenir.USB takıldığında
/etc/open.txtdinamik olarak güncellenebilir.LightDM D-Bus API ile restart gerekmeden tetikleme ileride eklenebilir.
Gelecek Aşama¶
LightDM D-Bus API veya
dm-toolkullanarak restart olmadan oturum tetikleme.udevkuralı eklenerek USB takıldığında/etc/open.txtgüncelleme ve otomatik oturum başlatma işlemini gerçekleştirme.