专栏首页散尽浮华Linux系统下的用户密码设定梳理

Linux系统下的用户密码设定梳理

随着linux使用的普遍,对于linux用户以及系统的安全要求越来越高,而用户密码复杂程度是系统安全性高低的首要体现。因此如何对linux下用户的密码进行规则限制,以保证用户必须使用复杂的密码,杜绝用户随意使用简单的密码,从而提高用户的安全性和系统的安全性。下面就不做过多赘述,直接以centos6版本为例进行介绍:

1)用户密码策略 Linux系统下的用户密码的有效期,是否可以修改密码可以通过login.defs文件控制.对login.defs文件修只影响后续建立的用户,如果要改变以前建立的用户的有效期等可以使用chage命令.

[root@bastion-IDC ~]# cat /etc/login.defs|grep -v "^#"|grep -v "^$"
MAIL_DIR	/var/spool/mail
PASS_MAX_DAYS	99999
PASS_MIN_DAYS	0
PASS_MIN_LEN	5
PASS_WARN_AGE	7
UID_MIN			  500
UID_MAX			60000
GID_MIN			  500
GID_MAX			60000
CREATE_HOME	yes
UMASK           077
USERGROUPS_ENAB yes
ENCRYPT_METHOD SHA512 

上述文件中的重要参数表示:
PASS_MAX_DAYS   99999     密码的最大有效期, 99999:永久有期  
PASS_MIN_DAYS   0         是否可修改密码,0表示可修改,非0表示多少天后可修改 
PASS_MIN_LEN    5         密码最小长度,但是使用pam_cracklib.so模块后,该参数不再有效(这个参考下面密码复杂度规则设定)  
PASS_WARN_AGE   7         密码失效前多少天在用户登录时通知用户修改密码

2)用户密码复杂度规则设定,需要通过/etc/pam.d/system-auth文件实施,centos6中默认是通过pam_cracklib.so模块控制:

[root@bastion-IDC ~]# cat /etc/redhat-release
CentOS release 6.8 (Final)
  
[root@bastion-IDC ~]# vim /etc/pam.d/system-auth
将文件中的下面两行:
password    requisite     pam_cracklib.so try_first_pass retry=3 type=
password    sufficient    pam_unix.so sha512 shadow nullok try_first_pass use_authtok
改为:
password    requisite     pam_cracklib.so try_first_pass retry=3 type= minlen=8 ucredit=-2 lcredit=-4 dcredit=-1 ocredit=-1
password    sufficient    pam_unix.so md5 shadow nullok try_first_pass use_authtok remember=5
  
上面文件中参数分别说明设置密码的时候要遵循下面的规则:
retry=3       定义登录/修改密码失败时,可以重试的次数;
type=xxx      当添加/修改密码时,系统给出的缺省提示符是什么,用来修改缺省的密码提示文本。默认是不修改的,如上例。
minlen=8      定义用户密码的最小长度为8位
ucredit=-2    定义用户密码中最少有2个大写字母    (数字为负数,表示至少有多少个大写字母;数字为正数,表示至多有多少个大写字母;下面同理)
lcredit=-4    定义用户密码中最少有4个小写字母
dcredit=-1    定义用户密码中最少有1个数字
ocredit=-1    定义用户密码中最少有1个特殊字符(除数字、字母之外)
remember=5    修改用户密码时最近5次用过的旧密码就不能重用了
----------------------------------------------------------------------------
除了上面的几个参数,还可以设定下面的参数规则
difok=N       此选项用来规定新密码中必需有N个字符与旧密码不同。如果新密码中有1/2以上的字符与旧密码不同时,该新密码就会被接受。
difignore=N   此选项用来设定在difok之前收到多少个字符时,difok设置会被忽略,缺省为23。
minclass=N    此选项用来规定新密码中的字符类别的最小数目,字符一般有四种类别:数字、大写字母、小写字母,以及特殊字符。

3)Linux账户期限设定 Linux系统下可以使用chage命令是用来修改帐号和密码的有效期限。

需求场景:
公司给客户开的ftp账户用于下载报社新闻稿件。这个是付费的,账户有时间限制。若是合同到期了,客户想续约,就需要给这个ftp账户做延期。

注意下面修改账户有效期限的命令:
# chage -l username   查看系统账户的当前设置
# chage -M 600 fzwb_word   修改fzwb_word账户密码的有效天数为600天。过了这个天数,账户密码无效
# chage -E "Jun 16, 2016" fzwb_word  设定fzwb_word账户的具体到期时间。过了这个日期,账户就无效。默认是never  (fzwb_word为ftp的账户账户)

注意:
chage -M  针对的是账户密码过期时间。
chage -E  这个命令针对的是账户过期时间

设定账户过期时间,除了使用chage -E命令,还可以使用usermod -e命令
# usermod -e "Jun 16, 2016" fzwb_word   设定fzwb_word账户的具体到期时间。默认是never  (fzwb_word为ftp的账户账户)

下面命令查看, fzwb_word 这个账户的时间到 2015 年 6 月 10 号就到期了!!
修改为 2016 月 6 月 16 号到期!
[root@hlweb80 ~]# chage -l fzwb_word
Minimum: 0
Maximum: 99999
Warning: 7
Inactive: -1
Last Change: Jun 15, 2012
Password Expires: Never
Password Inactive: Never
Account Expires: Jun 10, 2015

[root@hlweb80 ~]# usermod -e "Jun 16, 2016" fzwb_word
[root@hlweb80 ~]# chage -l fzwb_word
Minimum: 0
Maximum: 99999
Warning: 7
Inactive: -1
Last Change: Jun 15, 2012
Password Expires: Never
Password Inactive: Never
Account Expires: Jun 16, 2016

--------------------------------------------------------------------------------
可以使用chage命令来手动修改账户的相关属性:
格式:chage [选项] 账户名

[选项]
-m:密码可更改的最小天数。为零时代表任何时候都可以更改密码。 
-M:密码保持有效的最大天数。 
-w:账户密码到期前,提前收到警告信息的天数。 
-E:帐号到期的日期。过了这天,此帐号将不可用。 
-d:上一次更改的日期。 
-i:停滞时期。如果一个密码已过期这些天,那么此帐号将不可用。 
-l:例出当前的设置。由非特权账户来确定他们的密码或帐号何时过期。

实例如下:
[root@linux-node1 ~]# chage -l wangshibo
Last password change          : Mar 09, 2017       //账户创建时间
Password expires          : Aug 30, 2022           //账户密码过期时间
Password inactive         : never
Account expires           : never                 //账户过期时间
Minimum number of days between password change    : 0
Maximum number of days between password change    : 2000
Number of days of warning before password expires : 7

[root@linux-node1 ~]# usermod -e "Jun 16, 2018" wangshibo

[root@linux-node1 ~]# chage -l wangshibo
Last password change          : Mar 09, 2017
Password expires          : Aug 30, 2022
Password inactive         : never
Account expires           : Jun 16, 2018                       
Minimum number of days between password change    : 0
Maximum number of days between password change    : 2000
Number of days of warning before password expires : 7

[root@linux-node1 ~]# chage -M 20 wangshibo

[root@linux-node1 ~]# chage -l wangshibo
Last password change          : Mar 09, 2017
Password expires          : Mar 29, 2017         
Password inactive         : never
Account expires           : Jun 16, 2018
Minimum number of days between password change    : 0
Maximum number of days between password change    : 20
Number of days of warning before password expires : 7

[root@linux-node1 ~]# chage -E "Jun 2, 2020" wangshibo

[root@linux-node1 ~]# chage -l wangshibo
Last password change          : Mar 09, 2017
Password expires          : Mar 29, 2017
Password inactive         : never
Account expires           : Jun 02, 2020
Minimum number of days between password change    : 0
Maximum number of days between password change    : 20
Number of days of warning before password expires : 7

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Centos中yum方式安装java

    查看CentOS自带JDK是否已安装。 ◆输入:yum list installed |grep java。 若有自带安装的JDK,如何卸载CentOS系统自带...

    洗尽了浮华
  • Linux下更换默认yum源为网易yum源的操作记录

    废话不多说,下面记录了centos下更换系统默认yum源为网易yum源的操作过程: 1)备份原有的默认yum源 [root@bastion-IDC ~]# c...

    洗尽了浮华
  • Linux下修改系统编码的操作记录

    Linux系统安装后,发现中文显示乱码。因为系统编码为en_US.UTF-8,应改为支持中文的编码(即zh_CN.UTF-8) 操作记录如下: 0)系统必须安装...

    洗尽了浮华
  • 如何查找UI5框架的BSP应用名称

    版权声明:本文为博主汪子熙原创文章,未经博主允许不得转载。 https://jerry.bl...

    Jerry Wang
  • 一线大厂青睐的前端人,90%满足这3个条件

    从2017年到现在,前端开发行业内并不平静。受到资本寒冬导致互联网和创业市场整体遇冷的影响,前端岗位需求有很大程度上的收缩。

    闰土大叔
  • 计算资源有限的人如何在深度学习领域成长?

    结合自己学习Deep Learning以来的经验来谈谈自己的感受吧,实验室刚开始也只有单卡的机器,现在工作了有机会使用更多的计算资源。

    AI研习社
  • IOS开发必须知道的3DLabel实现过程

    最近写了很多关于SceneKit 的入门教程文章,初衷就是想给应用增加一点色彩,今天就教大家实现一个简单的3DLabel 的小框架.如果你的应用中需要实现3D字...

    酷走天涯
  • python自学——文件打开

    py3study
  • nmap +shell脚本实现内网端口巡检

    #############################################################

    二狗不要跑
  • nginx0.1.0之http模块初始化源码分析(4)

    我们继续分析ngx_http_block函数剩余的代码,剩下的代码就是处理phases和监听的端口、地址、servername的。

    theanarkh

扫码关注云+社区

领取腾讯云代金券