Linux是对用户的密码的复杂度要求设置【转】

那么Linux是如何实现对用户的密码的复杂度的检查的呢?其实系统对密码的控制是有两部分组成:

1 cracklib

2 /etc/login.defs

pam_cracklib.so 才是控制密码复杂度的关键文件/lib/security/pam_cracklib.so, Redhat公司专门开发了cracklib这个安装包来判断密码的复杂度。如果你想查看pam_cracklib的一些参数,那么就使用下面命令

[[email protected] security]# man pam_cracklib

其中一些常见的参数为
 
retry=N
改变输入密码的次数,默认值是1。就是说,如果用户输入的密码强度不够就退出。可以使用这个选项设置输入的次数,以免一切都从头再来

              Prompt user at most N times before returning with error. The
              default is 1

minlen=N
新密码最低可接受的长度

              The minimum acceptable size for the new password (plus one if
              credits are not disabled which is the default). In addition to the
              number of characters in the new password, credit (of +1 in length)
              is given for each different kind of character (other, upper, lower
              and digit). The default for this parameter is 9 which is good for a
              old style UNIX password all of the same type of character but may
              be too low to exploit the added security of a md5 system. Note that
              there is a pair of length limits in Cracklib itself, a "way too
              short" limit of 4 which is hard coded in and a defined limit (6)
              that will be checked without reference to minlen. If you want to
              allow passwords as short as 5 characters you should not use this
              module.

difok=N
默认值为10。这个参数设置允许的新、旧密码相同字符的个数。不过,如果新密码中1/2的字符和旧密码不同,则新密码被接受

              This argument will change the default of 5 for the number of
              characters in the new password that must not be present in the old
              password. In addition, if 1/2 of the characters in the new password
              are different then the new password will be accepted anyway.

dcredit=N
限制新密码中至少有多少个数字

              (N >= 0) This is the maximum credit for having digits in the new
              password. If you have less than or N digits, each digit will count
              +1 towards meeting the current minlen value. The default for
              dcredit is 1 which is the recommended value for minlen less than
              10.

              (N < 0) This is the minimum number of digits that must be met for a
              new password.

ucredit=N
限制新密码中至少有多少个大写字符。

lcredit=N
限制新密码中至少有多少个小写字符。

例如在/etc/pam.d/system-auth 在password使用pam_cracklib.so设置的最后附加dcredit=3 ucredit=2

password    requisite     pam_cracklib.so try_first_pass retry=3 dcredit=3 ucredit=2
password    sufficient    pam_unix.so md5 shadow nullok try_first_pass use_authtok
password    required      pam_deny.so

此时如果你新建用户的密码不符合密码复杂度,就会出现BAD PASSWORD: it is based on a dictionary word提示。

[[email protected] ~]# passwd ttt
Changing password for user ttt.
New UNIX password: 
BAD PASSWORD: it is based on a dictionary word

转自

Linux账户密码过期安全策略设置 - 潇湘隐者 - 博客园
http://www.cnblogs.com/kerrycode/p/5600525.html

时间: 2024-11-03 03:34:36

Linux是对用户的密码的复杂度要求设置【转】的相关文章

【Hadoop系列】linux下 root用户免密码登录远程主机 ssh

操作环境: CentOS 6.5 操作对象: 用户A主机和远程主机B 正文部分:斜体加粗代表linux指令. linux下 非root用户免密码登录远程主机 ssh请转至此链接:XXXXXXXXXXXXXXXX(暂未写好) 一.远程主机B和用户A都安装openssh 首先我们检查远程主机是否安装openshh和rsync rpm -qa|grep opensshrpm -qa|grep rsync 如果没有返回相关信息代表并未安装,我们用yum指令安装. yum install openssh

辛星浅析Linux下新用户的密码问题

当我们用Linux新建一个用户的时候,如果没有设置密码,那么此时的密码是一个未知数,它并不是一个空密码,我们可以用passwd来修改发现不论我们输入什么或者什么都不输入,都不起作用,还有就是这个用户无法被登陆,当然有一种情况是除外的,那就是使用root用户进行su. 当然要密码这个问题也非常简单,只要我们保证useradd和passwd成对出现,就肯定没有问题啦.它最大的误区就是我们会认为没有设置密码就是没有密码,直接一个回车就可以了,但是实际情况并不是这样.

Linux系统root用户忘记密码解决办法

一.centos6 root用户忘记密码解决办法 1.grub未加密(知道grub密码)root密码找回办法: (1)重启系统,在系统等待时间按任意键进入如图一所示界面 图一 (2)在图一所示界面中按"e"键进入如图二所示界面 图二 (3)在图二所示的界面中选择第二项,并按"e"进入图三所示界面 图三 (4)在图三所示的界面中quite后面加参数single或者数字1,按回车回到图二所示的界面,选择第二项,按"b"进入系统,此时,进入系统不需要密

linux系统root用户忘记密码的重置方法

如何重置CentOS 7的root密码 重置Centos 7 Root密码的方式和Centos 6完全不同.让我来展示一下到底如何操作. 1.在启动grub菜单,选择编辑选项启动: 2.按键盘e键,来进入编辑界面: 3.找到Linux 16的那一行,将ro改为rw init=/sysroot/bin/sh 4.现在按下 Control+x ,使用单用户模式启动: 5.现在,可以使用下面的命令访问系统: chroot   /sysroot 6.重置密码:(根据提示输入) passwd  root

2、linux系统root用户忘记密码后的重置方式

1.重新启动linux之后到此界面按空格暂停,之后按E进入. 2.找到UTF-8,在后面空格后输入init=/bin/sh  然后CHRL+X启动. 3.进入到这个界面,输入mount -o remount,rw /   4.输入passwd..然后输入新密码.回车.重复输入一次密码,回车.完成 5.完成之后点击电源重启客户机. 6.重启过后输入root用户后,就可以用修改后的密码进行登录.

linux 忘记mysql用户root密码 解决方案

1.vim /etc/my.cnf[mysqld]skip-grant-tables ##追加此行,跳过权限表, 2.重启mysqlsystemctl restart mysqld 3.mysql 登陆mysqlmysql> use mysql;mysql> UPDATE user SET Password = password ( 'zha123456' ) WHERE User = 'root' ;mysql> flush privileges ; mysql> quit 4.

Linux重置root用户密码

忘记密码.是常事儿!怎么改?往下看!! Linux 最大权限的 root用户密码忘记了?咋么办.重做系统?当然,可以这样子!!!但是在生产环境中.......行么?答案:no(随带提一句:就算是在学习过程中,建议您也按照生产环境来玩(Linux) 初学Linux,root密码忘记了,第一次玩!! ----------------------------------------------------------------------------------------- 操作步骤: 重启Lin

Linux中Root用户密码变更、密码忘记

用户设置bash的时候,错把root的bash改为bin/bash,注意,不是“/bin/bash”!. 然后就登录不了root了,也修改不了/etc/passwd了. 解决: 1.重启Ubuntu,随即长按shift进入grub菜单: 2.选择recovery mode,即Ubuntu,With Linux 3.2.0-23-generic(recovery mode),按e,编辑启动参数: 3.把ro recovery nomodeset 改成rw single init=/bin/bash

Linux使用单用户模式修改root密码.

Linux使用过程中,和Windows一样,时间一长后,就会忘记设置的超级用户密码.我们知道在Windows下超级用户是Administrator,而在Linux下超级用户是root.那么,下面我们就开始讲解在Linux忘记root密码时,应该如何设置新的root密码(以CentOS 6.8为例). 1.重启你的Linux操作系统,在3秒内按下Enter键或者↓键.此时可以看见如下界面: 说明:         'e'表示在启动系统前,在命令行编辑.         'a'表示在启动系统前,可以