(3)口令管理和口令时效
1)使用passwd命令进行口令管理
创建用户账户之后,还要给新用户设置口令。为此需使用命令passwd,其格式是:
passwd [<选项>][<登录用户名>]
常用选项如下表所示。
passwd 命令的常用选项 | |||
选项 | 说 明 | 选项 | 说 明 |
-S | 列出口令的状态信息 | -d | 删除口令 |
-l | 锁定用户账户 | -k | 保持口令不变,直到口令过期失效后方能更改 |
-u | 解除已锁定账户 | -stdin | 从标准输入读取口令(菲交互模式) |
注意:
(1)在输入口令时,屏幕上不会回显。口令的选取至少用8个字符,最好大小写字母和数字及特殊字符搭配使用,尽量不要用英文单词作为口令。
(2)只有管理员账户(root) 可以更改其他用户的口令,普通用户只能更改 自己的口令,且在更改口令之前,系统会要求用户输入旧的口令。
下面给出几个passwd命令的使用示例。
操作步骤3.2 passsd命令的使用示例
//1.创建新用户jason,显示口令状态,为其设置口令
# useradd jason
# passwd -S jason
jason LK 2020-03-13 0 99999 7 -1 (Password locked.)
# passwd jason
Changing password for user jason.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
//2.用户jason要更改自己的口令
#su- jason //切换到jason 用户
$ passwd
Changing password for user jason.
Changing password for jason.
(current) UNIX password:
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
$exit //返回root的Shell
logout
#
//3.超级用户可以使用如下命令进行用户口令管理
# passwd -S jason //显示口令状态
jason PS 2020-03-13 0 99999 7 -1 (Password set, SHA512 crypt.)
# passwd -l jason //锁定用户jason
Locking password for user jason.
passwd: Success
# passwd -S jason //显示口令状态
jason LK 2020-03 -13 0 99999 7 -1 (Password locked.)
# passwd -u jason //解除对用户jason的锁定
Unlocking password for user jason.
passwd: Success.
# passwd -S jason //显示口令状态:
jason PS 2020-03 -13 0 99999 7-1 (Password set, SHA512 crypt)
# passwd -d jason //清空jason的口令
Removing password for user jason.
passwd: Success
# passwd -S jason //显示口令状态:
jason NP 2020-03-13 0 99999 7 -1 (Empty password.)
# passwd jason //重新设置用户jason的口令
Changing password for user jason.
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
# passwd -S jason //显示口令状态
jason PS 2020-03-13 0 99999 7 -1 (Password set, SHA512 crypt)
#
2)chage命令
硬件计算能力如今已经非常强大,这大大地缩短了利用自动运行的程序来猜测口令的时间。口令时效是系统管理员用来防止机构内不良口令的一种技术。防止口令被攻击的方法就是经常改变口令。为安全起见,要求用户定期改变用户口令是明智之举。
口令时效意味着过了一段预先设定的时间后,用户会被提示创建一个新口令。它所根据的理论是,如果用户被强制定期改变口令,某个口令的破译对入侵者来说就只有有限的利用机会。这种用来强制用户在一段时间之后更改口令的机制称为口令时效。
在Linux系统上,修改口令时效分为:
Ø 对于未来要创建的所有用户的口令时效需修改/etc/login.defs文件的相关参数。
Ø 对已存在的用户修改口令时效是通过chage命令来管理。
(1)设置新添用户的口令时效
编辑/etc/login.defs,通过指定下表中描述的几个参数来设置口令实效的默认设定。
/etc/login.defs中与口令时效相关的参数 | |
参 数 | 说 明 |
PASS_MAX_DAYS | 设定在多少天后要求用户修改口令。默认口令时效的天数为99999,即关闭了口令时效。明智的设定一般是60天(2个月)强制更改一次口令 |
PASS_MIN_DAYS | 设定在本次口令修改后,至少要经过多少天后才允许更改口令 |
PASS_WARN_AGE | 设定在口令失效前多少天开始通知用户更改口令(一般在用户刚刚登录系统时就会收到警告通知) |
(2)设置已存在用户的口令时效
chage命令的格式是:
chage [<选项>] <用户登录名>
下表中列出了chage命令的选项说明。
chage命令的选项说明 | |
选项 | 描 述 |
-m days | 指定用户必须改变口令所间隔的最少天数。如果值为0,口令就不会过期(PASS_MIN_DAYS) |
-M days | 指定口令有效的最多天数。当该选项指定的天数加上-d选项指定的天数小于当前的日期时,用户在使用该账号前就必须改变口令(PASS_MAX_DAYS) |
-d days | 指定自从1970年1月1日起,口令被改变的天数 |
-I days | 指定口令过期后,账号被锁前不活跃的天数。如果值为0,账号在口令过期后就不会被锁 |
-E date | 指定账号被锁的日期,日期格式为YYYY-MM-DD。若不用日期,也可以使用自1970年1月I日后约过的天数 |
-W days | 指定口令过期前要警告用户的天数(PASS_WARN_AGE) |
-l | 列出指定用户当前的口令时效信息,以确定账号何时过期 |
下面给出几个使用chage命令的例子。
操作步骤3.3 使用chage命令的例子
//1.使用户下次登录之后修改口令
# chage d 0 jason
//2.用户jason两天内不能更改口令,并且口令最长的存活期为30天
//并在口令过期前5天通知jason
# chage -m2 -M 30 _W 5 jason
//3.查看用户jason当前的口令时效信息
# chage -l jason
Last password change : password must be changed
Password expires : password must be changed
Password inactive : password must be changed
Account expires : never
Minimum number of days between password change : 2
Maximum number of days between password change : 30
Number of days of warning before password expires : 5
注意:
1.也可以使用chage <用户名>进入交互模式修改用户的口令时效。
2.使用chage命令实质上是修改影子口令文件/etc/shadow中的与口令时效相关的字段值。
3. chage命令仅适用于本地系统账户,对LDAP账户和数据库账户不起作用。
制订一项策略,定义多长时间后一个口令必须进行更改,然后强制执行该策略,是非常不错的一个做法。在解雇了某个雇员后,口令时效策略会保证该雇员不可能在被解雇3个月后发现他的口令依然可用。即使系统管理员忘了删除该雇员的账号,该账号也会因口令时效策略而被自动锁定。当然,这一点并不能成为不及时删除该雇员账号的理由,但是这个策略的确提供了一层额外的安全防护,尤其是在过去常常忽视及时清理账号的情况下。