任何要授予用户特权的程序都要能够进行用户认证。当您登入系统时,您需要提供用户名和口令,而后登入进程据此以检验登入的合法性---确认您就是该用户。还有除口令认证之外的其他认证形式,而且口令的存储方式也是各不相同的。 #%PAM-1.0 auth required /lib/security/pam_securetty.so auth required /lib/security/pam_pwdb.so shadow nullok auth required /lib/security/pam_nologin.so account required /lib/security/pam_pwdb.so password required /lib/security/pam_cracklib.so password required /lib/security/pam_pwdb.so shadow nullok use_authtok session required /lib/security/pam_pwdb.so 第一行是注释。任何以#开头的行都是注释。以下的三行排列着用于login认证的三个模块其中第一行用以确认用户是否以root登入,允许登 入的tty被列在文件/etc/securetty 中(如果文件存在的话)第二行将会使用户被提示输入口令并校验口令。第三行表示查文件/etc/nologin是否存在,如果存在就显示其内容,而且如果 用户不是root,则禁止其登入。即便第一个模块失败了,也要完成三个模块的校验。这是一种安全上的考虑 ---这种设计永远不要让用户知道他或她们为什么会被拒绝,否则会让其更容易突破认证。您可以将“required”改成“requisite”来修改这 种认证方式。也就是说,如果有任何“requisite”模块以失败返回,整个PAM认证将终止再调用其它模块也以失败返回。第五行表示任何必要的记帐信 息要被记载。例如,如果设置使用影子口令,pam_db.so 模块将被执行以检查该帐户是否失效或者用户口令是否超期而需要修改。第六行(该行需要折行来写)用以指定如果login程序改变用户的口令,它应当使用 pam_pwdb.so来完成。(这仅在auth模块检测到口令需要被改变时,例如一个影子口令已经过期时才使用)最后一行表示pam_pwdb.so模 块将被用来管理当前的会话过程。而目前该模块什么也不做;它可以被替换为别的所需的模块。要注意配置文件中每一行的顺序不是任意的。尽管required 模块以什么顺序被调用并没有多大关系,但是还有其它一些控制符,其中optional很少在红帽子LINUX中使用,而 sufficient 和requisite就要求行的顺序不能颠倒。 让我们来看一下rlogin的认证配置: auth required /lib/security/pam_securetty.so auth sufficient /lib/security/pam_rhosts_auth.so auth required /lib/security/pam_pwdb.so shadow nullok auth required /lib/security/pam_nologin.so 这和login的描述极为相似,但是其中比 login的多一行模块描述,而且模块的顺序也不同。首先,pam_securetty.so模块将禁止以root从不安全的终端登入。这将有效的阻止任 何root方式的远程登入。如果您不想禁止的话(在这种情况下,我们建议您的机器要么没和Internet 相连,要么呆在一个配置良好的防火墙后面),把这一行删掉就是了。其次,pam_nologin.so 模块将检查/etc/nologin,如上所述。第三点,如果pam_rhosts_auth.so模块认证通过,PAM就立即以成功返回而不再做任何口 令校验。如果pam_rhosts_auth.so认证失败,该失败将被忽略,继续调用pam_pwdb.so模块进行正常的口令认证。如果您在 securetty认证失败后不想让系统继续以口令询问的话,您可以把pam_securetty.so模块的required 改为 requisite。 (责任编辑:admin) |