Linux 用户管理:修改用户密码 0 个改进

本节讨论本地用户密码。您将学习到使用不同方法设置改变用户密码。

第一个学习使用 passwd 命令方法。

第二个学习使用 openssl passwd 命令方法。


使用 passwd 命令

passwd

一个用户可使用 passwd 命令重设其密码。旧的用户密码需要输入,新设置密码需输入两遍。

语法:

passwd  

Linux User Password1

见如上截图,shell 警告用户新设置密码过于简单。最后,在两到三次的尝试后,系统提示密码修改失败,密码并未被修改。必须再次使用命令修改密码。

然而,这个规则并不用在超级用户(根用户),在超级用户(根用户)不会提示要求输入旧密码,根用户可以直接修改其它用户的登录密码。

语法:

passwd <userName>  

举例:

$ sudo passwd jtp  

Linux User Password2

见如上截图,用户 jtp 的密码被根用户修改,无任何警告信息。


影子文件(Shadow File)

影子文件是保存加密的用户密码的文件,即 /etc/shadow 文件。这个文件是只读文件,只能被超级用户读取。

语法:

/etc/shadow  

Linux User Password3

参见如上截图, /etc/shadow 文件包含以冒号(:)分隔的9列信息。

从左至右,这9列信息包含 用户名,加密密码串,最后修改密码日期,密码必须进行修改剩余天数,密码过期天数,密码过期前提示天数,密码过期后到禁止用户的天数,账户已被禁止天数,最后列没有指定含义。


密码加密

密码以加密的形式存储。加密由系统内置加密功能函数完成。最简单的创建用户及其密码的方法是使用 useradd -m 命令创建用户,紧接着使用 passwd 命令设置新创建用户的登录密码。

语法:

useradd -m <userName>  

举例:

$ sudo useradd -m akki  

语法:

passwd <userName>  

举例:

$ sudo passwd akki  

Linux User Password4

见如上截图,名为 akki 的用户被创建且成功设置其登录密码。


使用 openssl passwd 命令

使用 openssl 加密密码

创建用户时可使用 -p 命令选项指定密码,但 -p 选项后跟随的必须不能是密码明文,而是加密过的密码字符串。

可以使用 openssl passwd 命令创建密码的密文。

openssl passwd 命令的哈希算法,对同一字符串(密码明文)生成不同的密文字符串。为了固定密文,可使用命令选项 -salt

Linux User Password5

-salt 后跟2个字符,且这2个字符会放在密文的开头(输入长了也仅2个字符起作用),见如下演示:

Linux User Password6

参考如上截图,生成的密文以指定的 32 开头。

使用 openssl command 在创建用户的同时设置其密码,使用如下语法(利用 shell 命令展开 功能)。

语法:

useradd -m -p $(openssl paeewd hunter2) <userName>  

举例:

$ sudo useradd -m -p $(openssl paeewd hunter2) aaa  

Linux User Password7

见如上截图,用户 'aaa' 被创建,且密码被设置。可在命令历史中看到密码。(这里用户的登录密码是 hunter2)。


/etc/login.defs 文件

/etc/login.defs 文件中包含对新建用户密码相关的默认设置,包括诸如 密码生命期,密码长度要求等方面的设置。

语法:

grep PASS /etc/login.defs  

Linux User Password8


chage 命令

chage 命令可被用户用来获得用户密码的相关信息。'-l' 命令选项用于列出相关信息。

语法:

chage -l <userName>  

举例:

$ sudo chage -l abc  

Linux User Password9


使密码无效

保存在 /etc/shadow 文件中的密码密文开始处无感叹号(!),若密码密文开始处有感叹号代表密码不可用。

这个特性可使用户密码无效,换句话说,这个处理实际是 锁定,禁止挂起 用户账号的含义。既可以使用字处理软件如 vi 直接编辑 ‘/etc/shadow’ 文件,或通过 usermod 命令达到此目的。

下面,我们使用 usermod 命令使用户 akki 的密码无效。

语法:

usermod -L <userName>  

举例:

$ sudo usermod -L akki  

Linux User Password10

见如上截图,首先显示 '/etc/shadow' 文件中 akki 用户的密码密文,然后使用命令 usermod -L akki 使 akki 的密码失效。现在, akki 无法登录。

Linux User Password11

见如上截图,可看到用户 akki 保存密码哈希密文串前被置了个感叹号(i),它意味着用户密码被置无效。

这里请注意,超级用户(根用户)可打开 akki 账户,因为它不需要 akki 的用户密码。如果 akki 账户被设为无密码登录,那么 akki 账户本身也可登录。

可以使用 'usermod -U' 命令解锁账户。

语法:

usermod -U <userName>  

举例:

$ sudi usermod -U akki  

Linux User Password12

见如上截图, akki 用户密码密文前没有了感叹号(!), akki 用户现在解锁了。

本文为 Wiki 文章,邀您参与纠错、纰漏和优化
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!