如何在LinuxVPS上使用passwd和adduser管理密码

来自菜鸟教程
跳转至:导航、​搜索

介绍

密码和身份验证是每个用户在 Linux 环境中工作时必须处理的概念。 这些主题涵盖了许多不同的配置文件和工具。

在本指南中,我们将探讨一些基本文件,如“/etc/passwd”和“/etc/shadow”,以及配置身份验证的工具,如恰当命名的“passwd”命令和“adduser”。

我们将使用 Ubuntu 12.04 VPS 来讨论这些主题,但任何现代 Linux 发行版都应该以类似的方式运行。

什么是“/etc/passwd”文件?

我们将查看的第一个文件,称为“/etc/passwd”文件,实际上并不存储密码。

有一次,该文件存储了系统上每个用户的散列密码。 但是,出于安全原因,此责任已移至单独的文件中。

让'看看“/etc/passwd”文件中的是什么

less /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh
man:x:6:12:man:/var/cache/man:/bin/sh
. . .

首先要注意的是,非特权用户可以访问此文件。

系统上的每个人都对该文件具有读取权限。 这就是为什么将密码信息移出该文件的原因。

让我们看看文件的格式。

如何阅读“/etc/passwd”文件

文件中的每一行都包含系统上单个用户的登录信息。 其中一些用户可能是为守护进程和后台服务使用而创建的。

看一行,看看它包含什么信息:

root:x:0:0:root:/root:/bin/bash

信息字段由冒号 (:) 字符分隔。 在典型的 Linux “/etc/passwd” 文件中,每一行都有七个字段:

  1. root:账号用户名。

当您使用诸如“adduser”和“useradd”之类的命令添加用户帐户时,或者当您安装更多服务时,此文件将会增长。 新的用户名信息将添加到该文件的底部。

在大多数情况下,您不必手动编辑此文件。 有一些工具可以操作此文件并确保维护正确的语法。

什么是“/etc/shadow”文件?

实际的密码数据存储在一个名为“/etc/shadow”的文件中。

这实际上不包含纯文本密码。 相反,它使用密钥派生函数来创建散列。 这是它存储在文件中的内容。

密钥派生函数基本上是一种算法,当给定相同的输入时,它总是会创建某个哈希值。 对身份验证期间给出的密码运行相同的算法,并将此值与此文件中的值进行比较。

请注意,此文件与“/etc/passwd”文件不同,非特权用户无法读取。

root 用户具有读写权限,而包含身份验证所需用户的“shadow”组具有读取权限。

如何阅读“/etc/shadow”文件

通过键入以下命令打开“/etc/shadow”文件:

sudo less /etc/shadow
root:$6$mJD3Rsj4$xUa7jru6EEGTXnhwTfTT26/j8M5XiQvUl6UH32cfAWT/6W9iSI5IuIw5OOw4khwrsOHPyMwfCLyayfYiVdhAq0:15952:0:99999:7:::
daemon:*:15455:0:99999:7:::
bin:*:15455:0:99999:7:::
sys:*:15455:0:99999:7:::
sync:*:15455:0:99999:7:::
games:*:15455:0:99999:7:::
man:*:15455:0:99999:7:::
. . .

与“/etc/passwd”文件一样,每一行定义一个用户的信息,每个字段由冒号 (:) 字符分隔。

注意: 上述部分行第二个字段中的星号(*)值表示该帐户无法登录。 这主要用于服务并且是预期的行为。

让我们再看一行:

daemon:*:15455:0:99999:7:::

这些是在“/etc/shadow”文件中定义的字段:

  1. daemon:账户用户名。

您如何更改密码?

用户的密码可以通过发出“passwd”命令来修改。

默认情况下,该命令更改当前用户的密码,不需要特殊权限。

passwd

如果您想更改其他用户的密码,您将需要管理权限。 可以使用以下语法:

sudo passwd username

系统将提示您输入“sudo”命令的密码,然后您将被告知输入并确认您要使用的新密码。

如果您比较“/etc/shadow”文件中的散列值,您将看到在您发出 passwd 命令后它发生了变化。

您如何创建新用户?

可以使用几个不同的命令创建用户。

最简单的方法可能是使用“adduser”命令,我们将在这里介绍。 在 Ubuntu 系统上,这与处理适当用户创建的 perl 脚本相关联。

你可以这样称呼它:

adduser demo
Adding user `demo' ...
Adding new group `demo' (1000) ...
Adding new user `demo' (1000) with group `demo' ...
Creating home directory `/home/demo' ...
Copying files from `/etc/skel' ...
Enter new UNIX password: 
Retype new UNIX password: 
passwd: password updated successfully
Changing the user information for demo
Enter the new value, or press ENTER for the default
    Full Name []: test
    Room Number []: room
    Work Phone []: work phone
    Home Phone []: home phone
    Other []: other
Is the information correct? [Y/n]

您将被问到一系列有助于填写“/etc/passwd”文件和“/etc/shadow”文件中的信息的问题。

我们可以通过输入以下命令查看它添加到“/etc/passwd”文件中的条目:

tail -1 /etc/passwd
demo:x:1000:1000:test,room,work phoneme phone,other:/home/demo:/bin/bash

您可以看到这充分利用了评论字段。 其他字段按预期填写。

我们可以运行类似的命令来查看对“/etc/shadow”文件所做的修改:

sudo tail -1 /etc/shadow
demo:$6$XvPCmWr4$HXWmaGSeU5SrKwK2ouAjc68SxbJgUQkQ.Fco9eTOex8232S7weBfr/CMHQkullQRLyJtCAD6rw5TVOXk39NAo/:15952:0:99999:7:::

结论

使用这些简单的工具,您可以更改系统上的登录信息。

在进行任何更改后测试您的登录能力非常重要。 保持对身份验证文件的权限相同以保持功能和安全性也很重要。

贾斯汀·艾林伍德