如何在Linux中更改密码(passwd命令)

时间:2020-03-05 15:28:27  来源:igfitidea点击:

在本教程中,我将解释用户或者超级用户(root)如何在Linux中更改密码。
passwd是Linux(RedHat,CentOS,Ubuntu,Debian,Fedora)和Unix的操作系统中使用的命令来更改密码。

当我们运行passwd命令时,用户的加密密码存储在/etc/shadow文件中。

将仅允许普通用户(非root)用户来更改其密码。
虽然root或者sudo用户可以更改任何帐户的密码。

出于安全原因,它始终建议使用强密码并定期更改。

更改密码

如果"passwd"命令由非root用户执行,则它将询问当前密码,然后设置该用户的新密码。
超级用户或者root可以在不知道当前密码的情况下重置包括root的任何用户的密码。

如果使用非root用户调用命令passwd,则必须先在更改密码之前提供现有密码。
密码必须键入两次,并且在键入它时不会在屏幕上回声。

$passwd 
Changing password for vagrant.
(current) UNIX password: 
Enter new UNIX password: 
Retype new UNIX password: 
passwd: password updated successfully

我们也无法提供简单的单词作为密码。
passwd命令将检查密码的长度和复杂程度。
在以下输出中,尝试了简单的,字典的密码。

$passwd 
Changing password for vagrant.
(current) UNIX password: 
Enter new UNIX password: 
Retype new UNIX password: 
You must choose a longer password
Enter new UNIX password: 
Retype new UNIX password: 
Bad: new password is too simple
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully

将密码更改为超级用户(root)

任何系统用户都可以更改他/她的密码。
当它作为普通用户运行时,passwd命令不会采用任何参数。

但作为根源,我们可以在系统中更改和重置任何用户的密码。

用法如下:

# passwd [options] [user_name]

可以使用的不同选项是:

Options:
  -a, --all                     report password status on all accounts
  -d, --delete                  delete the password for the named account
  -e, --expire                  force expire the password for the named account
  -h, --help                    display this help message and exit
  -k, --keep-tokens             change password only if expired
  -i, --inactive INACTIVE       set password inactive after expiration
                                to INACTIVE
  -l, --lock                    lock the password of the named account
  -n, --mindays MIN_DAYS        set minimum number of days before password
                                change to MIN_DAYS
  -q, --quiet                   quiet mode
  -r, --repository REPOSITORY   change password in REPOSITORY repository
  -R, --root CHROOT_DIR         directory to chroot into
  -S, --status                  report password status on the named account
  -u, --unlock                  unlock the password of the named account
  -w, --warndays WARN_DAYS      set expiration warning days to WARN_DAYS
  -x, --maxdays MAX_DAYS        set maximum number of days before password
                                change to MAX_DAYS

当root运行passwd命令时,它将默认重置root密码,如果我们在passwd命令后指定用户名,那么它将更改该用户的密码。

# passwd vagrant
Enter new UNIX password: 
Retype new UNIX password: 
passwd: password updated successfully
#

root用户甚至可以提供简单的密码。
虽然显示了警告,但密码仍然成功更改。
系统用户的密码以加密形式存储/etc/shadow文件。

显示密码状态信息

要显示所需用户的密码状态信息,请使用passwd命令中的-s选项。

# passwd -S vagrant
vagrant P 07/02/2019 0 99999 7 -1
#

第一个字段显示用户名,第二个字段显示密码状态(ps = password set,lk = password锁定,np = no password),第三个字段显示密码最后更改,最后和第四个字段显示最小年龄,最大年龄,警告密码的时期和不活动时间。

要列出系统中所有用户密码的状态,我们将使用"-SA"参数:

# passwd -Sa
root P 05/14/2019 0 99999 7 -1
daemon L 05/14/2019 0 99999 7 -1
bin L 05/14/2019 0 99999 7 -1
sys L 05/14/2019 0 99999 7 -1
sync L 05/14/2019 0 99999 7 -1
games L 05/14/2019 0 99999 7 -1
man L 05/14/2019 0 99999 7 -1
lp L 05/14/2019 0 99999 7 -1
mail L 05/14/2019 0 99999 7 -1
news L 05/14/2019 0 99999 7 -1
uucp L 05/14/2019 0 99999 7 -1
proxy L 05/14/2019 0 99999 7 -1
www-data L 05/14/2019 0 99999 7 -1
backup L 05/14/2019 0 99999 7 -1

删除用户的密码

要删除所需用户的密码,我们将使用"-d"命令"选项:

# passwd -d test
passwd: password expiry information changed.
# passwd -S test
test NP 07/02/2019 0 99999 7 -1

注意:选项-d将使用户的密码为空,并将禁用用户的帐户。

设置密码到期

使用户的密码过期并强制该用户在下次登录时更改密码,请使用"passwd"命令"中的"-e""选项。

# passwd -e test
passwd: password expiry information changed.
# passwd -S test
test NP 01/01/1970 0 99999 7 -1

锁定并解锁系统用户的密码

锁定用户的密码在passwd命令中使用-l选项。
它将在用户的密码开始时添加当他/她的密码被锁定时,用户无法更改它的密码。

# passwd -l test
passwd: password expiry information changed.
# passwd -S test
test L 07/03/2019 0 99999 7 -1

解锁用户的密码使用u选项:

# passwd -u test
passwd: password expiry information changed.
# passwd -S test
test P 07/03/2019 0 99999 7 -1

使用-i选项设置非活动天天

当所选用户的密码已过期和用户未在"N"天数(即10天)中没有将其更改为密码时,将激活。
在该用户无法登录之后。

# passwd -i 10 test
passwd: password expiry information changed.
# passwd -S test
test P 07/03/2019 0 99999 7 10

在密码过期之前设置警告日

选项-w在提醒用户以更改密码之前使用设置警告日。
它意味着用户将在他/她的密码到期前的n天时。

# passwd -w 5 test
passwd: password expiry information changed.
# passwd -S test
test P 07/03/2019 0 99999 5 10

设置最短的天数要更改密码

在下文中,示例测试用户必须在30天内更改密码。
值为零,显示用户可以随时更改它的密码。

# passwd -n 30 test
passwd: password expiry information changed.
# passwd -S test
test P 07/03/2019 30 99999 5 10