免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 9801 | 回复: 6
打印 上一主题 下一主题

PAM 系列问题 (二) - pam_rootok.so 和 pam_cracklib.so [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-10-11 23:32 |只看该作者 |倒序浏览
:em11: 1、想让普通用户无法执行 password ,但 root 不可以。(不想修改文件权限)

#%PAM-1.0
auth       requisite    pam_rootok.so
auth       required     pam_stack.so service=system-auth
account    required     pam_stack.so service=system-auth
password   required     pam_stack.so service=system-auth


结果普通用户还是可以正常使用 passwd 修改密码 。

manual 上说 pam_rootok.so 检查的是 ruid 而不是 euid ,为什么普通用户还是可以照常使用 passwd 命令呢?


2、pam_cracklib.so 的 minlen 不起作用

修改 /etc/pam.d/system-auth :

# This file is auto-generated.
# User changes will be destroyed the next time authconfig is run.
auth        required      /lib/security/$ISA/pam_env.so
auth        sufficient    /lib/security/$ISA/pam_unix.so likeauth nullok
auth        required      /lib/security/$ISA/pam_deny.so

account     required      /lib/security/$ISA/pam_unix.so
account     sufficient    /lib/security/$ISA/pam_succeed_if.so uid < 100 quiet
account     required      /lib/security/$ISA/pam_permit.so

password    requisite     /lib/security/$ISA/pam_cracklib.so retry=3 minlen=10
password    sufficient    /lib/security/$ISA/pam_unix.so nullok use_authtok md5 shadow
password    required      /lib/security/$ISA/pam_deny.so

session     required      /lib/security/$ISA/pam_limits.so
session     required      /lib/security/$ISA/pam_unix.so


结果输入一个 5位的口令竟然通过,我晕

怎么 PAM 的东西这么难整啊

论坛徽章:
0
2 [报告]
发表于 2007-10-25 18:03 |只看该作者
password    requisite     /lib/security/$ISA/pam_cracklib.so retry=3 minlen=10


requisite 改成required

论坛徽章:
0
3 [报告]
发表于 2007-10-25 18:06 |只看该作者
原帖由 crazymeny 于 2007-10-25 18:03 发表


requisite 改成required


为什么呢?

如果密码的位数不够,我为什么还需要继续测试?直接返回错误就可以了

论坛徽章:
0
4 [报告]
发表于 2008-06-04 11:04 |只看该作者
^_^ 别怪我把这个老问题挖出来

大家继续来讨论,

“minlen=10‘ 根据手册应该可以工作的(只看到pam_cracklib有硬编码不让设置minlen<6),加上debug再来试下?
LZ的so都在绝对路径的,用的是什么distribution啊? 有自己编译pam模块吗?


pam_cracklib source code:

http://www.koders.com/c/fid9EDC5 ... E342.aspx?s=md5#L26

[ 本帖最后由 可可火山 于 2008-6-4 11:05 编辑 ]

论坛徽章:
0
5 [报告]
发表于 2010-02-07 20:58 |只看该作者
这是因为采用pam机制后,/etc/login.defs中的配置不起作用,而pam中 pam_cracklib.so 的参数minlen=9也是个假参数,因为他内部调用的函数pam_sm_chauthtok调用的FascistCheck(位于 cracklib.so独立于pam之外)对密码长度分析时并不理踩minlen这个值,而是内部写死的,所以,要使得原来的/etc/login.defs配置有效,必须等patch。
  可以看这个代码片段(cracklib/cracklib,2.7/cracklib/fascist.c):其中的MINLEN):
  
  #define MINLEN 6
  
  char *
  FascistLook(pwp, instring)
   PWDICT *pwp;
   char *instring;
  {
   int ii;
   char *ptr;
   char *jptr;
   char junk[STRINGSIZE];
   char *password;
   char rpassword[STRINGSIZE];
   int32 notfound;
  
   notfound = PW_WORDS(pwp);
   /* already truncated if from FascistCheck() */
   /* but pretend it wasn't ... */
   strncpy(rpassword, instring, TRUNCSTRINGSIZE);
   rpassword[TRUNCSTRINGSIZE - 1] = '';
   password = rpassword;
  
   if (strlen(password) < 4)
   {
   return ("it's WAY too short");
   }
   if (strlen(password) < MINLEN)
   {
   return ("it is too short");
   }
  
   jptr = junk;
   *jptr = '';
  
   for (ii = 0; ii < STRINGSIZE && password[ii]; ii++)
   {
   if (!strchr(junk, password[ii]))
   {
   *(jptr++) = password[ii];
   *jptr = '';
   }
   }
  
   if (strlen(junk) < MIND
  
  ===================================
  
  以上是另一位牛人博客上对于这个问题的解释

论坛徽章:
0
6 [报告]
发表于 2010-02-07 21:03 |只看该作者
cracklib/cracklib,2.8.14还是硬编码
#define MINLEN 6

论坛徽章:
0
7 [报告]
发表于 2011-08-19 16:37 |只看该作者
遇到一样的问题,minlen的设置不起作用。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP