1.Linux用户的密码文件

用户:

基础密码文件:/etc/passwd

密码文件:/etc/shadow

组:

基础密码文件:/etc/group

密码文件:/etc/gshadow

/etc/passwd

内容:用户名、X(表示密码存于/etc/shadow)UIDGID、个人信息、家目录、默认shell

查看个人信息:finger 用户名

修改个人信息:chfn 用户名

修改默认shellchsh 用户名(修改范围:/etc/shells

root可以直接用vi修改/etc/passwd

/etc/shadow

内容:用户名、密码(MD5)、最后一次修改密码的时间(从1970.1.1开始的天数)、密码修改最小间隔天数、必须修改密码天数、提醒修改密码天数、密码过期天数、账户过期天数(从1970.1.1开始的天数)

修改密码修改最小间隔天数:passwd-n 天数用户名

修改必须修改密码天数:passwd -x 天数用户名

修改提醒修改密码天数:passwd -w 天数用户名

修改密码过期天数:passwd -i 天数用户名

修改账户过期天数:usermod -e 日期

设置系统日期:date --set=2011-06-0421:34:00

root有权操作,如果删除密码段,则用户登录无需输入密码

/etc/group

内容:组名、密码、GID、成员

用户加入组:usermod -G 组名用户名

切换组:newgrp 组名(如果用户之前不属于该组,需要输入组密码)

设置组密码:gpasswd 组名

改文件、文件夹所属组:chgrp 组名文件名/文件夹名

/etc/gshadow

内容:组名、密码、管理员、成员

增加管理员:gpasswd -A 组名用户名

增加组员(root,组管理员可以):gpasswd-a 用户名组名

删除组员(root,组管理员可以):gpasswd-d 用户名组名

修改用户默认的密码策略,编辑/etc/login.defs,修改以下内容,这样以后新建的用户的密码会遵循以下规则

PASS_MAX_DAYS99999#密码的最大有效期, 99999:永久有期

PASS_MIN_DAYS0#是否可修改密码,0可修改,0多少天后可修改

PASS_MIN_LEN5#密码最小长度,使用pam_cracklib module,该参数不再有效

PASS_WARN_AGE7#密码失效前多少天在用户登录时通知用户修改密码

 

2.当用户错误输入N次密码后锁定用户

redhat 6 现在用的认证模块是:pam_tally2.so,限制用户的登陆的次数。

和限制用户登录相关的文件有:/etc/pam.d/login/etc/pam.d/system-auth/etc/pam.d/gdm-password,其中gdm-password可以用来修改图形界面。

system-auth定义了较多的PAM命令语句,其主要作用是提示普通用户输入root账号的密码并且包括所有用户个人的配置,我们可以在这里面修改限制登录次数并且锁定一段时间。

login是控制字符终端的登陆限制,如果我们在这里修改了限制,在图形界面还是不会有影响。

system-auth文件下面加入下面一行;

authrequiredpam_tally2.sodeny=5even_deny_root root_unlock_time=10unlock_time=10

表示的是用pam_tally2.so模块,如果5次登陆失败,则这个用户被锁定10秒。

even_deny_root:表示也限制root用户。

修改图形界面的文件是gdm_password,同样是加入上面的那句话。

修改ssh的文件是sshd,同样是加入上面的那句话。

注销之后就生效。

清除某个用户的登陆失败次数,让改用户可以重新登陆

#pam_tally2-r-uusername

 

3.修改密码时不能重复前n次使用过的

出于安全考虑,要求修改linux密码策略,每次修改密码时设置的新密码不能是前n次使用过的密码。配置如下:

Debian / Ubuntu:修改文件 # vi/etc/pam.d/common-password

CentOS / RHEL /RedHat / Fedora 修改文件 # vi /etc/pam.d/system-auth

 password sufficientpam_unix.so use_authtok md5 shadow remember=10

在相应行的后面添加 remember=10,而不是添加一行!

SUSE,man pw_check/etc/security/pam_pwcheck文件中添加remember=5

passwd:nullok use_cracklib remember=5