Linux 账户管理

Posted on timeMay 23rd, 2008 by userKeith


  来源:不详

  我将以介绍 /etc/passwd 文件开始,该文件定义了 Linux 系统上存在的所有用户。您可以通过输入“less /etc/passwd”来查看您自己的 /etc/passwd 文件。/etc/passwd 中的每一行定义一个用户帐户。这里有一个来自于我的 /etc/passwd 文件的示例行:

drobbins:x:1000:1000:Daniel Robbins:/home/drobbins:/bin/bash

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

  第一个字段:定义了用户名(drobbins)。
  第二个字段:包含一个 x。在旧式的 Linux 系统上,该字段将包含一个用来认证的加密密码,但是事实上现在所有的 Linux 系统将这个密码信息存储在另一个文件中。
  第三个字段:(1000)定义了与该特殊用户相关联的数字用户标识。
  第四个字段:(1000)将用户与一个特殊组关联起来;在下面几屏中,我们将看到定义组 1000 的地方。
  第五个字段:包含该帐户的文本描述 ― 在本例中,是用户的名称。
  第六个字段:定义该用户的主目录。
  第七个字段:指定用户缺省的 shell ― 当用户登录时,将自动启动的 shell。

/etc/passwd 技巧和窍门

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

/etc/shadow

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

drobbins:34567890123456789012345678901:11664:0:-1:-1:-1:-1:0

每一行给一个特殊帐户定义密码信息,同样的,每个字段用 : 隔开

  第一个字段:定义与这个 shadow 条目相关联的特殊用户帐户。
  第二个字段:包含一个加密的密码。
  第三个字段:自 1/1/1970 起,密码被修改的天数。
  第四个字段:密码将被允许修改之前的天数(0 表示“可在任何时间修改”)。
  第五个字段:系统将强制用户修改为新密码之前的天数(1 表示“永远都不能修改”)。
  第六个字段:密码过期之前,用户将被警告过期的天数(-1 表示“没有警告”)。
  第七个字段:密码过期之后,系统自动禁用帐户的天数(-1 表示“永远不会禁用”)。
  第八个字段:该帐户被禁用的天数(-1 表示“该帐户被启用”)。
  第九个字段:保留供将来使用 。

/etc/group

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

drobbins:x:1000:

  /etc/group 字段格式如下:

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

  您将回想起样本 /etc/passwd 行引用的组标识为 1000。即使 /etc/group

组提示

  关于用户和组相关联的一点提示:
  
  在一些系统上,您将发现每个新的登录帐户与同名组(通常是标识号一样)相关联。

  在其它系统上,所有登录帐户将属于单个用户组。在您管理的系统上,您使用的方法取决于您自己。为每个用户创建匹配组的好处是,通过将可信的朋友放在自己的个人组中,使用户能够更容易地控制对自己文件的访问权。

手工地添加用户和组

  现在,我将为您展示怎样创建您自己的用户和组帐户。学习怎样完成这些工作的最好方法是,手工地将用户新添加到系统中。

  为了开始学习,首先确保您的 EDITOR 环境变量设置为您喜欢的文本编辑器:

# echo $EDITOR
vim

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

# export EDITOR=/usr/bin/emacs

  现在,输入:

# vipw

  现在您应该发现自己在所喜欢的文本编辑器中,编辑器内 /etc/passwd 文件被装入,显示在屏幕上。

  当修改系统 passwd 和 group 文件时,使用 vipw 和 vigr 
命令非常重要。它们采用了额外的预防措施来确保您关键的 passwd 和 group 文件被恰当地锁定,使它们不会破坏。

编辑 /etc/passwd

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

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

  我们刚刚添加了一个 UID 为 3000 的“testuser”用户。我们将他添加到 GID 为 3000 的组中,该组还未创建。

  另一种做法是,如果愿意,我们还可以给这个用户分配 users 组的 GID。

  这个新用户有一条注释为:LPI tutorial test user;该用户的主目录设置为 /home/testuser,出于安全的目的,该用户的 shell 设置为 /bin/false。如果我们正创建一个非测试帐户,那么我们可以将 shell 设置为 /bin/bash。OK,接着保存您所做的更改,然后退出。

编辑 /etc/shadow

  现在,我们需要在 /etc/shadow 中给这个特殊用户添加一个条目。要这样做,输入:

vipw -s

  您将会看到您喜欢的编辑器,它现在包含 /etc/shadow 文件。现在,接着复制一个现有用户帐户行(也就是有一个密码,并且长于标准系统帐户条目):

drobbins:34567890123456789012345678901:11664:0:-1:-1:-1:-1:0

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

testuser:34567890123456789012345678901:11664:0:-1:-1:-1:-1:0

  保存,然后退出。

设置密码

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

# passwd testuser
Enter new UNIX password: (enter a password for testuser)
Retype new UNIX password: (enter testuser’s new password again)

编辑/etc/group

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

# vigr

  您的 /etc/group 文件将出现在您面前,准备好进行编辑。

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

testuser:x:3000:

  保存,然后退出。

创建主目录

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

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

  我们用户的主目录现在已经到位,并且帐户已准备好可用。好的,基本就绪。

  如果您想使用该帐户,您将需要使用 vipw 来将 testuser 的缺省 shell 改为 /bin/bash,使用户可以登录。

帐户管理实用程序

  既然您知道怎样手工添加新帐户和组,我将要评论一下 Linux 下可用的各种省时的帐户管理实用程序。由于版面的限制,我将不深究描述这些命令的众多细节。请记住,通过查看命令的手册页,您总能够获得关于命令的更多信息。

  我建议您花些时间来让您自己熟悉一下下面每一条命令。

  newgrp

  缺省情况下,用户创建的任何文件都被分配到 /etc/passwd 中所指定的用户的组。

  如果用户属于其他组,他或她可以输入 newgrp thisgroup 来将当前缺省组的成员资格设置为组 thisgroup。然后,所创建的任何新文件将继承该组的成员资格。

  chage

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

  gpasswd

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

  groupadd/groupdel/groupmod

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

更多的命令

  useradd/userdel/usermod

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

  pwconv/grpconv

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

  pwunconv/grpunconv

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

tag



Trackback URI | Comments RSS

Leave a Reply


RSS feeds:

Search: