linux /etc/shadow--passwd/pam.d/system-auth文件详解
?在linux操作系统中, /etc/passwd文件中的每个用户都有一个对应的记录行,记录着这个用户的一下基本属性。该文件对所有用户可读。 ??而/etc/shadow文件正如他的名字一样,他是passwd文件的一个影子,/etc/shadow文件中的记录行与/etc/passwd中的一一对应,它由pwconv命令根据/etc/passwd中的数据自动产生。但是/etc/shadow文件只有系统管理员才能够进行修改和查看。 ?/etc/passwd文件介绍 root:x:0:0:root:/root:/bin/bash avahi:x:111:117:Avahi mDNS daemon,:/var/run/avahi-daemon:/bin/false 用户名(login_name):是代表用户账号的字符串。通常长度不超过8个字符,并且由大小写字母和/或数字组成。登录名中不能有冒号(:),因为冒号在这里是分隔符。为了兼容起见,登录名中最好不要包含点字符(.),并且不使用连字符(-)和加号(+)打头。 daemon:*:16652:0:99999:7::: “登录名”是与/etc/passwd文件中的登录名相一致的用户账号 如果为空,则对应用户没有口令,登录时不需要口令; “最小时间间隔”指的是两次修改口令之间所需的最小天数。 1)/etc/shadow 概说;
/etc/shadow文件是/etc/passwd 的影子文件,这个文件并不由/etc/passwd 而产生的,这两个文件是应该是对应互补的;shadow内容包括用户及被加密的密码以及其它/etc/passwd 不能包括的信息,比如用户的有效期限等;这个文件只有root权限可以读取和操作,权限如下:
-r-------- 1 root root 1.5K 10月 16 09:49 /etc/shadow /etc/shadow 的权限不能随便改为其它用户可读,这样做是危险的。如果您发现这个文件的权限变成了其它用户组或用户可读了,要进行检查,以防系统安全问题的发生; 如果我们以普通用户查看这个文件时,应该什么也查看不到,提示是权限不够: [ [email?protected] ~]$ more /etc/shadow /etc/shadow: 权限不够 2)/etc/shadow 的内容分析; /etc/shadow 文件的内容包括9个段位,每个段位之间用:号分割;我们以如下的例子说明; beinan:$1$VE.Mq2Xf$2c9Qi7EQ9JP8GKF8gH7PB1:13072:0:99999:7::: linuxsir:$1$IPDvUhXP$8R6J/VtPXvLyXxhLWPrnt/:13072:0:99999:7::13108: 第一字段:用户名(也被称为登录名),在/etc/shadow中,用户名和/etc/passwd 是相同的,这样就把passwd 和shadow中用的用户记录联系在一起;这个字段是非空的; 第二字段:密码(已被加密),如果是有些用户在这段是x,表示这个用户不能登录到系统;这个字段是非空的; 第三字段:上次修改口令的时间;这个时间是从1970年01月01日算起到最近一次修改口令的时间间隔(天数),您可以通过passwd 来修改用户的密码,然后查看/etc/shadow中此字段的变化; 第四字段:两次修改口令间隔最少的天数;如果设置为0,则禁用此功能;也就是说用户必须经过多少天才能修改其口令;此项功能用处不是太大;默认值是通过/etc/login.defs文件定义中获取,PASS_MIN_DAYS 中有定义; 第五字段:两次修改口令间隔最多的天数;这个能增强管理员管理用户口令的时效性,应该说在增强了系统的安全性;如果是系统默认值,是在添加用户时由/etc/login.defs文件定义中获取,在PASS_MAX_DAYS 中定义; 第六字段:提前多少天警告用户口令将过期;当用户登录系统后,系统登录程序提醒用户口令将要作废;如果是系统默认值,是在添加用户时由/etc/login.defs文件定义中获取,在PASS_WARN_AGE 中定义; 第七字段:在口令过期之后多少天禁用此用户;此字段表示用户口令作废多少天后,系统会禁用此用户,也就是说系统会不能再让此用户登录,也不会提示用户过期,是完全禁用; 第八字段:用户过期日期;此字段指定了用户作废的天数(从1970年的1月1日开始的天数),如果这个字段的值为空,帐号永久可用; 第九字段:保留字段,目前为空,以备将来Linux发展之用;
?
LINUX设置密码复杂度的文件/etc/pam.d/system-auth一、准备工作: 安装 PAM 的 cracklib 模块,cracklib 能提供额外的密码检查能力。 二、具体操作: Debian、Ubuntu 或 Linux Mint 系统上: 代码如下: $ sudo apt-get install libpam-cracklib CentOS、Fedora、RHEL 系统已经默认安装了 cracklib PAM 模块,所以在这些系统上无需执行上面的操作。 为了强制实施密码策略,需要修改 /etc/pam.d 目录下的 PAM 配置文件。一旦修改,策略会马上生效。 注意:此教程中的密码策略只对非 root 用户有效,对 root 用户无效。 策略设置: 1、禁止使用旧密码 找到同时有 “password” 和 “pam_unix.so” 字段并且附加有 “remember=5” 的那行,它表示禁止使用最近用过的5个密码(己使用过的密码会被保存在 /etc/security/opasswd 下面)。 Debian、Ubuntu 或 Linux Mint 系统上: 代码如下: $ sudo vi /etc/pam.d/common-passwordpassword [success=1 default=ignore] pam_unix.so obscure sha512 remember=5 CentOS、Fedora、RHEL 系统上: 代码如下: $ sudo vi /etc/pam.d/system-authpassword sufficient pamunix.so sha512 shadow nullok tryfirstpass useauthtok remember=5 二、设置最短密码长度 找到同时有 “password” 和 “pam_cracklib.so” 字段并且附加有 “minlen=10” 的那行,它表示最小密码长度为(10 - 类型数量)。这里的 “类型数量” 表示不同的字符类型数量。PAM 提供4种类型符号作为密码(大写字母、小写字母、数字和标点符号)。如果密码同时用上了这4种类型的符号,并且 minlen 设为10,那么最短的密码长度允许是6个字符。 Debian、Ubuntu 或 Linux Mint 系统上: 代码如下: $ sudo vi /etc/pam.d/common-passwordpassword requisite pam_cracklib.so retry=3 minlen=10 difok=3 CentOS、Fedora、RHEL 系统上: 代码如下: $ sudo vi /etc/pam.d/system-authpassword requisite pam_cracklib.so retry=3 difok=3 minlen=10 三、设置密码复杂度 找到同时有 “password” 和 “pam_cracklib.so” 字段并且附加有 “ucredit=-1 lcredit=-2 dcredit=-1 ocredit=-1” 的那行,表示密码必须至少包含一个大写字母(ucredit),两个小写字母(lcredit),一个数字(dcredit)和一个标点符号(ocredit)。 Debian、Ubuntu 或 Linux Mint 系统上: 代码如下: $ sudo vi /etc/pam.d/common-passwordpassword requisite pam_cracklib.so retry=3 minlen=10 difok=3 ucredit=-1 lcredit=-2 dcredit=-1 ocredit=-1 CentOS、Fedora、RHEL 系统上: 代码如下: $ sudo vi /etc/pam.d/system-authpassword requisite pam_cracklib.so retry=3 difok=3 minlen=10 ucredit=-1 lcredit=-2 dcredit=-1 ocredit=-1 四、设置密码过期期限 编辑 /etc/login.defs 文件,可以设置当前密码的有效期限,具体变量如下所示: 代码如下: $ sudo vi /etc/login.defsPASSMAXDAYS 150 PASSMINDAYS 0 PASSWARNAGE 7 这些设置要求用户每6个月改变密码,并且会提前7天提醒用户密码快到期了。 如果想为每个用户设置不同的密码期限,使用 chage 命令。下面的命令可以查看某个用户的密码限期: 代码如下: $ sudo chage -l xmoduloLast password change : Dec 30,2013 Password expires :?never Password inactive : never Account expires :?never Minimum number of days between password change :?0 Maximum number of days between password change :?99999 Number of days of warning before password expires : 7 默认情况下,用户的密码永不过期。 五、下面的命令用于修改 xmodulo 用户的密码期限: 代码如下: $ sudo chage -E 6/30/2014 -m 5 -M 90 -I 30 -W 14 xmodulo 上面的命令将密码期限设为2014年6月3日。另外,修改密码的最短周期为5天,最长周期为90天。密码过期前14天会发送消息提醒用户,过期后帐号会被锁住30天。 设置完后,验证效果如下: (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |