一、chage命令科普
chage命令 是用来修改帐号和密码的有效期限。
1.1语法
chage [选项] 用户名
1.2选项
-m:密码可更改的最小天数。为零时代表任何时候都可以更改密码。
-M:密码保持有效的最大天数。
-w:用户密码到期前,提前收到警告信息的天数。
-E:帐号到期的日期。过了这天,此帐号将不可用。
-d:上一次更改的日期。
-i:停滞时期。如果一个密码已过期这些天,那么此帐号将不可用。
-l:例出当前的设置。由非特权用户来确定他们的密码或帐号何时过期。
1.3实例
可以编辑`/etc/login.defs`来设定几个参数,以后设置口令默认就按照参数设定为准:
PASS_MAX_DAYS 99999
PASS_MIN_DAYS 0
PASS_MIN_LEN 5
PASS_WARN_AGE 7
当然在/etc/default/useradd
可以找到如下2个参数进行设置:
# useradd defaults file
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes
通过修改配置文件,能对之后新建用户起作用,而目前系统已经存在的用户,则直接用chage
来配置。
我的服务器root
帐户密码策略信息如下:
[root@linuxde ~]# chage -l root
最近一次密码修改时间 : 3月 12, 2019
密码过期时间 :从不
密码失效时间 :从不
帐户过期时间 :从不
两次改变密码之间相距的最小天数 :0
两次改变密码之间相距的最大天数 :99999
在密码过期之前警告的天数 :7
我可以通过chage -M 天数 用户
命令修改我的密码过期时间:
[root@linuxde ~]# chage -M 60 root
[root@linuxde ~]# chage -l root
最近一次密码修改时间 : 3月 12, 2019
密码过期时间 : 5月 11, 2019
密码失效时间 :从不
帐户过期时间 :从不
两次改变密码之间相距的最小天数 :0
两次改变密码之间相距的最大天数 :60
在密码过期之前警告的天数 :9
然后通过chage -I 天数 用户
命令设置密码失效时间:
[root@linuxde ~]# chage -I 10 root
[root@linuxde ~]# chage -l root
最近一次密码修改时间 : 3月 12, 2019
密码过期时间 : 5月 11, 2019
密码失效时间 : 5月 21, 2019
帐户过期时间 :从不
两次改变密码之间相距的最小天数 :0
两次改变密码之间相距的最大天数 :60
在密码过期之前警告的天数 :9
从上述命令可以看到,在密码过期后10天,密码自动失效,这个用户将无法登陆系统了。
二、编写监控脚本和配置文件
2.1 监控脚本
[root@master alertscripts]# pwd
/usr/local/zabbix/share/zabbix/alertscripts
[root@master alertscripts]# cat ./chageUser.sh
#!/bin/bash
user_name=$1
end_year=`sudo chage -l ${user_name} | head -2| tail -1 | awk -F: '{print $2}'| awk -F',' '{print $2}'| awk '{print $1}'`
if [ "${end_year}" == "" ];then
echo "99999"
exit 0
fi
end_mounth=`chage -l ${user_name} | head -2| tail -1 | awk -F: '{print $2}'| awk -F',' '{print $1}'| awk '{print $1}'`
case ${end_mounth} in
'Jan') end_mounth=1;;
'Feb') end_mounth=2;;
'Mar') end_mounth=3;;
'Apr') end_mounth=4;;
'May') end_mounth=5;;
'Jun') end_mounth=6;;
'Jul') end_mounth=7;;
'Aug') end_mounth=8;;
'Sep') end_mounth=9;;
'Oct') end_mounth=10;;
'Nov') end_mounth=11;;
'Dec') end_mounth=12;;
esac
end_day=`chage -l ${user_name} | head -2| tail -1 | awk -F: '{print $2}'| awk -F',' '{print $1}'| awk '{print $2}'`
end_date_s=`/bin/date -d "${end_year}"-"${end_mounth}"-"${end_day}" +%s`
star_date_s=`/bin/date +%s`
let diffday=(${end_date_s}-${star_date_s})/86400
echo ${diffday}
2.2配置文件
[root@master zabbix_agentd.conf.d]# pwd
/usr/local/zabbix/etc/zabbix_agentd.conf.d
[root@master zabbix_agentd.conf.d]# cat ./chageUser.conf
UnsafeUserParameters=1
UserParameter=chageUser[*],sudo /usr/local/zabbix/share/zabbix/alertscripts/chageUser.sh $1
[root@master zabbix_agentd.conf.d]#
2.3 sudo 权限
命令行输入visudo
,或者打开/etc/sudoers
文件,加入如下的内容
image.png
或者:
echo 'zabbix ALL=(ALL) NOPASSWD: /usr/bin/chage' >> /etc/sudoers.d/zabbix
2.4去掉允许接收远程命令的注释
image.png
三、测试一下能不能获取数据
image.png
能正常获取数据
四、创建监控模板
image.png
image.png
然后主机链接模板,给宏赋值(用户名),查看监控项是否支持以及查看最新数据
image.png
-----------------------------------完成---------------------------------------