介绍
密码和身份验证是每个用户在 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” 文件中,每一行都有七个字段:
- 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”文件中定义的字段:
- 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:::
结论
使用这些简单的工具,您可以更改系统上的登录信息。
在进行任何更改后测试您的登录能力非常重要。 保持对身份验证文件的权限相同以保持功能和安全性也很重要。