问题背景,软件开发过程,VNC/SHELL登陆,经常遇到输错密码账号锁定的问题,每次都要等待若干时间才能解锁。
就个人而言,服务器是专用,或者团队公用,没有必要设置严格的密码策略,保护好ROOT用户,其他用户各自维护自己的数据,就能满足需求。严格的密码策略,无法使用简单密码、定期更换、锁屏、超时断开连接等等,对于程序员来说都是打断思路的障碍。
Linux使用pam模块(Pluggable Authentication Module插入式验证模块)进行鉴权管理,不同的应用程序——ssh、Telnet、login等,根据配置文件进行鉴权管理。
修改配置文件需要注意,不同的程序使用的配置文件是不同的,并不是修改system-auth后就万事大吉,只修改system-auth系统的密码策略变化,但是ssh、Telnet的登陆需求并没有变化。配置文件例举如下:
[xi@CS-Allen ~]$ ls /etc/pam.d/
atd fingerprint-auth-ac kcheckpass password-auth remote smtp.postfix system-auth
chfn gdm-autologin kscreensaver password-auth-ac runuser sshd system-auth-ac
chsh gdm-fingerprint ksu pluto runuser-l sssd-shadowutils systemd-user
config-util gdm-launch-environment liveinst polkit-1 setup su vlock
crond gdm-password login postlogin smartcard-auth sudo vmtoolsd
cups gdm-pin other postlogin-ac smartcard-auth-ac sudo-i vsftpd
fingerprint-auth gdm-smartcard passwd ppp smtp su-l xserver
PAM 配置文件中的字段包括:
Service_name 将指定服务/应用程序的名称(默认值为 OTHER)。
Module_type 将为 Service_name 字段中的相应服务指定模块类型(auth/account/session/passwd)。
Control_flag 将指定模块的堆栈行为。它可以获取诸如 requisite、required、sufficient 和 optional 之类的值。
Module_path 将指定实现模块的库对象的路径名称。默认情况下,它将被设为 /lib/security。
Module_options/module_args(可选字段)将指定可以传递给服务模块的选项或实参。以ssh会话鉴权为例,配置如下:
[xi@CS-Allen ~]$ cat /etc/pam.d/sshd
#%PAM-1.0
auth required pam_sepermit.so
auth substack password-auth
auth include postlogin
# Used with polkit to reauthorize users in remote sessions
-auth optional pam_reauthorize.so prepare
account required pam_nologin.so
account include password-auth
password include password-auth
# pam_selinux.so close should be the first session rule
session required pam_selinux.so close
session required pam_loginuid.so
# pam_selinux.so open should only be followed by sessions to be executed in the user context
session required pam_selinux.so open env_params
session required pam_namespace.so
session optional pam_keyinit.so force revoke
session include password-auth
session include postlogin
# Used with polkit to reauthorize users in remote sessions
-session optional pam_reauthorize.so prepare
PS: 密码策略有多个配置工具,chage是可选工具,也可以修改密码策略,且优先级较高。
[xi@CS-Allen ~]$ chage -l xi
Last password change : Jan 08, 2020
Password expires : never
Password inactive : never
Account expires : never
Minimum number of days between password change : 0
Maximum number of days between password change : 99999
Number of days of warning before password expires : 7
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。