16_Linux基础知识及命令———— 为用户、组设定密码

一、设定密码


管理员在创建新用户时可以不为用户指定密码,新用户可以使用 passwd 命令来自行修改密码;而root 用户则可以使用以下命令来修改指定用户的密码:


# passwd USERNAME


密码的设定应该遵循密码安全策略,密码的安全策略包括以下内容:


1.足够复杂,不要使用生日、姓名等

2.密码的长度至少5位,越长越好,其中5为是redhat的默认策略。

3.包含大写字母、小写字母、属主和特殊字母中至少三类,建议随机生成密码。

采用这种组合方式,会增加密码破译的难度。如果采用纯数字来设定一个6位的密码,则密码的组合有 10*10*10*10*10*10种可能,对计算机而言,进行10^6运算并不复杂。如果采用大写字母、小写字母、特殊字符和数字的组合来设定6位密码,则可能的组合有将近 100^6种,对于目前计算机的运算能力而言,相对比较难以破译。

4.定期更换密码,不要重复此前使用过的密码


需要注意的是,管理员设定的密码,即使违反了安全策略,系统也不会采取任何措施;而对于普通用户,如果违反了安全策略,则密码设定会失败。

例如我们用root用户来创建一个用户tom,并且给tom设定密码123, 这里123明显违反了安全策略,虽然系统给予了警告,但是依然设定成功了。

# useradd tom

# passwd tom

# su - tom              //切换为tom用户

# passwd              

用户tom想为自己修改密码,第一次输入456, 创建失败;输入centos,创建失败;输入centOS,创建失败;输入456@centOS,创建失败,输入O*Sentc@456则能够通过安全策略,创建成功。

16_Linux基础知识及命令———— 为用户、组设定密码


通过查看/etc/shadow 文件,root用户可以知道哪些用户被锁定了。被锁定的用户名后面会有两个!!,如我们进行如下操作:

# passwd -l tom

# tail -1 /etc/shadow

# passwd -u tom

# tail -1 /etc/shadow

可以明显观察到tom用户后面!!的变化情况

16_Linux基础知识及命令———— 为用户、组设定密码


二、密码的属性含义

用户密码相关的信息存放在 /etc/shadow文件中,我们来查看一下该文件,以理解用户密码的各种属性的含义:

# cat /etc/shadow

运行该命令可以得到密码的基本信息,以冒号为分隔符,分开的小段是密码的属性:

Accout:

$n$ ABC...:

Last_Time:

Min_Period:

Max_Period:

Warning:

Inactive:

Expire_Date:

Reserve

用户的登录名

该密码选用的加密方式

加密后的密码串

最近一次修改密码的时间

密码的最短使用期限

密码的最长使用期限

密码到期警告时长

账户非活动天数

账号过期时间

预留段


对照上表,我们以用户tom为例来解释密码的属性含义:

/etc/shadow文件中,tom用户的密码信息为:

tom:$6$V4K4KTHL.............:16168:0:99999:7: : :

tom: 用户名

$6$: tom 用户的密码采用的加密方式为 6 | SHA - 512 (single glibc 2.7)

我们可以通过以下命令来查看加密方式:

# man 3 crpt

16_Linux基础知识及命令———— 为用户、组设定密码

V4K4KTHL...: tom用户的密码经过加密后得到的密码串

16168: 最近一次修改密码的时间。这是一个相对时间,为197011号到修改密码时所间隔的天数

0: 密码的最短使用期限,0表示不做限制

99999: 密码的最长使用期限

7: 密码到期前的警告时长。这里表示密码到期前7天警告。

: 非活动期限。此处缺省,表示tom用户没有账户非活动期限。实际上密码到期后用户不会立刻被锁定,缓冲期即为账户非活动期限,在此期限内,用户登陆系统后做的第一件事就是修改密码

: 账号过期的期限,此处缺省

: 预留段,此处缺省


三、密码管理


管理密码的命令主要有 passwdchageusermod


1. passwd

命令passwd除了基本的设定密码功能,还可以使用选项进行密码管理。passwd命令可以使用的基本选项如下表:


选项名

用法

-l

锁定用户

-u

为锁定用户解锁

-n

设定密码的最短使用天数

-x

设定密码的最长使用天数

-w

密码过期前的警告天数

-i

账号非活动天数

-e

让用户的密码过期


下面我们来一一解释以上选项的用法:


root用户可以在使用passwd命令时加上 -l 选项,用来锁定用户。这样用户就不能登录了。使用 -u 选项,则可以为被锁定的用户解锁。例如锁定tom用户,可以进行以下操作:

# passwd -l tom

# login

# tom

此处即使tom用户输入的密码是正确的,也无法登录。

# exit

# passwd -u tom

# login

# tom

此时tom可以正常登录了。

16_Linux基础知识及命令———— 为用户、组设定密码


使用 -n 选项可以设定密码的最短使用天数,例如我们将tom 用户的密码最短使用天数改为1天,可以使用如下命令:

# passwd -n 1 tom

# tail /etc/shadow


16_Linux基础知识及命令———— 为用户、组设定密码


使用 -x 选项可以设定密码的最长使用期限,例如我们将tom 用户的密码最长使用天数改为2天,可以使用如下命令:

# passwd -x 2 tom

# tail /etc/shadow

16_Linux基础知识及命令———— 为用户、组设定密码


使用-w选项可以设定密码过期前的警告天数,例如为tom用户设定密码过期前的警告天数为2天,若tom的密码过期时间为2天,那么当tom此时登陆,就会提示他密码将在2天后过期,而建议他修改密码:

# passwd -w 2 tom

# tail /etc/shadow

16_Linux基础知识及命令———— 为用户、组设定密码


使用 -i 选项,可以设定用户密码过期后的非活动时间。在这个时间内,用户的密码已经过期了,但还是可以登陆,登陆后第一个操作即是修改密码:

# passwd -i tom

# tail /etc/shadow

16_Linux基础知识及命令———— 为用户、组设定密码



使用 -e 选项可以使用户的密码过期,例如我们若让tom用户的密码立刻过期,可以使用如下命令:

# passwd -e tom

# tail /etc/shadow

16_Linux基础知识及命令———— 为用户、组设定密码


2.chage

使用chage命令也可以管理用户的密码,它的用法和passwd命令非常相似,其基本选项如下表:

选项名

用法

-d

修改密码的最近一次修改时间

-m

设定密码的最短使用天数

-M

设定密码的最长使用天数

-I

账号非活动天数

-W

密码过期前的警告天数

-E

设定密码的过期时间


使用-d 选项,可以修改密码最近一次被修改的时间,此命令和选项常被黑客用来掩盖攻击行踪,如修改tom用户的密码最近修改时间,可以使用:

# chage -d YYYY-MM-DD tom

16_Linux基础知识及命令———— 为用户、组设定密码


chage命令的其他选项如 -m-M-I-W的用法和 passwd基本一致,故此处不加赘述,-E选项可以为用户指定具体的过期日期,如为tom用户指定具体的过期时间,可以使用:

# chage -E YYYY-MM-DD tom

16_Linux基础知识及命令———— 为用户、组设定密码


3.usermod

此命令的主要作用并非用来管理用户的密码,但它也具备最基本的密码管理功能。它用来管理密码的基本选项有 -e -f,其中-e可以用来设定密码的过期时间。

例如设定tom的密码具体过期日期,可以用如下命令:

# usermod -e YYYY-MM-DD tom


-f 选项后面的参数为密码的非活动天数,其中 -1表示没有密码的非活动天数,密码到期就失效,例如设定tom没有密码的非活动天数,可以使用如下命令:

# usermod -f -1 tom

16_Linux基础知识及命令———— 为用户、组设定密码


四、给组设密码

除了可以为用户设定密码外,组也可以设定密码,使用的基本命令是:gpasswd。给组加密码的作用在于,当某用户临时想切换到一个本来不属于的组时,只有该组有密码,且此用户知道密码,才可以进行此项操作。若要进行此项操作,还需要引入令一个命令:newgrp,此命令的作用在于临时设定指定的组为自己的基本组。

例如root创建了组hellogrp,并为该组设定了密码,redis用户原本不属于该组 ,但想临时将hellogrp组作为自己的基本组,那么只要redis用户知道密码,就可以使用newgrp命令将自己的基本组临时切换为hellogrp,其基本操作如下:

# su - redis   // 切换为redis用户

# id        // 查看当前的用户属性,可知基本组为redis

# exit       // redis 用户退出

# groupadd hellogrp  // root用户创建hellogrp

# gpasswd hellogrp   //root用户为hellogrp组设定密码123

# su - redis        // 切换为redis用户

# newgrp hellogrp  // redis用户将自己的基本组切换为 hellogrp组,需要输入密码

# id              // redis 用户查看自己当前的属性,可以看到hellogrp变成了基本组

# exit            // redis 用户退出后即回到原来的基本组 redis

# id            

# newgrp testgrp    // redis用户原来就属于testgrp,因此不需要密码,就可以直接将基

# id              // 本组切换为testgrp

16_Linux基础知识及命令———— 为用户、组设定密码








本文出自 “重剑无锋 大巧不工” 博客,请务必保留此出处http://wuyelan.blog.51cto.com/6118147/1401084

16_Linux基础知识及命令———— 为用户、组设定密码,布布扣,bubuko.com

16_Linux基础知识及命令———— 为用户、组设定密码

上一篇:Linux 指令篇:文本统计--wc(word count)


下一篇:Linux 指令篇:文档编辑--cut