Saya benci PAM sejak itu muncul.
Bagaimana cara mengaktifkan debug PAM di Debian Squeeze di tingkat admin?
Saya telah memeriksa setiap sumber daya yang dapat saya temukan. Google, halaman manual, apa pun. Satu-satunya hal yang belum saya coba (saya tidak berani, apakah saya menyebutkan bahwa saya membenci PAM?) Sedang menggali sumber perpustakaan PAM.
Saya mencoba mencari solusi di google, tidak ada. Apa yang saya temukan sejauh ini:
http://www.bitbull.ch/wiki/index.php/Pam_debugging_funktion ( /etc/pam_debug
) dan
http://nixdoc.net/man-pages/HP-UX/man4/pam.conf.4.html ( debug
opsi pada entri PAM dalam /etc/pam.d/
).
Tidak, tidak berfungsi. Tidak ada output PAM, tidak ada, keheningan mutlak.
Saat mencari solusi, saya bahkan mengikuti tautan ke Pam, yaitu pompa bensin di Jerman. Ya, mungkin dalam semua milyaran hit itu mungkin menyembunyikan petunjuk, tapi tembak aku, aku akan mati sebelum kutemukan.
Istirahat adalah FYI:
Masalah apa yang saya miliki?
Setelah memutakhirkan ke Debian Squeeze sesuatu menjadi aneh (well, hei, dulu, eh, apa yang benar di Etch .. ah, ya, Woody). Jadi itu mungkin bukan kesalahan Debian, hanya pengaturan kacau yang berumur panjang. Saya langsung mendapat kesan ada hubungannya dengan PAM, tetapi saya benar-benar tidak tahu apa yang terjadi. Aku benar-benar dalam kegelapan, ditinggalkan sendirian, tak berdaya sebagai bayi, YKWIM. Beberapa login ssh berhasil, beberapa tidak. Itu agak lucu. Tidak ada petunjuk ssh -v
, tidak ada petunjuk /var/log/*
, tidak ada. Hanya "auth berhasil" atau "auth gagal", kadang-kadang pengguna yang sama masuk secara parsial berhasil dengan satu sesi dan gagal dengan yang lain, pada saat yang sama. Dan tidak ada yang benar-benar bisa Anda dapatkan.
Setelah menggali banyak pilihan lain, saya bisa mengetahuinya. Ada nullok
dan nullok_secure
, spesial Debian. Sesuatu kacau dengan /etc/securetty
dan tergantung pada tty
(yang agak acak) login ditolak atau tidak. BENAR-BENAR BAGUS, Fiuh!
Cara mengatasinya mudah dan sekarang semuanya baik-baik saja.
Namun ini membuat saya bertanya, bagaimana cara men-debug kekacauan seperti itu di masa depan. Ini bukan pertama kalinya PAM membuatku gila. Jadi saya ingin melihat solusi akhir. Final seperti dalam "diselesaikan", bukan final seperti dalam "armageddon". Terima kasih.
Ah, BTW, ini sekali lagi memperkuat keyakinan saya bahwa baik membenci PAM sejak muncul. Apakah saya menyebutkan bahwa saya melakukannya?
passwd -d user
dan kemudian coba ssh ke dalam kotak seperti iniuser
. Output "password gagal" di syslog tidak ada hubungannya dengan debug PAM sama sekali, jadi PAM tetap diam.PermitEmptyPasswords yes
di/etc/ssh/sshd_config
tentu saja, maka PAM output sesuatu sepertipam_unix(sshd:auth): authentication failure
, tapi masih ada saluran men-debug atau petunjuk apapun yang PAM modul menyebabkan kegagalan./var/log/auth.log
file? Saya baru-baru menemukan bahwa Ubuntu memilikinya, dan mencatat semua hal yang berhubungan dengan pam di sana. Tidak ada jawaban di sini yang membantu saya, tetapi mencari/var/log/auth.log
membantu saya memperbaiki masalah saya./var/log/auth.log
adalahsyslog
. Masalahnya bukan logging tetapi debugging. Jika misalnya tumpukan PAM gagal lebih awal, Anda tidak akan melihat apa-apa, karena modul yang menghasilkansyslog
tidak dipanggil sama sekali. Atau ada yang gagal dan ada yang tidak, tetapi keduanya mencatat garis yang sama persis. Benar bahwa, saya kira, 95% dari semua kasus dapat diselesaikan dengan melihat log yang biasa, tetapi 5% tidak bisa, karena tidak ada jejak apa yang sebenarnya terjadi di balik layar.Jawaban:
Beberapa hal untuk Anda coba:
Apakah Anda mengaktifkan pencatatan pesan debug di syslog?
Tambahkan baris berikut:
Keluar dengan
:wq!
.Anda dapat mengaktifkan debugging untuk semua modul seperti:
ATAU Anda dapat mengaktifkan debugging hanya untuk modul yang Anda minati dengan menambahkan "debug" ke akhir baris yang relevan di dalam
/etc/pam.d/system-auth
atau/etc/pam.d/*
file lain :Maka pesan debugging akan mulai muncul di
/var/log/debug.log
. Semoga ini bisa membantu Anda!sumber
nullok
spesial yang hanya modul ini kurang debugging. Izinkan saya mengatakannya dengan kata-kata ini: Kurangnya debugging pada bagian penting dari kode adalah mimpi buruk yang lebih buruk daripada dihantui oleh Freddy Kruger.PAM
bisu. Jadi untuk saat ini saya menerimanya sebagai "solusi" sampaiPAM
menyerah. Terima kasih.Setidaknya pada CentOS 6.4,
/etc/pam_debug
TIDAK digunakan.Jika modul pam_warn.so diinstal, Anda bisa mendapatkan hasil pendataan dengan cara ini:
dll. Modul ini memastikan bahwa ia tidak akan mengganggu proses otentikasi pada titik mana pun, tetapi mencatat hal-hal yang bermakna melalui syslog.
Memperbarui
Setelah memeriksa kode dan melakukan kompilasi, saya menemukan bahwa (1) dimungkinkan untuk mengaktifkan mode debug ini melalui sumber, dan (2) patch RHEL membuat fitur tersebut hampir tidak dapat digunakan (setidaknya modul pam_unix) dan (3) itu mungkin lebih baik untuk menambal kode itu.
Agar ini berfungsi untuk RHEL, Anda bisa mendapatkan Linux-PAM ... src.rpm (untuk versi 1.1 apa pun) dan mengubah file spesifikasi sebagai berikut:
Temukan baris yang dimulai dengan
% configure \
dan setelah itu, tambahkan --enable-debug \
Kemudian bangun rpm dan instal (dengan paksa, untuk menimpa paket yang ada). Sekarang buat file /var/run/pam-debug.log:
Jika file tidak ada, output debug akan dikirim ke stderr.
Menurut saya, pengiriman ke stderr ini bodoh, dan itulah yang menyebabkan konflik patch. Anda dapat mengubah perilaku itu dengan masuk ke file libpam / include / security / _pam_macros.h dan mengganti 4 baris dari
logfile = stderr;
dengan
Saat membangun, Anda akan mendapat peringatan tentang pernyataan yang tidak terjangkau, tetapi bisa diabaikan. Anda dapat membuat perubahan ini dalam skrip sed (dan menempatkannya di bagian% persiapan RPM setelah tambalan) ...
JIKA Anda melakukan patch kecil ini, Anda dapat mengembalikan% patch2, karena itu akan berfungsi lagi dengan benar.
sumber
Saya kebetulan menghabiskan beberapa jam mencoba mencari tahu cara mengaktifkan log debug di PAM pada CentOS 6.4. Meskipun pertanyaan ini untuk Debian, saya masih akan menulis bagaimana melakukannya di CentOS dengan harapan orang lain tidak perlu memasukkan waktu yang sudah saya miliki.
Pada akhirnya, mengaktifkan log debug dalam
pam
paket CentOS sangat mudah. Kesulitan berasal dari fakta bahwa itu melibatkan kompilasi ulang paket. Jadi, pertama temukan SRPM (mis.pam-1.1.1-13.el6.src.rpm
) Dari sini . Orang-orang yang tidak tahu tentang kompilasi paket dari SRPM, dapat merujuk ke langkah-langkah pengaturan lingkungan RPM build .Inilah langkah utamanya. Buka file spesifikasi dan tambahkan
--enable-debug
ke%build
bagian dalamconfigure
doa. Kompilasi ulang! Instal ulang paket yang baru dibuat. Terakhir, buat file tempat log debug akan ditulis.Jika Anda tidak membuat file maka banyak log akan terbang di terminal, yang mungkin tidak terlalu berguna.
sumber
Debian dan Ubuntu (dan mungkin distro lain) memiliki file log khusus di mana semua keluaran pam dicatat:
/var/log/auth.log
Saya telah berjuang dengan masalah pam terkait selama satu setengah hari, akhirnya menemukan tentang file log ini, dan menyelamatkan diri dari kegilaan.
Berikut adalah contoh konten file ini ketika segala sesuatu tidak berjalan sesuai rencana.
Begini tampilannya saat bekerja:
Perhatikan bahwa tidak ada kemungkinan lain untuk mengaktifkan logging debug pam yang bekerja untuk saya.
sumber
pam_*
sebenarnya adalah PAM yang direalisasikan. Baris lain adalah output oleh alat tetap, terlepas apakah mereka menggunakan PAM atau tidak. Ini berarti: Jika PAM menyangkal, untuk alasan apa pun, sangat sulit untuk menemukan penyebab sebenarnya, jika ada dalam PAM. Garis non-PAM tidak membantu (karena masalahnya ada di PAM) dan garis PAM sering juga tidak membantu, karena sering terlalu diam. Dengan kehadiran banyak modul PAM, Anda benar-benar kesulitan menebak modul mana yang mungkin menjadi penyebabnya, apalagi untuk mengetahui cara mengaktifkan debugging, karena ini berbeda untuk masing-masing modul.Bisakah Anda mengembangkannya sedikit?
Halaman per Securetty :
Perilaku yang Anda gambarkan terdengar sangat mirip dengan securetty bekerja secara normal (dengan asumsi Anda memang masuk sebagai root).
Di sini juga, mungkin ada pembatasan non-PAM di tempat, sehingga mungkin membantu untuk memberikan beberapa wawasan tentang
/etc/ssh/sshd_config
seperti apa penampilan Anda .Khususnya, dari uraian Anda:
sshd_config
:PermitRootLogin no
sshd_config
dariAllowGroups
atauAllowUsers
. Baris sampel mungkin terlihat seperti:AllowGroups users admins
Tentu saja sangat mungkin PAM adalah bagian dari masalah ini, tetapi 'gejala' utama Anda terdengar seperti bisa dijelaskan dengan cara lain.
sumber
Asket ... Saya sangat menyukai postingan Anda :) Saya berkelahi dengan hal-hal seperti ini selama 15 jam terakhir ... (Saya mungkin sudah istirahat selama 30 menit)
Entah bagaimana saya membuatnya bekerja dengan melakukan semua hal yang Anda lakukan, yang berarti saya punya / etc / pam_debug dan debug pada entri pam. TETAPI seperti dalam kasus saya yang saya perjuangkan
pam_mysql
, saya harus memasukkan yang lainverbose=1
setelahdebug
pada entri pam saya:"Sqllog" itu hanya untuk menulis log di DB.
Jadi mungkin ini sedikit membantu Anda.
Kita semua membenci PAM. Semoga berhasil!
sumber
pam_unix(sshd:auth): unrecognized option [verbose=1]