永发信息网

linux如何设置密码规则

答案:1  悬赏:0  手机版
解决时间 2021-04-27 14:31
  • 提问者网友:雨不眠的下
  • 2021-04-27 08:37
大家好,问下Linux下怎么设置密码规则,想windows一样可以要求设定几个字母加几个字符的那种。 另外尝试配置login文件配置。不过没有效果的 。
最佳答案
  • 五星知识达人网友:神的生死簿
  • 2021-04-27 10:11
修改/etc/login.defs文件中PASS_MIN_LEN参数,设置为你所需要的长度,默认是5
  
  有的还加上一些修改/etc/pam.d/passwd的方法,加上cracklib.so库。但是实际上,这个方法并不奏效,原来是什么样子,现在还是什么样子,为什么呢?
  
  这是因为采用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);
  
  
   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
  
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯