红联Linux门户
Linux帮助

Linux 帐户管理

发布时间:2006-10-02 19:46:18来源:红联作者:厉烨
  介绍 /etc/passwd

  在这一章,我们来看一看 Linux 帐户管理机制。我将以介绍 /etc/passwd 文件开始,该文件定义了 Linux 系统上存在的所有用户。您可以通过输入“less /etc/passwd”来查看您自己的 /etc/passwd 文件。

  /etc/passwd 中的每一行定义一个用户帐户。这里有一个来自于我的 /etc/passwd 文件的示例行:

[code]drobbins:x:1000:1000:Daniel Robbins:/home/drobbins:/bin/bash[/code]

  您可以看到,这一行中有相当多的信息。实际上,每个 /etc/passwd 行由多个字段组成,每个字段用 : 隔开。

  第一个字段定义了用户名(drobbins),第二个字段包含一个 x。在旧式的 Linux 系统上,该字段将包含一个用来认证的加密密码,但是事实上现在所有的 Linux 系统将这个密码信息存储在另一个文件中。

  第三个字段(1000)定义了与该特殊用户相关联的数字用户标识,第四个字段(1000)将用户与一个特殊组关联起来;在下面几屏中,我们将看到定义组 1000 的地方。

  第五个字段包含该帐户的文本描述 -- 在本例中,是用户的名称。第六个字段定义该用户的主目录,第七个字段指定用户缺省的 shell -- 当用户登录时,将自动启动的 shell。
文章评论

共有 13 条评论

  1. zju136 于 2006-10-03 21:05:25发表:

    绝对的好文,一步一个脚印地学习

  2. 厉烨 于 2006-10-02 19:54:12发表:

      更多的命令

    [code]useradd/userdel/usermod[/code]

      用来在 /etc/passwd 中添加/删除/修改用户。这些命令还完成其它各种便利功能。要获取更多的信息,请参阅手册页。

    [code]pwconv/grpconv[/code]

      用来将 passwd 和 group 文件转换为“新式”的 shadow 密码。事实上,所有 Linux 系统已经使用 shadow 密码,因此您应该不会需要使用这些命令。

    [code]pwunconv/grpunconv[/code]

      用来将 passwd、shadow 和 group 文件转换成“旧式”的非 shadow 密码。您应该不会需要使用这些命令。

  3. 厉烨 于 2006-10-02 19:53:35发表:

      帐户管理实用程序

      既然您知道怎样手工添加新帐户和组,我将要评论一下 Linux 下可用的各种省时的帐户管理实用程序。由于版面的限制,我将不深究描述这些命令的众多细节。请记住,通过查看命令的手册页,您总能够获得关于命令的更多信息。如果您计划参加 LPIC 101 考试,我建议您花些时间来让您自己熟悉一下下面每一条命令。

    [code]newgrp[/code]

      缺省情况下,用户创建的任何文件都被分配到 /etc/passwd 中所指定的用户的组。如果用户属于其他组,他或她可以输入 newgrp thisgroup 来将当前缺省组的成员资格设置为组 thisgroup。然后,所创建的任何新文件将继承该组的成员资格。

    [code]chage[/code]

      chage 命令用来查看和改变存储在 /etc/shadow 中的密码期限设置。

    [code]gpasswd[/code]

      一个一般目的的组管理工具

    [code]groupadd/groupdel/groupmod[/code]

      用来在 /etc/group 中添加/删除/修改组

  4. 厉烨 于 2006-10-02 19:52:51发表:

      创建主目录

      我们基本上已经完工。输入下面的命令来创建 testuser 的主目录。

    [code]# cd /home
    # mkdir testuser
    # chown testuser.testuser testuser
    # chmod o-rwx testuser[/code]

      我们用户的主目录现在已经到位,并且帐户已准备好可用。好的,基本就绪。如果您想使用该帐户,您将需要使用 vipw 来将 testuser 的缺省 shell 改为 /bin/bash,使用户可以登录。

  5. 厉烨 于 2006-10-02 19:52:13发表:

      编辑 /etc/group

      既然 /etc/passwd 和 /etc/shadow 设置好了,现在该恰当配置 /etc/group 了。要这么做,输入:

    [code]# vigr[/code]

      您的 /etc/group 文件将出现在您面前,准备好进行编辑。现在,如果您选择给您的特殊的测试用户分配 users 缺省组,那么您不需要将任何组添加到 /etc/groups 中。但是,如果您选择给该用户创建新的组,接着添加下面的行:

    [code]testuser:x:3000:[/code]

      保存,然后退出。

  6. 厉烨 于 2006-10-02 19:51:32发表:

      设置密码

      您将回到提示符。现在,是给您的新用户设置密码的时候了:

    [code]# passwd testuser
    Enter new UNIX password: (enter a password for testuser)
    Retype new UNIX password: (enter testuser's new password again)[/code]

  7. 厉烨 于 2006-10-02 19:50:59发表:

      编辑 /etc/shadow

      现在,我们需要在 /etc/shadow 中给这个特殊用户添加一个条目。要这样做,输入 vipw -s。您将会看到您喜欢的编辑器,它现在包含 /etc/shadow 文件。现在,接着复制一个现有用户帐户行(也就是有一个密码,并且长于标准系统帐户条目):

    [code]drobbins:$1$1234567890123456789012345678901:11664:0:-1:-1:-1:-1:0[/code]

      现在,将所复制的代码行中的用户名改为您的新用户的名称,确保所有的字段(特别是密码的期限设置)设置为您喜欢的模式:

    [code]testuser:$1$1234567890123456789012345678901:11664:0:-1:-1:-1:-1:0[/code]

      保存,然后退出。

  8. 厉烨 于 2006-10-02 19:50:15发表:

      编辑 /etc/passwd

      既然您已经打开了 /etc/passwd 文件,则接着添加下面的代码行:

    [code]testuser:x:3000:3000:LPI tutorial test user:/home/testuser:/bin/false[/code]

      我们刚刚添加了一个 UID 为 3000 的“testuser”用户。我们将他添加到 GID 为 3000 的组中,该组还未创建。另一种做法是,如果愿意,我们还可以给这个用户分配 users 组的 GID。这个新用户有一条注释为:LPI tutorial test user;该用户的主目录设置为 /home/testuser,出于安全的目的,该用户的 shell 设置为 /bin/false。如果我们正创建一个非测试帐户,那么我们可以将 shell 设置为 /bin/bash。OK,接着保存您所做的更改,然后退出。

  9. 厉烨 于 2006-10-02 19:49:42发表:

      手工地添加用户和组

      现在,我将为您展示怎样创建您自己的用户和组帐户。学习怎样完成这些工作的最好方法是,手工地将用户新添加到系统中。为了开始学习,首先确保您的 EDITOR 环境变量设置为您喜欢的文本编辑器:

    [code]# echo $EDITOR
    vim[/code]

      如果不是,您可以通过输入这样的命令来设置 EDITOR:

    [code]# export EDITOR=/usr/bin/emacs[/code]

      现在,输入:

    [code]# vipw[/code]

      现在您应该发现自己在所喜欢的文本编辑器中,编辑器内 /etc/passwd 文件被装入,显示在屏幕上。当修改系统 passwd 和 group 文件时,使用 vipw 和 vigr 命令非常重要。它们采用了额外的预防措施来确保您关键的 passwd 和 group 文件被恰当地锁定,使它们不会破坏。

  10. 厉烨 于 2006-10-02 19:48:50发表:

      组提示

      关于用户和组相关联的一点提示 -- 在一些系统上,您将发现每个新的登录帐户与同名组(通常是标识号一样)相关联。在其它系统上,所有登录帐户将属于单个用户组。在您管理的系统上,您使用的方法取决于您自己。为每个用户创建匹配组的好处是,通过将可信的朋友放在自己的个人组中,使用户能够更容易地控制对自己文件的访问权。

  11. 厉烨 于 2006-10-02 19:48:20发表:

      /etc/group

      接下来,我们来看一看 /etc/group 文件,它定义了 Linux 系统上所有的组。这里有一个样本行:

    [code]drobbins:x:1000:[/code]

      /etc/group 字段格式如下。第一个字段定义组名称,第二个字段是不再使用的密码字段(现在只是保留为 x),第三个字段定义了这个特殊组的数字组标识,第四个字段(上面的示例为空)定义是该组成员的所有用户。

      您将回想起样本 /etc/passwd 行引用的组标识为 1000。即使 /etc/group 的第四个字段没有列出 drobbins 用户名,这将起到把 drobbins 用户放到 drobbins 组中的作用。

  12. 厉烨 于 2006-10-02 19:47:45发表:

      /etc/shadow

      这样,用户帐户本身在 /etc/passwd 中定义。Linux 系统包含一个 /etc/passwd 的同伴文件,叫做 /etc/shadow。该文件不像 /etc/passwd,只有对于 root 用户来说是可读的,并且包含加密的密码信息。我们来看看 /etc/shadow 的一个样本行:

    [code]drobbins:$1$1234567890123456789012345678901:11664:0:-1:-1:-1:-1:0[/code]

      每一行给一个特殊帐户定义密码信息,同样的,每个字段用 : 隔开。第一个字段定义与这个 shadow 条目相关联的特殊用户帐户。第二个字段包含一个加密的密码。其余的字段在下表中描述:

      字段 3 自 1/1/1970 起,密码被修改的天数
      字段 4 密码将被允许修改之前的天数(0 表示“可在任何时间修改”)
      字段 5 系统将强制用户修改为新密码之前的天数(1 表示“永远都不能修改”)
      字段 6 密码过期之前,用户将被警告过期的天数(-1 表示“没有警告”)
      字段 7 密码过期之后,系统自动禁用帐户的天数(-1 表示“永远不会禁用”)
      字段 8 该帐户被禁用的天数(-1 表示“该帐户被启用”)
      字段 9 保留供将来使用

  13. 厉烨 于 2006-10-02 19:46:58发表:

      /etc/passwd 技巧和窍门

      您可能已经注意到,/etc/passwd 中定义的用户帐户比实际登录您系统的用户帐户多得多。这是因为不同的 Linux 组件使用用户帐户来加强安全性。通常,这些系统帐户有一个小于 100 的用户标识(“uid”),这其中的很多系统帐户将像 /bin/false 这样的程序列为缺省的 shell。因为 /bin/false 程序什么也不做,而是返回一个错误码退出,这有效地阻止这些帐户被用作登录帐户 -- 他们只供内部使用。