在FreeBSD中添加用户(2)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”用户的第二个字段。因为那里个空白,就说明该用户没有使用口令,只要读一个该文件就知道了。再注意很多系统账号的第二个字段都是一个星号(*),这说明普通用户无法用账号进行登录。 上一篇:在FreeBSD中添加用户(1) 下一篇:如何在 FreeBSD 下压 MP3 更多相关文章
|
推荐文章
精彩文章
|