参考资料:Linux命令大全http://man.linuxde.net/
练习:以下命令的作用是什么?
1、cat /etc/passwd|grep -v nologin|grep -v halt|grep -v shutdown|awk -F":" '{ print $1"|"$3"|"$4 }'|more
一、提升使用linux命令的效率
1、查看命令的用法
man 命令
如:man ls
2、使用历史命令
(1)history 显示历史命令记录文件中的所有历史命令
(2)history 10 显示最新的10个历史命令
(3)!999 执行编号为999的历史命令
(4)用向上键(up arrow )查看上条命令,按回车执行
(5)输入!!并按回车执行上条命令
二、与安全有关的命令和操作
用passwd修改用户密码,常常提示“BAD PASSWORD: it is based on a dictionary word”。实际上linux要求的密码验证机制是在/etc/login.defs中规定最小密码字符数;同时还要受到/etc/pam.d/passwd的限定。但是在root用户下怎么设置都可以,可以不受验证机制的约束,即便出来“BAD PASSWORD: it is based on a dictionary word”也可以修改成功。
但是普通用户修改自己的密码,如果不符合密码验证机制的话就修改不成功,会有各种报错。如“BAD PASSWORD: it's WAY too short”,这是报密码太短,不符合/etc/login.defs的设置;“BAD PASSWORD: it is based on your username”,这是密码与帐号不能同名,这是不符合/etc/pam.d/passwd的设置;“BAD PASSWORD: it is based on a dictionary word”这是因为出现了字典里的字符串。
1、passwd命令
1.1 更改密码
命令:passwd username
passwd 修改当前用户密码
passwd username修改username用户的密码
示例如下:

(1)普通用户修改自己的密码
原密码:root$234,打算修改为:asdF@11
报错:passwd: Authentication token manipulation error

网上说: 用lsattr命令查看下/etc/passwd和/etc/shadow文件的隐藏属性中是否有i项,如果有用chattr -i xxx去i属性,改完密码后再加上i属性
可是没用。。。。
修改为asdF@111后成功了。
究竟什么地方做了这样的密码策略呢?
然后由1修改为Kui@22,不行,修改为Kui@222可以。
1.2 锁定和解锁用户
命令:passwd -l username passwd -u username
通过在/etc/shadow文件中用户密码前加!!锁定用户。
如下:

登录的时候因为密码不对,老让输入密码
1.3 用户登录时强制修改密码
命令:passwd -e username
与 chage -d 0 username效果一样。

效果:

2、密码更改控制、密码有效期控制、账号有效期控制
chage命令:http://man.linuxde.net/chage
2.1 强制第一次登录时必须更改密码
命令:chage -d 0 username

效果:

更改密码完成后:

2.2 不是随时都能修改密码,而是需要等待至少“Minimum number of days between password change”天后才能再一次修改密码
命令:chage -m xxxdays username

效果:

此参数-m设置为0时,表示你可以随时修改密码。
2.3 “Maximum number of days between password change”天后还没修改密码的话,密码就会过期。
命令:chage -M xxxdays username

效果:

继续:


改成-1呢?
man chage上说明:


把-d参数修改到过去的日期呢?

效果:

把-d参数修改到过去的1970-01-01日期呢?


跟改到0是一样的效果。
再来一下:


2.4 设置账号过期时间
命令:chage -E xxx username
xxx可以是2017-10-23这种,也可以是300这种表示从1970-1-1开始的天数

效果:

3、密码复杂度配置
3.1 PAM初识
凡是涉及到配置的修改和生效基本都是通过修改配置文件,然后重启或不需要重启相关服务或程序来实现的。密码复杂度策略的设置也是一样。配置文件在哪?怎么修改?别急,在linux系统中,用户认证的事情都是由pam这个东东来做的。
Linux-PAM的组织结构如下图:

这些配置规则的格式如下图:

service就如login、su、passwd之类。在/etc/pam.d/目录里,service有对应配置文件,配置文件中就没有service字段了。
type包括四类:auth、account、password、session
control包括两种形式:
(1)简单的关键字形式,包括:required、requisite、sufficient、optional、include、substack
(2)复杂形式,格式为[value1=action1 value2=action2 ...]。value和action可以取哪些值请参考Linux-PAM
两种形式互等描述举例:
required [success=ok new_authtok_reqd=ok ignore=ignore default=bad]
requisite [success=ok new_authtok_reqd=ok ignore=ignore default=die]
sufficient [success=done new_authtok_reqd=done default=ignore]
optional [success=ok new_authtok_reqd=ok default=ignore]
module-path:应用程序要使用的PAM模块的全称,或相对路径名/lib/security/或/lib64/security/
module-arguments:用空格分开的token列表,用来修改所给PAM的具体行为。单个token中包括空格的话,token要用[]括起来,token中可以有[,如果要有],]前面需加\
例子:
squid auth required pam_mysql.so user=passwd_query passwd=mada \
db=eminence [query=select user_name from internet_service \
where user_name='%u' and password=PASSWORD('%p') and \
service='web_proxy']
参考文档1: PAM 教程:一、PAM 简介
Linux可插拔认证模块(PAM)的配置文件、工作原理与流程
(1)pam的配置文件

(2)pam_xxx.so文件

3.2 使用PAM
passwd username用于修改或设置用户username的密码。
那么,对这些操作的限制就来自PAM。根据2.1介绍。passwd是一个应用程序,它在pam.d目录中对应的配置文件就是passwd,也即跟该应用程序名称相同。
先看下/etc/pam.d/passwd的内容。

由上图知,type是password类型,对应的control是substack。然后再找system-auth。如下图:

根据参考文档,控制密码修改策略的正是上图红色线后的参数。
在pam_cracklib.so后面我将retyr=3修改为retry=2,再加上了type=Linux18。效果如下:


minlen=8好像没用啊。看了下说明书,如示说:
4、文件访问配置
4.1 文件只读属性的修改(root权限)
chattr +i /home/test/iattr.txt 修改为只读
chattr -i /home/test/iattr.txt 去掉只读

vi编辑该文件时:

5、登录超时自动注销
5.1 /etc/profile里加入TMOUT=xxx秒

效果:

三、其他
1、查看.so文件中的函数列表


浙公网安备 33010602011771号