I come, I see, I conquer

                    —Gaius Julius Caesar

  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 :: 管理 ::

01 鳥哥的 Linux 私房菜

02 Linux Shell常用命令总结

03 Linux Shell常用技巧(一)

04 Linux Shell常用技巧(二)

05 Linux Shell常用技巧(三)

06 linux grep命令详解

07 Linux netstat命令详解

08 linux awk命令详解

 

参考资料: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可插拔认证模块的基本概念与架构

                      Linux可插拔认证模块(PAM)的配置文件、工作原理与流程

                      Linux中pam模块详解

                      Linux中pam认证详解(上)

    参考文档2:  Linux-PAM   Linux-Pam

                     了解和配置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文件中的函数列表

 

 

posted on 2017-06-07 08:47  jcsu  阅读(349)  评论(0)    收藏  举报