下一页 上一页 目录

5. 运行守护进程

两个 SMB 守护进程是 /usr/sbin/smbd 和 /usr/sbin/nmbd。在大多数 Linux 发行版中,这些守护进程通过位于 /etc/rc.d/init.d/smb 的启动脚本启动、停止和重启,并通过符号链接链接到适当的运行级别。

如果您选择不使用标准启动脚本,您可以从 inetd 或作为独立进程运行 Samba 守护进程。与从 inetd 运行相比,作为独立守护进程运行时,Samba 的响应速度会稍快一些。

在任何一种情况下,您都应该检查 /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/services 包含这些条目,否则 Samba 将无法绑定到相应的端口。

要从 inetd 运行守护进程,请将以下行添加到 inetd 配置文件 /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`

要从系统启动脚本运行守护进程,请将以下脚本放入名为 /etc/rc.d/init.d/smb 的文件(适用于大多数发行版),并将其符号链接到注释中指定的文件


    #!/bin/sh

    #
    # /etc/rc.d/init.d/smb - starts and stops SMB services.
    #
    # The following files should be synbolic links to this file:
    # symlinks: /etc/rc.d/rc1.d/K35smb  (Kills SMB services on shutdown)
    #           /etc/rc.d/rc3.d/S91smb  (Starts SMB services in multiuser mode)
    #           /etc/rc.d/rc6.d/K35smb  (Kills SMB services on reboot)
    #

    # Source function library.
    . /etc/rc.d/init.d/functions

    # Source networking configuration.
    . /etc/sysconfig/network

    # Check that networking is up.
    [ ${NETWORKING} = "no" ] && exit 0

    # See how we were called.
    case "$1" in
      start)
        echo -n "Starting SMB services: "
        daemon smbd -D  
        daemon nmbd -D 
        echo
        touch /var/lock/subsys/smb
        ;;
      stop)
        echo -n "Shutting down SMB services: "
        killproc smbd
        killproc nmbd
        rm -f /var/lock/subsys/smb
        echo ""
        ;;
      *)
        echo "Usage: smb {start|stop}"
        exit 1
    esac

如果在启动 Samba 时,您收到一个错误,提示守护进程无法绑定到端口 139,那么您可能已经有另一个 Samba 进程正在运行,但尚未关闭。检查进程列表(使用 'ps auxww | grep mbd')以确定是否还有另一个 Samba 服务正在运行。


下一页 上一页 目录