第8 页FreeBSD 使用手册
法。配额将在第11 章讨论。其他资源限制包括限制CPU、memory 的数量和用户可能会使
用的其他资源。这些是通过对登陆进行分类来完成的,下面将作讨论。
登陆的类由/etc/login.conf 文件来定义。比较精确的表述超出了本章的范围,但login.conf
的参考文档会有比较细致的描述。
资源限制与普通的登陆限制是有区别的。首先,对于每一种限制,有软限制和硬限制之
分。一个软限制可能被用户或应用程序调整过了,但不会超越硬限制。越往后可能会越降低,
但不会升高。第二,绝大多数资源限制会分配每个处理给一个特殊的用户。
下面就是绝大多数资源限制的例子:
coredumpsize
很明显,由程序产生的核心文件大小的限制在磁盘使用上是从属于其他限制的(如,
文件大小,或磁盘配额)。然而,既然用户自己无法产生核心文件,而且经常不删除
它们,设置这个可以减少由于一个大型应用程序的崩溃所造成的大量磁盘空间的浪
费。
cputime
这是一个用户程序所能消耗掉的最大的CPU 时钟数量。一些不理想的进程会被内核
杀掉。
注意:这是一个有关CPU 消耗的时钟的限制问题,不是在使用top 和ps 命令时屏
幕上显示的CPU 消耗的百分比。
filesize
这是用户可以处理的一个文件的最大值。不象磁盘配额,这个限制是对单个文件强
制执行的。
maxproc
这是一个用户可以运行的最大的进程数。这包括前台和后台处理。很明显,这不可
能比系统指定的限制要大。当然,如果设置得太小可能会削弱用户的处理能力:可
能需要多次登陆或执行多个管道。一些任务,象编译一些大的程序,也可能会产生
多进程。(象make,cc,和其他一些预处理程序)。
memorylocked
这是一个进程可能会被锁定到主内存中的最大内存数量。一些比较大型的程序,象
第9 页FreeBSD 使用手册
amd ,这样做,在遇到问题时,他们得到的巨大交换量无法传递给系统进行处理。
memoryuse
这是在给定时间内一个进程可能消耗的最大的内存数量。它包括核心内存和交换内
存。在限制内存消耗方面,这个不是一个完全的限制,但它是一个好的开始。
openfiles
这是一个进程可以打开的最大的文件数。在FreeBSD 中,文件可能用来表现套接字
和IPC 通道;然而,注意不要把这个设置得太小。对这个更深入的限制是由
kern.maxfiles sysctl 来定义的。
sbsize
这是网络内存数量的限制。这可以通过创建许多套接字来生成一些针对老式的DoS
的攻击的回应,但它通常被用来限制网络通讯。
stacksize
这是一个进程堆栈可能达到的最大值。这个不能单独地限制一个程序可能使用的内
存数量,而是要和其他的限制一起配合。
在设置资源限制时,有一些其他的事情需要记住。下面是一些通常的技巧,建议,和各
种注意事项。
1. 系统启动的进程会被指派给后台的登陆类。
2. 虽然来自系统的/etc/login.conf 文件是一个对于绝大多数的限制做合理配置的资源
文件,但只有你,系统管理员,才能知道什么对你的系统才是最适当的。限制设得
太高可能会把你的系统开放得太大而被人滥用,而设置得太低可能会处理时效率很
低。
3. X 视窗系统的用户可能要比其他用户使用更多的资源。X11 本身就要使用很多资
源,但它也可以让用户同时运行更多的程序。
4. 记住许多限制会被应用于单独的处理进程,不是所有的用户。例如,设置openfiles
为50 意味着用户运行的每个进程可能最高只能打开50 个文件。然而,用户可以打
开的文件的总的大小是根据maxproc 的值逐步增加的openfiles 的值。这也适用于
内存的消耗。有关资源限制,登陆类的更深入信息可以看看相关的联机手册:
cap_mkdb, getrlimit, login.conf。
第10 页FreeBSD 使用手册
8.8 私有化用户
本地化是由系统管理员或用户设置的一个环境,它可以用来调整不同的语言,字符设置,
时钟标准等。这将在第14 章本地化-I18N/L10N 使用与设置作详细讨论。
8.9 组
组简单来讲就是许多用户的列表。组可以通过他们的组名和他们的编号来识别。在
FreeBSD(和其他绝大多数的Unix 系统)中,这两个要素通常被内核用来决定一个允许被执
行的进程是否是它的用户ID,还是它所属的组的列表。不象用户ID,一个进程有一个与它
相关联的组的列表。你可能听说过一些有关一个用户或进程的组ID 的事情;在大多数情况
下,这只意味着在列表中的第一个组。
与组ID 地图对应的组名在/etc/group中。这是一个用四个冒号来界定的文本文件。第
一部分是组名,第二部分是加密的密码,第三部分是组ID,第四部分是以逗号分割的成员
列表。它可以用手工的方式进行编辑。对于更完整的描述,可以参看group 的参考页。如果
你不想手工编辑/etc/group,你可以使用pw 命令来增加和编辑组。例如,要增加一个叫
teamtwo 的组,确信它存在:
例如8-6. 使用pw 增加一个组:
# pw groupadd teamtwo
# pw groupshow teamtwo
teamtwo:*:1100:
上面的1100 数字是组teamtwo 的组ID。在这儿,teamtwo 没有成员,那它也就没有多
大用处。
例如8-7.使用pw 在组中添加一些成员:
# pw groupmod teamtwo -M jru
# pw groupshow teamtwo
teamtwo:*:1100:jru
使用-M 参数为了用逗号划分开一个组成员中的用户的列表。你可能知道密码文件也会
为每个用户包含一个组;当使用pw 来询问组成员的时候,在密码文件中的组会自动被添加
到组列表中,而不会出现在成员列表中。如果你想知道一个用户属于哪个组,你可以使用
id 命令:
第11 页FreeBSD 使用手册
例如8-8.使用id 来决定组成员
% id jru
uid=1001(jru) gid=1001(jru) groups=1001(jru), 1100(teamtwo)
正如你所看到的,jru 是组jru 和teamtwo 的成员。
有关pw 的更多信息,可以参看它的联机手册,更多有关/etc/group格式的信息,可参
考group 的联机手册。
第12 页
文章整理:西部数码--专业提供域名注册、虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!




