Samba服务器在高校网络管理中的应用
Samba服务器在高校网络管理中的应用
余章松

摘要:linux服务器在民办高校的网络管理中,有着广泛的应用前景。Samba服务是linux服务器可以提供的重要网络服务,主要是提供文件和打印共享服务,也能够作为主域控制器(PDC),进行集中的帐户管理。本文结合我校四年来应用samba服务器进行学校网络管理(特别是机房管理)的实践,探讨运用samba服务器进行网络管理的几个关键环节。
关键词: samba 配置 网络管理 PDC
中图分类号:TP1 文献标识码:A 文章编号:(2004)02-0056-04

  民办高校网络管理有自己的特点,一般网络建设起点低,规模小,人力、财力投入都非常有限。在这种情况下,采用linux服务器来进行校园网络管理,就是一个比较好的选择。
  因为linux服务器对硬件要求很低,但功能强大,性能较高。我们就曾经用一台普通的学生用机作为主文件服务器管理过100多台工作站。更重要的是,linux操作系统以及其上的各种应用服务器比如文件服务器samba、邮件服务器sendmail、ftp服务器proftp、www服务器apache、代理服务器squid、数据库服务器MySQL等等都是开源软件,不需要投入资金购买,软件零成本,大大降低了网络建设的投入。不仅如此,由于这些软件产品都是开源产品,我们能够获得软件的源代码,可以根据需要进行定制,甚至二次开发。
我校在2000年建校之初,就应用linux服务器进行网络管理,提供网络服务。从2001年起,就应用samba服务器作为学校网络的主域控制器(PDC),进行机房管理。经过几年的摸索、使用,积累了一些经验,本文就结合我校实际应用,探讨运用samba服务器进行网络管理的几个关键环节。
  一、samba安装、配置
  1.1 samba服务器的获取
  samba是linux平台上常用的开源软件,其主站点是http://www.samba.org, 在全球拥有多个镜像站点,在中国有linuxforum.net的镜像站点。截至2004年9月,samba最新的版本为3.0.7,其打包文件为samba-3.0.7.tar.gz。
1.2在linux上的安装
# cd /data/src
# tar zxvf samba-3.0.7.tar.gz
# cd samba-3.0.7
(本例将samba安装在/opt/smb目录下,并使其支持磁盘配额,其它使用默认设置。)
#./configure--prefix=/opt/smb--with-quotas
# make
# make install
#make installbin
#make installman
这样,最新的samba就安装完毕,要使用还需要进一步配置。
  1.3让samba成为主域控制器(Primary Domain Controller)
samba不仅可以作为一般的文件服务器,提供文件共享和打印共享服务, 也可以取代NT SERVER、WINDOWS 2000 SERVER作为微软网络的主域控制器。这是samba非常重要的应用,也是我们学校网络管理的基础。
samba的配置文件是smb.conf,一般在安装目录下的lib目录里面,例如/opt/smb/lib/smb.conf。下面的smb.conf片断可以使samba成为主域控制器(PDC)。
[global]
netbios name=ZhuoDa_PDC
workgroup=ZDU
os level=100
preferred master=yes
domain master=yes
local master=yes
security=user
domain logons=yes
logon path=\\%N\profiles\%u
logon drive=H:
logon home=\\%L\%U
logon script=%U.bat
[netlogon]
path=/home/netlogon
read only=yes
write list=adm
[profiles]
path=/home/profiles
read only=no
create mask=0600
directory mask=0700
  二、用samba提供的网络服务
  2.1漫游配置文件与个人服务器空间
  通过上面的配置,学生在学校机房NT workstation工作站或者windows2000、windows XP工作站登录ZDU域后,可以定制自己的桌面,设置自己喜欢的墙纸,还有IE的设置、IE的收藏夹等等,这些个人桌面环境可以跟着学生走,下次他在ZDU域管理的任何一个机房任何一台计算机上登录,都会有相同的桌面环境,这就是漫游配置文件。
上面的配置还使得学生在登录校园网的工作站之后,除了本地的C:、D:等驱动器之外,还拥有一个网络分区的H:盘。学生可以将自己的个人文档、源程序等保存在H:盘。下次,他在另外一台工作站登录时,照样能够方便地使用,而不必依赖不可靠的软盘。机房通过linux服务器上磁盘配额(quota),给每个学生提供200Mb个人空间。
  2.2 文件共享
文件共享服务是samba提供的最基本的服务。可以把学生常用的软件、音像文件进行共享。比如,我们就提供以下共享内容:Soft文件夹提供各种常用软件,比如qq、ftp等软件,mp3共享文件夹专门存放mp3文件,比较受学生欢迎。Tools文件夹存放各种工具软件。Kill文件夹存放病毒专杀工具以及杀毒软件的最新病毒库。还有c,java等教学用的共享文件。Temp文件夹供学生存放临时文件。
  文件共享服务不仅方便了同学们的使用,也可以节约磁盘空间,节省外网带宽,同时也有利于控制病毒传播,因为这些共享文件夹可以设置只读权限,使得病毒、木马无法感染。
  2.3动态主页学习环境
  每个学生在linux服务器上都有200Mb Home空间,还有200Mb Temp空间。出于安全考虑,我们在PDC上并没有提供telnet服务。但学生可以通过samba提供的服务,访问其在linux服务器上的200Mb Home空间。访问非常方便,因为在工作站上被映射为H:盘了。这200Mb Home空间可以成为内网的个人主页空间。
  为了方便学生学习主页制作特别是动态网站的制作技术,我们提供了较好的学习环境:
  通过架设apache服务,我们提供了支持PHP的动态网站环境。又架设tomcat,使学生还可以学习使用JSP、JavaBean、Servlet制作动态网站的技术。学生只要在H:盘内建立public_html文件夹,在public_html文件夹内就可以存放其主页文件,不仅可以存放静态主页文件(html文件),还可以存放动态主页文件:php文件或者jsp文件、servlet文件、javabean等。访问方法,对基于PHP的学生个人网站是:http://192.168.0.1:8000/~stuname/index.php。对基于JSP的学生个人网站是:http://192.168.0.1/stuname/index.jsp。(192.168.0.1为我校PDC的IP地址。)其中,stuname替换为学生自己的帐户名称,如liml3。对于PHP、JSP学习环境,我们还提供数据库支持,目前支持Mysql数据库,以后将扩展到对oracle数据库的支持。
  三、帐户管理
用samba服务器作为PDC管理学校网络,一个基本的日常工作就是帐户管理。帐户又分机器帐户、学生帐户两种。机器帐户管理主要是将NT工作站、W2K工作站或WIN XP工作站加入到域。学生帐户管理主要是建立学生个人帐户,供学生登录使用,还有封、解帐户,注消学生帐户等。
  各个机房的所有机器(NT workstation,W2K professional等)都加入到域(本例是ZDU域),所有学生必须在PDC上拥有合法帐户才登录工作站,使用机器。
  3.1 机器帐户管理
  机器帐户管理主要是将机器加入到域。将工作站加入到域,NT工作站与W2K、WXP工作站略有不同。
  (1)给每台机器设立一个linux帐户,如机器netbios名称为ws150aad的机器,它在/etc/passwd中的条目是:
ws150aa$:9000:150001:trust account:/dev/null:/bin/false
  注意:机器帐户名称在/etc/passwd中都是以‘$'结尾。
  其次,用户ID(rid,此处为150001)不能重复。
  (2)使用下面的命令将机器加入到域:
  /opt/smb300/bin/smbpasswd -a -m ws150aa
注意,此处为ws150aa,而不是ws150aa$。
  (3)工作站上的设置:
  如果是NT工作站,选择更改机器名称、域名称,如ZDU域,工作站??求输入有权加入到域的帐户及密码。帐户应该为root,注意此处的root与linux操作系统的root用户是不同的。
  3.2 学生帐户管理
  学生帐户是PDC集中帐户管理的主体,在我校目前有200个机器帐户,2000多个学生帐户。
  (1)添加学生帐户。分二步:首先为每一个学生建一个linux帐户,再把该帐户加入到samba中。linux帐户的主文件是/etc/passwd,samba帐户的主文件是smbpasswd,,本例为/opt/smb/private/smbpasswd.。
我们使用如下的小脚本程序来添加学生帐户。
#!/bin/bash
# file name: st
# useage:./st username passwd
cd/ntws
echo $1
echo $2
EXISTS="exists"
VIEW=getuser $1`
If["$VIEW"="$EXISTS"]
then
echo'error'
exit
fi
useradd $1
/opt/smb/bin/smbpasswd-a-s$1 $2
由于网站规模还不大,我们对用户名称主要参照学生姓名来设置,例如2003级的李美丽同学的帐户为liml3,即姓的全拼+名字的简拼+年份,这样便于记忆、管理,当然如果学生规模较大,由于帐户名称重复的可能性会随着增大,这种作法就不可行了。上面的脚本调用了一个我们用c语言编写的小程序,用来判定该帐户名称是否已经存在。
如果存在,将提示“error”退出,管理员就会另选一个用户名。如上例,改为limeili3。另外,开户时,我们可以将密码预设为1,由学生自行到校园网的工作站上修改密码。
在samba的配置文件smb.conf中添加如下几行,学生就可以自己修改密码了。
Unix password sync=Yes
Update encrypted=no
Passwd program=/usr/bin/passwd %u
Passwd chat=*New*UNIX*password* %n\n* ReType*new*UNIX*password* %n\n *passwd:*all*authentication*tokens*updated*successfully*
  (2)封解、注销学生帐户.如果学生欠费,可以用如下命令封其帐户(以liml3为例):
/opt/smb/bin/smbpasswd -d liml3
  要解开该帐户,可用命令:/opt/smb/bin/smbpasswd -e liml3。
  要删除该帐户,可用命令:/opt/smb/bin/smbpasswd ?Cx liml3。
当然,在实际使用中,我们一般是通过crontab,根据其是否欠费或者续费自动实现对学生帐户的封、解,学生退学、毕业时再注销其帐户。
四、局域网杀毒
  在病毒、木马、蠕虫日益泛滥的今天,在微软网络杀病毒、灭木马、清蠕虫,对网管而言是一个日益繁重的任务。文件服务器由于对整个网络提供文件共享服务,为了方便用户,一般还提供可写目录,这就使得Samba服务器容易成为各种病毒、木马、蠕虫的快乐大本营。
只要一个工作站感染上了病毒,服务器就会接受到感染病毒的文件,从而会使得更多的工作站也传染上这种病毒。漫游配置文件在方便了用户的使用的同时,也大大方便了病毒的传播。一个用户配置文件感染了病毒,他登录的任何一台工作站就会马上感染病毒,而此后,那些登录过已经感染了病毒的工作站的用户,又会成为新的病毒感染者和传播者。
  在过去的几年里,局域网病毒是我们非常头痛的问题。有些恶性病毒,会严重干扰用户正常使用,大大降低机器运行速度,甚至会堵塞网络,使得大批用户无法登录。我们曾经被迫重新启动服务器,才使得在网络被完全堵死的情况下,大量用户才能够正常登录。
  我们曾经在工作站上将杀毒软件都升级到最新版本,费了很大力气,只管用几天,病毒又重新在网络流行开来。
  局域网杀毒的基本原则是服务器、工作站两头并进,不留死角。
  4.1 服务器杀毒
以前网络杀毒失败一个重要原因是服务器成为病毒大本营,工作站杀毒也因之劳而无功。经过网络搜索,终于找到了二款适合linux平台上samba服务器使用的杀毒软件:clamav、 f-prot。clamav的优点是开源软件,能够获得源码,可以二次开发,并能够与第三方杀毒软件结合。但其缺点也很明显,目前能查病毒,而不能够有效清除病毒,只提供对带毒文件的删除功能。
  f-prot的linux版非常强大,其病毒库与windows版一致,能查病毒,也能清出病毒,并且其杀毒的效率也是非常高的。
  此外,我们还利用Samba支持文件过滤功能,来拦截某些病毒文件。例如,在smb.conf的global一节中增加下行:
veto files=/*.eml/*.nws/riched20.dll/.eml/.nws/
  就可以在samba提供的共享文件目录中拦截nimda病毒的病毒文件。
由于samba服务器上文件太多(有200多Gb,数百万个文件),为了延长服务器硬盘的使用寿命,我们并不是每天通杀一次,而是通过crontab设置深夜23:10,只自动对当天更改过的目录杀毒。
  工作站上的病毒虽然可以修改文件时间,但无法修改它传到服务器上的目录更改时间。
因而,只对当天更改过的目录(即有写入的目录)进行杀毒,对服务器杀读而言是足够的。
  我们还归整了共享文件夹,对soft,tools等共享文件夹在杀毒之后,设置linux系统上的只读权限,使其无法传播病毒。以后加入的软件,也是先杀毒再加入。
  4.2 工作站杀毒
经过长期实践,证明工作站杀毒软件并不能够在局域网环境下有效拦截病毒,反而存在一些负作用:延缓系统反应速度、关机时经常发生错误拒绝退出,有些杀毒软件还会容许学生拦截计费数据发送,今年,我们干脆卸装了杀毒软件。
没有杀毒软件,防范病毒工作就主要依靠操作系统安全性来实施。经过反复试验,我们采取如下措施,效果不错:
  (1)锁定注册表中学生用户对run项的权限,使得只要管理员才能安装开机自动运行的软件。
  这样,病毒、木马无法开机自动运行,大大限制了其传染能力。
  (2)锁定各种系统目录,在不影响正常使用的前提下,尽可能授予学生帐户最低权限。各分区如C:、D:、E:根目录均不容许学生用户写入,普通用户只对各分区的temp目录有写权限。 c:\winnt, c:\system32, c:\system, c:\program files更是重点防范的文件夹,所有可执行文件都被设成只读,使得标准系统可执行文件无法感染病毒。
  (3)提供专杀工具,发布病毒告示,发动学生杀毒。
  (4)设置vlan。
我们将200台机器放在10个vlan里面,不仅可以限制病毒传播,还能够提升网络效率,有效防止网络堵塞。如果任由病毒在局域网里面交叉传播,必然容易导致网络堵塞。
  (5)不轻易用管理员身份登录工作站。
  应当贯彻最小权限原则,不是任何管理工作都必须由管理员身份进行。比如,杀毒也可以用普通权限用户登录进行,只有确实需要的情况下,才用管理员身份登录。即使要用管理员身份登录,也应该优先使用域管理员身份,而不是本地管理员身份。用域管理身份登录之后,系统可以自动执行管理脚本,执行完毕自动关机,在服务器上再更改域管理员密码即可。
  五、计费系统
机房管理系统中,最重要的模块之一是计费模块。我校的计费系统分几个部分:充值、计费、查询、帐户封解,核心部分是计费程序。计费程序由工作站上的lognt.exe或者log2k.exe,加上服务器端的守护程序svr组成。
计费系统采用c/s架构,在服务器(linux)平台上用gcc开发了svr.c 作为服务器端程序,主要是通过udp协议接受各工作站发过来的计费数据。这个程序也非常简单实用。
  客户端程序lognt.cpp,是一个关键程序,在w2k平台上用vc 6.0开发。
  首先,它是一个NT服务进程,它随机器的启动而自动加载,普通用户(学生)无权中止它的运行。
  它5秒钟检测一次本机与服务器的连接,如果发现不通,则立即调用关机子函数。这样,可以防止学生拔掉网线以阻止计费数据的发送。
  它取得本机名称、当前登录的用户名称,每分钟通过udp协议向计费服务器发送一次。
在后来的使用中,我们还增加了guard.exe来加固计费系统。guard程序也是NT服务进程,每分钟向服务器守护程序svr15查询一次当前用户的当前机时余额,如果小于零,则调用关机子程序,不允许用户继续使用。
  计费服务器端,通过crontab,每5分钟自动对计费数据汇总、统计一次,并更新数据库里面的计费数据,刷新用户的当前余额。登录服务器(PDC),也通过crontab,每5分钟自动根据计费数据库最??序lock21是用c语言编写的。
  我们的计费数据库使用的是postgresql 7.4。机时充值系统、机时查询系统采用的是B/S架构,用php开发。学生购买充值卡(其实是一张盖了财务章的小纸条,上面印有卡号、密码)后,自行充值。学生不仅可以查询到自己的机时余额,还可以查询到自己的机时使用清单,自己在哪个时段(5分钟为尺度)哪台机器上使用了几分钟。
  六、samba升级要点
  应用系统都需要不断升级,samba也不例外。一般而言,升级版本都更正了之前版本已知的错误,或者在增强安全性、扩展功能、提升性能方面,有重要进步。因此,应该积极跟上软件升级的步伐,如果目前的版本已经发现有重要的安全漏洞,而不立即进行升级,就可能产生不良的后果。在今年秋季的软件升级中,在不增加硬件投入的情况下,通过升级linux系统的内核,更新服务器网卡的驱动,升级samba到最新版,使得主服务器的性能提升了近1/3。
  Samba升级过程中应该注意以下问题:
  成功编译安装新版本的samba之后,把现在使用的smbpasswd在private目录内,smb.conf在lib目录内。
  关键是把Machine.SID拷贝到private目录内,不能简单地拷贝secretes.tdb。新版本samba第一次运行是会根据Machine.SID自动生成相关数据,并且samba会删除Machine.SID文件! 因此,应该将Machine.SID备份到另外的可靠地方。否则,必须把数百台机器一台一台重新加入到一个新域,那是很繁重的工作。
  原来的域管理员组(Domain Admins)在新版中只是普通用户,要使其重新成为域管理员组,需执行下面的命令:
/opt/smb/bin/net groupmap modify ntgroup="Domain Admins" unixgroup=adm
本例中,以adm作为linux上对应的组名,名称不重要,重要的是其组ID(gid)。注意:这里使用的命令参数是modify,而不是add,如果是升级的话。否则,就会产生一个假”Domain Admins“组。还有,samba最新的官方文档在这方面有误!”Domain Admnis“在linux上对应的gid只能是512,而不是随意的数字,samba官方文档举的例子是502,这是错误的。
  七、努力的方向
  虽然我们在用samba服务器进行学校网络管理方面,进行了多年的实践。但是,由于我们学校网络规模的限制,我们的应用层次,还有待深入,应用方向还有待拓展。比如, samba提供的网络打印共享服务是其非常重要的功能,由于我们没有财力购买网络打印机,就一直没有涉及。还有,我们现在的帐户管理还依赖于密码文件(/etc/passwd,smbpasswd),这在网络规模不大的时候,还是可行的。但随着网络规模升级到中等以上,用户管理就应该升级,以目录服务为基础,使用ldap作后台。
  总之,我们的应用是以服务学校为宗旨,随着学校网络规模的扩大、应用需求的提升,而不断深入。
  
参考文献:
[1]http://www.samba.org.
[2][美]萨伯等.Samba开发使用手册[M].机械工业出版,2001年.
[3][美]Gerald Carter.Samba 24学时教程[M].机械工业出版社,2000年.
paper   2005-11-19 19:58:05 评论:0   阅读:1598   引用:0

发表评论>>

署名发表(评论可管理,不必输入下面的姓名)

姓名:

主题:

内容: 最少15个,最长1000个字符

验证码: (如不清楚,请刷新)

Copyright@2004-2010 powered by YuLog