Operations 11 min read

PAM Authentication Troubleshooting: Real-World Linux Server Failure Cases and Solutions

Real‑world Linux server failures show that missing PAM support in SSH prevents ulimit changes, misordered pam_faillock entries break cron authentication, and custom pam_script setups for Squid require careful configuration, highlighting that module order, thorough testing, and proper hardening are essential for reliable PAM authentication.

NetEase Yanxuan Technology Product Team
NetEase Yanxuan Technology Product Team
NetEase Yanxuan Technology Product Team
PAM Authentication Troubleshooting: Real-World Linux Server Failure Cases and Solutions

PAM (Pluggable Authentication Modules) is a highly efficient and flexible system-level authentication mechanism widely used in Linux server environments. This article presents real production故障 cases to analyze root causes and summarize best practices for PAM authentication.

Case 1: ulimit Configuration Not Taking Effect

After configuring resource limits (nofile) for a specific user (webedit) in /etc/security/limits.d/webapp.conf, the target process shows correct limits (/proc/{pid}/limits displays 500000), and switching users via 'su' also shows expected values. However, when SSH remote login is used, ulimit -n returns the default system value (1024).

Root cause: The SSH service was not compiled with PAM support. The system had an older SSH version that doesn't support the UsePAM option, causing the PAM session module (pam_limits.so) to never be invoked during SSH authentication, thus failing to load the limits configuration.

Why process limits were correct: The deployment platform uses sudo to switch users (opera -> webedit), which goes through PAM session phase and correctly loads pam_limits.so.

Case 2: Crontab Task Failures

Scheduled cron tasks suddenly failed with PAM authentication errors. Audit logs showed: 'PAM:setcred grantors=? acct="root" exe="/usr/sbin/crond" res=failed'.

Root cause: Security hardening added pam_faillock.so module with incorrect module order. The authfail rule was placed before pam_unix.so authentication, causing all users (including root) to be denied before proper credential verification.

Correct configuration requires proper module ordering:

auth        required      pam_env.so
auth        required      pam_faillock.so preauth silent audit deny=3 even_deny_root unlock_time=5 root_unlock_time=300
auth        sufficient    pam_unix.so nullok try_first_pass
auth        [default=die] pam_faillock.so authfail audit deny=3 even_deny_root unlock_time=5 root_unlock_time=300

Case 3: Custom PAM Authentication for Squid

Using pam_script module to implement dynamic username/password authentication for Squid proxy service. Users obtain credentials that rotate every 10 minutes, and PAM forwards authentication requests to a verification service.

Key Takeaways:

PAM configuration module order is critical - incorrect ordering can cause severe security issues or system failures

Security hardening with PAM requires thorough testing before production deployment

Common issues from improper PAM configuration include: SSH login failures, crontab execution failures, and ulimit modifications not taking effect

linuxtroubleshootingsystem securityLinux authenticationPAMpam_faillockpam_limits
NetEase Yanxuan Technology Product Team
Written by

NetEase Yanxuan Technology Product Team

The NetEase Yanxuan Technology Product Team shares practical tech insights for the e‑commerce ecosystem. This official channel periodically publishes technical articles, team events, recruitment information, and more.

0 followers
Reader feedback

How this landed with the community

login Sign in to like

Rate this article

Was this worth your time?

Sign in to rate
Discussion

0 Comments

Thoughtful readers leave field notes, pushback, and hard-won operational detail here.