当前位置:Linux教程 - Samba - 用 Linux 和 Samba 提供局域网文件打印服务

用 Linux 和 Samba 提供局域网文件打印服务



           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机器,稍加改造,又顺利地投入了运行。该方案比较适合在七八人的小型办公环境中采用。

    发布人:zeus 来自:丁 望