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
有的还加上一些修改/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
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯