在FreeBSD中添加用户(2)

2008-02-23 08:02:59来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折


Dru Lavigne
01/10/2001


在第一部分里,我们已经考查了用adduser工具建立用户账号。在这个部分,我们将集中于建立用户账号时所修改的文件。

当超级用户建立一个用户账号时,会在口令数据库里添加对应于该用户的项目。实际上,你的FreeBSD系统需要更新四个口令数据库文件。让我们在仔细查看它们的格式之前先介绍一下这些文件。第一个文件称为/etc/passwd,它是个任何人都能读的ASCII文本文件:

file /etc/passwd
/etc/passwd: ASCII text

ls -l /etc/passwd
-rw-r--r-- 1 root wheel 1054 Dec 30 13:00 /etc/passwd
该文件的权限必须保持这种形式,否则很多FreeBSD工具就不能工作了。但是,在一个任何人都能读取的文件中保存口令会有安全风险的;为此,通常对应于口令的那一部分都用*来存储表示。

第二个文件是影子口令文件/etc/master.passwd。该文件包含用户口令的加密散列。我们会在将来的文章中详细讨论加密和散列;而现在,把散列想象为FreeBSD用于检测用户口令是否合法的值。

让我们来看一下该文件的类型及属性:

file /etc/master.passwd
/etc/master.passwd: ASCII text

ls -l /etc/master.passwd
-rw------- 1 root wheel 1226 Dec 30 13:00 /etc/master.passwd
影子口令文件仍然是ASCII明文文本,不过只有root可以读取了。

第三个和第四个口令文件是/etc/pwd.db和/etc/spwd.db。来看一下它们的文件类型:

file /etc/*pwd.db/etc/pwd.db: Berkeley DB Hash file (Version 2, Little
Endian, Bucket Size 4096, Bucket Shift 12, Directory Size 256, Segment Size 256,
Segment Shift 8, Overflow Point 3, Last Freed 2, Max Bucket 7, High Mask 0xf,
Low Mask 0x7, Fill Factor 32, Number of Keys 56)/etc/spwd.db: Berkeley DB
Hash file (Version 2, Little Endian, Bucket Size 4096, Bucket Shift 12,
Directory Size 256, Segment Size 256, Segment Shift 8, Overflow Point 3, Last
Freed 2, Max Bucket 7, High Mask 0xf, Low Mask 0x7, Fill Factor 32, Number of
Keys 56)
哦,它们干脆就不是ASCII文本文件了,所以就不要试图用cat、more或文本编辑器来打开它们了。这两个文件包含了与上面ASCII文本文件相同的信息,而用数据库的形式就提高了性能。这里的/etc/pwd.db是与/etc/passwd等价的数据库,它不包含任何散列。/etc/spwd.db的s表示shadow,所以它就是与etc/master.passwd等价的数据库,也不包含散列。

现在我们已经熟悉了这四文件的名称,来看一下它们包含的信息类型。以超级用户身份把/etc/master.passwd发送到屏幕上,结果看起来应该象这样:

su:
Password

more /etc/master.passwd

# $FreeBSD: src/etc/master.passwd,v 1.25 1999/09/13 17:09:07 peter Exp $
#
root:$1$hnH/w50a$tPdv5HZRsDP46FtsW8eXH/:0:0::0:0:Charlie &:/root:/bin/csh
toor:*:0:0::0:0:Bourne-again Superuser:/root:
daemon:*:1:1::0:0:Owner of many system processes:/root:/sbin/nologin
operator:*:2:5::0:0:System &:/:/sbin/nologin
bin:*:3:7::0:0:Binaries Commands and Source,,,:/:/sbin/nologin
tty:*:4:65533::0:0:Tty Sandbox:/:/sbin/nologin
kmem:*:5:65533::0:0:KMem Sandbox:/:/sbin/nologin
games:*:7:13::0:0:Games pseudo-user:/usr/games:/sbin/nologin
news:*:8:8::0:0:News Subsystem:/:/sbin/nologin
man:*:9:9::0:0:Mister Man Pages:/usr/share/man:/sbin/nologin
bind:*:53:53::0:0:Bind Sandbox:/:/sbin/nologin
uucp:*:66:66::0:0:UUCP pseudo-user:/var/spool/uucppublic:/usr/libexec/uucp/uucico
xten:*:67:67::0:0:X-10 daemon:/usr/local/xten:/sbin/nologin
pop:*:68:6::0:0:Post Office Owner:/nonexistent:/sbin/nologin
nobody:*:65534:65534::0:0:Unprivileged user:/nonexistent:/sbin/nologin
genisis:$1$.3tvchjG$C6wtsUV9FcXF4wzBboisJ/:1001:0::0:0:User &:/home/genisis:/bin/csh
dlavigne:pZV8Ju.2sEqsY:1000:1000::0:0:Dru Lavigne:/home/dlavigne:/bin/tcsh
test::1002:1002::0:0:test:/home/test:/bin/tcsh
看起来是不是不太顺?当我们理解了它的格式以后就会容易多了。文件中每一行包含一个用户的记录,而每条记录由十个用冒号分隔的字段组成。这些字段是以下面的顺序排列的:

name:hash:uid:gid:class:change:expire:gecos:home_dir:shell
你会注意到我的FreeBSD系统有15个系统建立的系统账号;最后三个账号(genisis、dlavigne和test)是由超级用户建立的。

现在单独来看一下“dlavigne”这条记录:

dlavigne:pZV8Ju.2sEqsY:1000:1000::0:0:Dru Lavigne:/home/dlavigne:/bin/tcsh
第一个字段(dlavigne)是该用户用于登录到系统时所用的用户名。

第二个字段(pZV8Ju.2sEqsY)是加密散列;dlavigne很幸运,这并不是她在登录时键入的口令,也无法知道从该文件中读出的她的实际口令是什么。但是,注意“test”用户的第二个字段。因为那里个空白,就说明该用户没有使用口令,只要读一个该文件就知道了。再注意很多系统账号的第二个字段都是一个星号(*),这说明普通用户无法用账号进行登录。

第三个字段(1000)是用户的UID(user ID);这是FreeBSD用来区别不同用户的,所以它必须是唯一的。当我们用adduser工具,它提议从1000开始建立UID,所以我建立的所有用户都有大于1000的UID。注意用户“root”和“toor”的UID为0,这说明他们都是系统的超级用户。

第四个字段(1000)是用户的初始GID(group ID)。缺省情况下,当你在FreeBSD中建立一个用户时,会建立一个同名的组。

第五个字段(空白)是用户的类别。类别用于决定环境设定、会话记账和资源限制。我们会在将来讨论使用类别。这个字段缺省是空的。

第六个字段(0)表示口令的期限。这个字段缺省是零,表示用户无须更新他的口令。

第七个字段(0)表示用户账号的期限。如果用户账号过期,该用户将无法再登录了。这个字段缺省是零,表示账号永不过期。

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:在FreeBSD中添加用户(1)

下一篇:如何在 FreeBSD 下压 MP3