一些FreeBSD相关的安全问题( 五 )


bash-2.03# cat login.conf

---------------------snip----------------------
default:
:copyright=/etc/COPYRIGHT:
:welcome=/etc/motd:
:setenv=MAIL=/var/mail/$,BLOCKSIZE=K,FTP_PASSIVE_MODE=YES:
:path=~/bin /bin /usr/bin /usr/local/bin /usr/X11R6/bin:
:nologin=/var/run/nologin:
:cputime=unlimited:
:datasize=unlimited:
:stacksize=unlimited:
:memorylocked=unlimited:
:memoryuse=unlimited:
:filesize=unlimited:
:coredumpsize=unlimited:
:openfiles=unlimited:
:maxproc=unlimited:
:priority=0:
:ignoretime@:
:umask=022:


#
# A collection of common class names - forward them all to "default"
# (login would normally do this anyway, but having a class name
# here suppresses the diagnostic)
#
standard:
:tc=default:
xuser:
:tc=default:
staff:
:tc=default:
daemon:
:tc=default:
news:
:tc=default:
dialer:
:tc=default:

#
# Root can always login
#
# N.B. login_getpwclass(3) will use this entry for the root account,
# in preference to "default".
root:
:ignorenologin:
:tc=default:
---------------------snip----------------------

利用login.conf可以方便地对用户的登录环境和资源许可进行设置,缺省的设置对用户所能使用的资源几乎没有限制,可以把login.conf改为如下内容:

---------------------snip----------------------
default:
:cputime=infinity:
:datasize-cur=64M:
:stacksize-cur=64M:
:memorylocked-cur=10M:
:memoryuse-cur=100M:
:filesize=infinity:
:coredumpsize=infinity:
:maxproc-cur=64:
:openfiles-cur=64:
:priority=0:
:requirehome@:
:umask=022:
:tc=auth-defaults:
---------------------snip----------------------

上面设置了default登录类别中的几个参数,如果没有在master.passwd文件中明确指定用户的登录类别,就使用这个缺省类别来作为用户的登录类别 。

cputime设置了用户的每个进程可以使用的CPU时间,缺省是无限制(infinity) 。如果加以限制,有些需要大量CPU时间进行运算的进程就不能正常执行到结束 。

datasize-cur设置了用户使用的数据段最大为64M,但-cur设置不是强制的,用户实际使用的数据有可能超过这个值,但最大不能超过datasize-max设置的值(缺省没有设置) 。如果没有-cur和-max 后缀,仅仅定义datasize,则表示datasize-cur和datasize-max同样都为datasize 设置的值 。同样stacksize定义了对栈的限制 。

memorylocked-cur设置了用户每进程可以锁定的最大内存 。

memoryuse-cur设置了每进程使用的最大内存 。

filesize-cur设置了用户产生的文件大小 。

coredumpsize设置了在应用程序发生问题时产生的core dump文件的大小 。

maxproc-cur设置了用户可以同时执行的最大进程数 。

openfiles-cur设置了每进程最多打开的文件数 。

priority设置用户进程的优先级 。

requirehome设置用户登录时是否需要主目录,@符号表示不需要主目录 。

umask项设置缺省的umask,用于用户创建文件的属性 。

tc设置系统认证策略为使用缺省的认证策略 。

如果要创建新类别,并不需要对每个值都重新设置,系统缺省先应用default类别的设置,然后再应用具体类别的设置,因此只需要设置与default类别不同的项就可以了 。

---------------------snip----------------------
users:
:manpath=/usr/share/man /usr/X11R6/man /usr/local/man:
:cputime=4h:
:openfiles=32:
:maxproc=48:
:tc=default:
---------------------snip----------------------

上面是设置了一个新类users,可以看出它为用户设置了环境变量MANPATH,并重置了cputtime 、openfile、maxproc和tc的值 。每次更改login.conf之后,都要进行更新登录类别数据库的操作 。

推荐阅读