微信公众号 
图码生活

每天发布有五花八门的文章,各种有趣的知识等,期待您的订阅与参与
电脑报 1992-2001 十年文章全集
电脑报 1992-2001 十年文章全集
包含从 1992 年 - 2001 年间,两万余篇期刊文章,查询最少输入两个字符
随便看看
读取中
读取中
标题用Linux和Samba提供局域网文件和打印服务
栏目OA专刊
作者丁望
发布2000年第22期
  Linux操作系统配上Samba服务能够全面支持Windows的文件和打印服务。有资料表明,客户(Client)端用户几乎不能分辨服务器(Server)端采用的是Samba服务器还是Windows NT服务器。Samba软件包还可以安装到任何一台类Unix的机器上,稍加配置,即可为用户提供类似Windows NT的文件和打印服务。Samba的官方网址是http://www.samba.org,其最新版本可以从ftp://ftp.samba.org下载。
  下面以Redhat公司的Redhat 6.0为例。我采用了一台Compaq的486档次的机器,另外配一块4.3G硬盘,NE2000兼容网卡。
  一、Linux和Samba软件包的安装
  首先安装Redhat 6.0。注意安装时可选择安装Samba软件包,并自动启动smb服务。那么重新启动机器后,输入命令 #ps -ef,可以看到两个进程smbd -D和nmbd -D。其中smbd是smb的daemon,nmbd是为Client提供Netbios名字服务的daemon。这说明Samba服务已经启动了。
  如果你在安装系统时没有选择Samba软件包,或者你是在其他UNIX机器上安装下载的Samba软件包,那么通常可以将Samba软件包拷贝到/usr/local目录下,用下列命令解包:
  #tar xvfz samba-2.0.5.tar.gz
  按照readme文件的指示可以非常容易地完成安装。注意:daemon程序应在/usr/sbin目录下,其他可执行程序在/usr/bin目录下,配置文件smb.conf在/etc目录下。
  两个daemon程序可以作为独立的进程运行,也可以从inetd启动。软件默认为独立进程运行。如果想从inetd启动,先检查一下文件/etc/services保证下列行前的注释符“#”已被删除。
  netbios-ns  137/tcp  nbns
  netbios-ns  137/udp  nbns
  netbios-dgm  138/tcp   nbdgm
  netbios-dgm  138/udp  nbdgm
  netbios-ssn   139/tcp   nbssn
  然后,在文件/etc/inetd.conf中加入下列行:
  # Samba NetBIOS services (for PC file and print sharing)
  netbios-ssn stream tcp nowait root /usr/sbin/smbd smbd
  netbios-ns dgram udp wait root /usr/sbin/nmbd nmbd
  重新启动inetd:#kill -HUP 'cat /var/run/inetd.pid' 即可。
  二、smb.conf文件的一般配置
  Samba软件的基本配置均在同一个文件/etc/smb.conf中,该文件决定共享的资源和权限。smb.conf文件是按段划分的,诸如:[global]、[printer]、[home]段。[global]段定义了Samba服务提供的共享资源所引用的相同的一些变量。[home]段通常定义了Linux机器上共享出来的目录资源,其名字可以由用户确定。[printer]定义了Linux上共享打印机的设置。下面是我的一个实例:
  [global]
  netbios name = Red;定义Windows“网上邻居”中所见的机器名
  workgroup = office;定义工作组名
  printing = bsd
  printcap name = /etc/printercap;共享的打印机文件
  load printer = yes;是否加载/etc/printercap中的打印机
  log file = /var/log/samba-log.%m;定义日志文件
  security = share;定义访问限制
  [public];“网上邻居”中看到的共享资源名
  comment = This is Redhat Server;注释行
  public  =  yes
  browseable  = yes;为yes时,“网上邻居”中可见该资源;否则不可见
  writeable  =  yes;定义该共享目录可写入
  path  = /home/public;指定共享目录所在的路径
  [printers] path = /var/spool/lpd/lp;定义打印机的路径,要与/etc/printercap中spool目录中的设置一致
  security = server
  printer name = lp
  writeable = yes
  printable = yes
  print command = lpr -r -h -P %p %s;定义打印命令
  三、共享目录采用user模式时的设置
  有时,我们要对Linux上共享目录的访问进行限制。访问限制有三种:share、user、server。默认模式为share,安全级别最低。user模式要求连接时输入用户名和口令。server模式要求用户的认证由Samba服务器来完成。通常我们用到的是user模式。这时要注意,Windows系列默认采用加密口令传输,而Linux默认采用非加密口令传输。此时可采用下列两种方法之一。
  1.修改Windows注册表
  对Windows 95/98:
  在HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\VxD\VNETSUP下
  增加一个新的DWORD键值EnablePlainTextPassword 0x01
  对Windows NT:
  在HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Rdr\Parameters下增加一个新的DWORD键值EnablePlainTextPassword  0x01
  2.在smb.conf文件中[global]段中加入下列行:
  security  = user
  encrypt passwords = yes
  smb passwd file = /etc/smb/passwd
  建议采用第二种方式,避免修改局域网中的每一台Windows机器。
  设置是否加密口令后,还要建立smb账户。实际上,这些smb账户就是作为网络客户登录的Windows用户。
  #cat /etc/passwd | mksmbpasswd.sh > /etc/smbpasswd
  然后编辑/etc/smbpasswd文件,删除多余的账户。
  如果Windows网络客户还不是Linux用户,则可用下列命令增加:
  #adduser username 添加该用户为Linux用户
  #smbpasswd -a username 添加该用户为smb用户
  修改smb账户的口令,最后与/etc/passwd中的口令一致,以便于管理。
  #smbpasswd username
  四、检查配置并重新启动Samba服务
  smb.conf文件配置完成后,可以用命令对配置语法进行检查。
  #/usr/bin/testparm
  如果配置文件中有语法上错误,可及时进行修改。正确无误后,用下列命令重启Samba服务(独立进程时):
  #/etc/rc.d/init.d/smb restart
  此外,必须注意以下几点:
  1.Samba要求你的机器处于同一个网段中,并且客户端必须配置TCP/IP协议,其他协议下Samba不能工作。
  2.Samba不能跨路由器工作,如果需要提供跨路由服务,还需要设置IP隧道。
  3.如果你的机器安装了两块网卡,则应在/etc/smb.conf文件的[global]段中写入下列行:
  interfaces = 192.168.1.1/24
  其中的24表示C类地址。
  4.共享出来的目录还应修改访问限制为777。
  就这样,无需更多的投入,一台闲置的486机器,稍加改造,又顺利地投入了运行。该方案比较适合在七八人的小型办公环境中采用。