目录read.pudn.com/downloads82/doc/project/316635/毕业 … · web viewyour daily routine is...

Click here to load reader

Upload: others

Post on 31-May-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

目录

电 子 科 技 大 学

毕业设计(论文)任务书

拟题单位 计算机科学与工程学院 审题人 卢显良

题目全称 Samba文件系统文件共享的设计实现与优化

主要任务:

构建Samba服务器,建立Samba文件系统,根据需求编写smb.conf文件,使它在user模式下为Linux用户和windows用户提供安全可靠的文件共享服务,实现的基本功能有:

1. windows用户访问Linux共享文件时的登陆及身份验证

2. 共享文件的读写及隐藏保护措施

3. 针对不同用户的授权

4. Linux用户读写windows共享文件

在此基础上讨论如何根据实际环境条件进一步优化Samba服务器,提高服务器性能,优化要求有:

1. Samba能随服务器开机关机或重起时自动启动停止或重新启动文件共享的服务

2. 根据实际硬件和网络情况,找到影响服务器性能的瓶颈因素,然后加以设计调整以提高服务器与客户机之间的文件传输速率

起止时间:2005 年 3 月 1 日 至 2005 年 6 月 14 日

学生姓名 董 瑛 专业 计算机科学与技术(软件技术)班次 21082010班

指导单位 计算机科学与工程学院

指导教师 卢显良

设计地点 信息中心11楼实验室

成果形式 软件

2005 年 6 月 14 日

目录

III摘要

IVABSTRACT

1第一章 引言

2第二章 Linux简介

22.1 层次结构

22.2 守护进程

32.3 目录结构

42.4 访问控制

52.5 文件和目录权限

62.6 shell脚本

8第三章 相关协议

83.1 NetBIOS

93.2 TCP/IP

103.3 SMB服务器消息块

13第四章 Samba概述

134.1 Samba功能

144.2 Samba核心

144.3 Samba命令

15第五章 Samba核心配置—smb.conf

155.1 smb.conf 文件

155.2 结构布局

185.3 变量

195.4 参数

205.5 安全等级和安全参数

215.6 用户名称和口令

245.7 可访问性和可访问参数

265.8 浏览(Browse)

28第六章 文件共享的设计与实现

286.1 设计目标

286.1.1 基本目标

296.1.2 优化目标

296.2 设计思想

296.2.1 基本目标设计思想

306.2.2 优化目标设计思想

306.3 基本目标设计过程

306.3.1 编译安装Samba

306.3.2 建立用户相关目录和组

316.3.3 添加Samba用户和密码

326.3.4 编写smb.conf文件

346.3.5 检查启动Samba

356.4 优化目标设计过程

356.4.1 编写Samba启动脚本

386.4.2 寻找最佳缓冲区大小

40第七章 功能与性能测试

407.1 测试环境

407.2 Samba服务器功能测试

407.2.1 登陆Samba服务器

417.2.2 测试结果

427.3 Samba客户端功能测试

427.3.1 查看工作组计算机

437.3.2 查看共享情况

447.3.3 读写共享文件

447.4 Samba性能测试

46第八章 结论

47参考文献

48英语原文与翻译

53致谢

54附录 完整smb.conf文件

Samba 文件系统文件共享的设计实现与优化

学生姓名:董瑛

班级:21082010

指导教师:卢显良 教授

指导单位:计算机学院8020教研室

摘要

Linux与windows网络文件集成是通过Samba 来实现的。Samba是一组软件包,使Linux支持SMB协议,该协议由TCP/IP实现,它是windows网络文件共享基础,负责处理和使用远程文件和资源。正是由于Samba的存在,使得windows和Linux可以集成并互相通讯。从Windows的角度,通过Samba共享的LINUX资源就像在另一台Windows服务器上一样,不需要其他任何的桌面客户软件就可以访问。

本文讨论了如何构建Samba服务器建立Samba文件系统,根据需求编写smb.conf文件,使它在user模式下为Linux用户和windows用户提供安全可靠的文件共享服务。然后在此基础上讨论如何根据实际环境条件进一步优化Samba服务器,提高服务器性能。

测试表明,Linux用户能在其设定权限下读写windows共享文件,windows用户也能在设定权限下读写Linux共享文件。服务器优化过后性能有了较好改善。

关键词: SMB协议,smb.conf配置文件,user模式,加密,文件访问权限,缓冲区

ABSTRACT

The integration of Linux and windows is carry out by Samba. Samba is a software package that makes Linux supports SMB protocol. SMB is the foundation of the windows network file sharing. It is responsible to handle and use the remote files and resources. Because of the Samba, the windows and the Linux system could be integrated together and communicate with each other.

This thesis discusses how to set up a Samba server to establish a Samba file system ,and configure the smb.conf file according to the need, make the server provide a safe and dependable file sharing service for the users of Linux and windows under the mode of user. Base on this ,we can discuss how to further optimize the Samba server according to the real environment to improve its performance .

Experiments show that the user of Linux could read and write the sharing files of windows systems within its access rights, the user of windows also could read and write the sharing file of the Linux system within its access rights,and the optimized server has a better performance during file sharing .

Keywords: SMB protocol, smb.conf file, user mode, encrypt,

file access rights, buffer

第一章 引言

Linux和Windows是目前比较流行的操作系统,在许多企业的内部网中同时存在这两种操作系统。从企业和个人的使用需求角度来说,Linux起源于公开的系统和标准,而Windows则更具有专利的性质。虽然随着时间的发展,在参与市场竞争时,两种操作系统都有各自不同的发展,但是二者之间都有各自的强项和弱点。这很可能就是为什么现今绝大多数公司都同时使用这些平台的主要原因。二者之间通过互相完善和补充,可以基本满足公司、学校甚至家庭等复杂混合计算环境中出现的各种需求。为提高资源利用率,需要能在这些不同系统之间共享资源,比如可以从Windows的客户机访问Linux 服务器的共享文件夹或打印设备,或者从Linux 客户机上使用Windows服务器的磁盘空间和打印机等。为此,就需要进行Linux和Windows网络集成。

Windows主机彼此间可利用“网上邻居”来访问共享的资源,NFS也能使Linux 主机之间实现资源共享。但如何能使Windows主机和Linux主机之间实现资源共享呢?有鉴于此,便有一些Linux 爱好者开始在Linux主机上实现SMB通信协议,后来这个实现了SMB功能的软件被称为Samba,它使得Windows主机和Linux主机之间实现了资源共享。

Samba 是一组能够运行在Linux或兼容Linux操作系统上的一组程序。这个系统是使用Microsoft网络协议通过网络提供服务并共享资源,它本质上是给客户提供unix文件服务,这些客户可以是使用Microsoft Windows的系统,也可以是具有其他支持Microsoft网络协议的软件或已经安装了Samba客户程序包的任何系统。由于samba的源码是公开的,因此越来越多的人加入到samba的开发队伍中。

第二章 Linux简介

本文涉及到Linux与windows两个操作系统,对于比较陌生的Linux操作系统,首先需要熟悉它的结构与特色以及Linux环境下的脚本编程。而windows就不花笔墨研究了。

2.1 层次结构

从体系结构的角度来说,Linux被看作一个可以提供多层次服务和接口的集合。层次结构中最下层是内核,负责管理所有的硬件组件和执行环境之间的接口。其中包括调度工作、分配内存、移动数据以及在不同的系统事件发生时通知相应的任务。内核上面一层是s h e l l。其中可能有多个s h e l l,每个s h e l l实际上就是一个命令解释器,它负责接受输入,提供上下文解释,并根据用户的需要请求内核的服务。Linux层次结构的顶层是用户界面。其中包括所有的命令、解释性语言、图形界面以及使终端用户能够使用操作系统所提供的各种资源的工具。在Linux下工作需要记住的一个重要概念就是所有系统对象之间的通用接口都被抽象为文件。这就是说,无论是操作硬件、数据、内存,还是运行任务,都可以归结为对文件的操作。

用户接口、命令、工具、应用程序

Shell

内核

图2-1 Linux命令、shell和内核的结构

2.2 守护进程

每一个正在执行中的任务,以及和它相关的地址空间,都被称为一个进程。在Linux下运行的活跃进程组的结构类似于一棵家族树。子进程由父进程产生。进程都要经历产生、在存期内工作以及死亡这三个过程。偶尔有些进程甚至还会失控。每个Linux系统启动时所运行第一个进程称为初始化进程init。所有的进程都是直接或间接由init进程产生的。和人类的社会中所有慈爱的父母一样,初始化进程甚至还会“照顾”那些失去了父进程的“孤儿”进程。在每个进程的生存期中,它们轮流使用CPU。像对待孩子们一样,系统通过一个调度程序确保每一个进程能够公平地分享CPU时间。系统管理员作为进程集合的监督者进行监督,在所有进程的生存期中行使绝对的控制权。

Linux系统中的每一个进程都被分配了一个称为进程标识符(PID)的正整数。在内核维护的进程表中,PID是该表的索引向量。对每个进程而言,PID是全局唯一并且随机分配的。每个进程表项指向一个进程的内核数据结构,该数据结构定义了与这个进程相关的属性和值,包括:

· 进程标识符

· 进程组标识符

· 父进程标识符

· 进程所有者

· 有效用户/组和实际用户/组标识符

· 优先级

· 控制终端

· 地址空间

· 页大小

· 页数据

· 资源利用率

· 进程状态

2.3 目录结构

Linux目录文件结构被组织成一棵倒立的树,树的最顶端是根目录,而子目录从根开始向下形成分支。树上的每一级目录都可以包括文件和其他子目录。目录也可以作为安装点,将其他文件系统和树连结起来。按规定根目录用“ /”表示,是整个树结构的安装点。在Linux中,有一组标准目录用于保存不同类型的文件。表2-1列出了这组目录。

/

文件系统根目录

/bin

二进制命令文件

/dev

设备文件

/etc

配置文件和管理脚本

/home

用户文件

/lib,/usr/lib

库文件

/sbin

系统二进制文件

/tmp

临时文件

/usr/bin

命令和脚本

/usr/include

系统头文件

/var,/usr/spool

缓冲文件和日志文件

/usr/local

局部命令、脚本和文件

/usr/man

联机帮助手册

表2-1 通用Linux目录

2.4 访问控制

/etc/passwd和/etc/group这两个文件是Linux下进行访问控制的基础。通常对一个对象进行操作的权利是由该对象的所有者和所属组的成员控制的。

2.4.1 口令

Linux口令文件,/etc/passwd,实际是一个记录了允许登录到系统中的所有用户的表格。每个用户帐号都分配有一个字符串(帐号名)以及一个数字标识符(UID),每台机器UID是唯一的。与每个用户相关的另一个数字标识符是缺省组标识符(GID)。系统使用UID和GID进行最基本的访问控制管理。根据具体的用户情况的不同,口令文件中可以记录加密口令,也可以不记录加密口令。由于口令文件对所有用户都是可见的,有些系统将加密口令转移到一个访问受限的文件中,这个文件称为shadow口令文件。

如果/etc/passwd文件的口令域只有一个“ !”字符,则说明可以在shadow口令文件中找到相应的加密口令。口令文件中的其他信息可能还有用户名和地址数据(它们保存在gecos域中),以及用户的主目录和缺省的shell。口令文件中每一个域都由“:”隔开。

帐号名: ! : UID : GID :〈gecos 字符串〉:〈主目录〉:〈shell〉

2.4.2 组

组提供了在多个用户之间共享信息的机制。和/etc/passwd文件类似,/etc/group文件也是一个表格,它记录了系统中的所有组名、相应的GID以及组中所有成员的帐号名,各帐号名之间用“,”分开。Linux定义了一些组拥有特定的访问特权。为了便于进行其他的合作,系统管理员可以向缺省组中添加用户或创建新组。如果用户比较少,那么这项工作相对容易一些,对于那些拥有很多用户的系统,管理GID的工作量很大。

2.5 文件和目录权限

2.5.1权限字段

类型

属主

属组

其他用户

· 类型:说明文件是目录、普通文件还是其他类型的

· 属主:规定了所有者能对该文件的权限

· 属组:规定了所属组的其他成员能对该文件的权限

· 其他用户:规定了既不是所有者又不属于所属组成员的的用户能对该文件的权限

2.5.2数字设置读写运行权限

可以使用数字传递权限信息,数字所代表权限如表2-2

数字

权限

4

读取(read)

2

写入(write)

1

执行(execute)

0

禁止所有权限(deny all)

权限对应数值表2-2

数字1、2和4组合相加可以得到如下表(2-3)七种唯一组合,配合chmod命令使用,可以修改件权限

4 读取

2 写入

1 执行

chmod值

结果权限

0

- - -

(

1

- - x

(

2

- w -

(

(

3

- w x

(

4

r - -

(

(

5

r - x

(

(

6

r w -

(

(

(

7

r w x

权限对应表2-3

2.6 shell脚本

一個Shell脚本主要由原本需要在命令行输入的命令組成,或在一個文本编辑器中,用户可以使用脚本來把一些常用的操作組合成一組序列。

2.6.1 shell中的变量

1) 常用系统变量

$ # :保存程序命令行参数的数目

$ ? :保存前一个命令的返回码

$ 0 :保存程序名

$ * :以("$1 $2...")的形式保存所有输入的命令行参数

$ @ :以("$1""$2"...)的形式保存所有输入的命令行参数

2) 定义变量

shell语言是非类型的解释型语言,不象用C++/JAVA语言编程时需要事先声明变量.给一个变量赋值,实际上就是定义了变量.

在linux支持的所有shell中,都可以用赋值符号(=)为变量赋值.

如:

abc=9 (bash/pdksh不能在等号两侧留下空格 )

set abc = 9 (tcsh/csh)

由于shell程序的变量是无类型的,所以用户可以使用同一个变量时而存放字符时而存放整数.

如:

name=abc (bash/pdksh)

set name = abc (tcsh)

在变量赋值之后,只需在变量前面加一个$去引用.

如:

echo $abc

3) 位置变量

当运行一个支持多个命令行参数的shell程序时,这些变量的值将分别存放在位置变量里.其中第一个参数存放在位置变量1,第二个参数存放在位置变量2,依次类推,shell保留这些变量,不允许用户以令外的方式定义他们.

2.6.2 测试命令

[ -f file ] |当file是一个普通文件时,返回True

[ -r file ] |当file是一个可读文件时,返回True

[ -w file ] |当file是一个可写文件时,返回True

[ x -eq y ] 如果x等于y,返回“真”

2.6.3程序控制

if…then…else

if 命令 运行命令,并返回结束值

then 命令 如果结束值为0,运行then后命令

else 命令 如果结束值非0,运行else后命令

fi if结构结束

case

case xx in 启动case,读取case和in之间的值

a) 命令;; 如果xx与a匹配,运行该命令行中的命令

b) 命令;; 如果xx与b匹配,运行该命令行中的命令

esac case结构结束

第三章 相关协议

3.1 NetBIOS

在局域网上人们开发了一个API函数用来扩展个人计算机的基本输入/输出服务(BIOS),使之能支持多台计算机通过网络共享信息。NetBIOS API定义了三种类型的服务:会话服务、数据报服务和域名服务。

图3-1 Windows NT网络体系结构

NetBIOS会话和数据报服务使得NetBIOS应用之间的通信更加方便。当两个已知结点需要通过可靠性虚拟链路进行可靠的消息传送时,需要使用NetBIOS会话服务。访问共享文件就是一个基于会话的链接的实例。而NetBIOS数据报服务正好相反,当事先无法知道接收者是谁时,将使用NetBIOS数据报服务进行无连接传输,但这样无法保证传输的正确性。

3.1.1 NetBT

NetBIOS本身并不是一个通信协议,而是建立和管理基本网络服务的程序接口。NetBIOS 应用程序之间的消息必须按照传输层协议通过网络传送。目前比较流行的传输层协议包括NetBEUI、IPX、DECNet和TCP/IP。Samba使用RFC1001和1002中定义的基于TCP/IP的NetBIOS(NetBT)作为它的传输服务。

3.1.2 NetBEUI

NetBEUI的全称是NetBIOS Extended User Interface,中文意思就是 NetBIOS 扩展用户接口。它是NetBIOS协议的增强版本,用以封装和扩展NetBIOS API的功能,是向 NetBIOS 接口写数据时必须的一种网络传输协议,曾被许多操作系统采用。在 Windows NT、LAN Manager、Windows for Workgroups 3.11 和 Windows 9X中 NetBEUI 都得到了支持。NetBEUI协议是一种短小精悍、通信效率高的广播型协议,安装后不需要进行设置,特别适合于在“网络邻居”传送数据。

NetBIOS使用令牌环(Token Ring)型的路由,采用广播方式来发送消息,所以,最多只能允许200个节点。同时由于不能选择路由,不能应用到广域网中。

3.2 TCP/IP

3.2.1基本协议与层次

由于Samba NetBIOS服务是通过TCP/IP协议传送的,所以能否理解Linux TCP/IP配置和管理是十分重要的。我们所讨论的TCP/IP是指定义了表3-2所列的服务的基本功能的一组数目众多的协议。在TCP/IP模型中,这些协议所属的层次数目少于OSI参考模型中定义的层数。

IP

网际协议

ICMP

Internet控制报文协议

IGMP

Internet组管理协议

ARP

地址解析协议

RARP

逆向地址解析协议

TCP

传输控制协议

UDP

用户数据报协议

表3-2 基本协议

应用层

Telnet,FTP等

运输层

TCP,UDP

网络层

IP,ICMP,IGMP

链路层

设备驱动程序及接口卡

图3-3 TCP/IP协议族的四个层次

· 链路层通常包括操作系统中的设备驱动程序和计算机中对应的网络接口卡。他们一起处理与电缆(或其他任何传输媒介)的物理接口细节。

· 网络层包括OSI模型中的数据链路层和网络层的一部分。这一层包括三个协议:网际协议(IP),Internet控制报文协议(ICMP),Internet组管理协议(IGMP)。I P和ICMP协议都是无连接协议,提供了网络中的基本数据量和控制。

· 运输层定义了两个协议,传输控制协议(TCP)和用户数据报协议(UDP)。TCP协议保证了数据可靠有序地传输而UDP协议则是不可靠的,并且不保证传送结果是否正确。

· TCP/IP协议包中的应用层和OSI模型中的应用层一样,实现了和用户的接口。

3.2.2滑动窗口

滑动窗口协议是一种改进的连续ARQ协议,它在发送端和接收端分别设定所谓的发送窗口和接收窗口。发送窗口用来对发送端进行流量控制,而发送窗口的大小就代表在还没有收到对方确认信息的情况下发送端最多可以发送多少个数据帧。同理,在接收端设置接收窗口是为了控制可以接收哪些数据帧而不可以接收哪些帧。在接收端只有当收到的数据帧的发送序号落入接收窗口内才允许将该数据帧收下。若接收到的数据帧落在接收窗口之外,则一律将其丢弃。当接收端接收到了接收窗口内起始的那个数据帧后,接收窗口将向前移动。同理,当发送端收到了发送窗口内起始帧对应的确认帧之后,发送窗口也将向前移动。不难看出,只有在接收窗口向前移动时,发送窗口才有可能向前移动。正因为收发两端的窗口按照以上的规律不断地向前滑动,因此这种协议称为滑动窗口协议。

TCP中采用滑动窗口来进行传输控制,滑动窗口的大小意味着接收方还有多大的缓冲区可以用于接收数据。发送方可以通过滑动窗口的大小来确定应该发送多少字节的数据。当滑动窗口为0时,发送方一般不能再发送数据报。

3.3 SMB服务器消息块

为了使Windows 主机间的资源能够共享,微软于1980年开发了SMB(Server Message Block)通信协议,并通过SMB通信协议,使网络上各台主机之间能够共享文件、打印机等资源。目前类似这种资源共享的通信协议还有NFS、Appletalk、Netware等。SMB是Samba生存和工作的基础。SMB是一个会话层、表示层和应用层协议,提供了在网络上的不同计算机之间共享文件、打印机和不同通信资源的手段。

3.3.1面向连接

SMB是一个面向连接的协议,这意味着所有的SMB信息包出现在虚拟回路( VC )的环境内,这个虚拟回路位于客户和服务器之间,信息包按照它们所发送的顺序交付。如果VC中断了,在这个回路内所包含的所有信息都是无效的。考虑下面的4个方面,它们说明了SMB的连接环境:

· 客户和服务器之间的虚拟回路

· 会话UID

· 资源连接树I D(TID)

· 文件标识符( FID)

图3-2 SMB连接环境

3.3.2 协议概述

当用户连接到SMB服务器上的共享资源时,例如通过网上邻居浏览,则在他可以访问共享资源上的任何内容之前,需要进行3个设置步骤。这里说明的步骤指文件和文件共享。图3-3列出了在客户和服务器之间设置S M B连接的步骤。图中的先后流程是从上到下、从左到右。

图 3-3 建立到共享资源的SMB连接

1) Negprot 这是连接到SMB共享资源的第一个步骤,如图3-3的顶部所示,这个步骤就是协商所使用的协议语言。在请求信息包中,客户发送一个文本,其中列出了他所熟悉的所有SMB语言。每个SMB语言(或者协议层)支持某些功能。然后服务器选择它所知道的最高层次的协议对客户做出响应,从前面的列表中指定一个协议编号。

2) sessetup&X 在客户和服务器对双方所支持的协议层达成一致后,下一个步骤就是在双方之间创建会话连接。这个步骤对应于图3-3中的中间部分。客户发送一个“会话设置”请求,其中包含用户名称和一些验证内容,例如口令。服务器力图验证正在提出请求的用户。如果成功,那么服务器向客户返回一个会话UID。这个UID对于每个会话都是唯一的,而且和用户的服务器内部表示没有任何关系。

3) tcon&X 在允许对远程共享资源上的文件进行访问之前所必需的最后一个步骤,在图3-3的底部对其进行了说明,它的目的就是成功地建立到共享资源的树连接。客户发送一个“树连接”请求到服务器,其中包含服务器在成功的会话设置过程中所发出的UID。如果用户对共享资源具有足够的权限,则客户将收到一个树连接标识符( TID)。在所有对TID所指向的资源所包含的文件的所有访问请求中,都将使用这个TID。

当完成这些步骤之后,用户可以在共享资源上执行一些操作,例如打印文档或者打开共享资源中所包含的文件,以进行写入操作。

第四章 Samba概述

NetBIOS是一个为了便于开发基于局域网的资源共享应用程序而设计的API。之后,产生了基于NetBIOS的NetBEUI协议和NBT(NetBIOS OVER TCP/IP)协议。NBT协议进一步发展为SMB和CIFS协议。Windows的局域网默认采用的就是NetBEUI协议,而Samba软件包所使用的就是SMB协议,结果就是,装有SAMBA软件包的机器能够和Windows网络的机器进行通信,让Linux机器在Samba的帮助下和Windows网络共享资源。

Samba属于GNU Public License(简称GPL)的软件,因此可以合法且免费地使用它。Samba将SMB协议搬到Linux上来应用。SMB协议是客户机/服务器型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源。通过“NetBIOS over TCP/IP”使得Samba 不但能与局域网络主机分享资源,更能与全世界的电脑分享资源;因为互联网上千千万万的主机所使用的通讯协议就是TCP/IP。

 4.1 Samba功能 

由于SMB通信协议采用的是Client/Server架构,所以Samba 软件可以分为客户端和服务器端两部分:

· 通过执行Samba 客户端程序,Linux 主机便可以使用网络上Windows 主机所共享的资源;

· 而在Linux主机上安装Samba服务器,则可以使Windows主机访问Samba服务器共享的资源

Samba提供了以下功能: 

1) 共享Linux的文件系统

2) 共享安装在Samba服务器上的打印机

3) 使用Windows系统共享的文件和打印机 

4) 支持 Windows 域控制器和Windows成员服务器对使用Samba 资源的用户进行认证 

5) 支持WINS名字服务器解析及浏览

6) 支持SSL安全套接层协议

4.2 Samba核心

   Samba的核心是两个守护进程smbd和nmbd程序,他们在服务器启动到停止期间持续运行。smbd和nmbd使用的全部配置信息全都保存在smb.conf文件中。

· smbd进程:处理到来的SMB软件包,为使用该软件包的资源与Linux进行协商,提供了SMB的资源共享功能

· nmbd进程:提供NetBIOS域名服务浏览服务,使其它主机(或工作站)能浏览Linux服务器。

4.3 Samba命令

4.3.1 testparm

更改smb.conf文件后,该命令测试配置是否有语法错误

4.3.2 smbclient

# smbclient  -L  //server (或IP地址)

结果在Linux计算机上列表显示出server提供的所有共享信息。 

# smbclient  //win(或IP地址)/share -U  tom

其中tom是Windows 计算机上的用户。系统提示输入tom的密码,输入正确后,系统提示 

smb:>

此时,就可以像使用FTP客户的方法使用smbclient。 

4.3.3 smbmount

知道某台主机所共享的资源后,执行smbmonut命令将远程共享挂载到本地。

#smbmount  //win/share /mnt/smb/win_share

将远程共享//win/share挂载到本地目录/mnt/smb/win_share

这样就可以像访问本机目录一样操作此挂载的目录了。若要卸载已挂载的目录,则执行umount命令即可。 

第五章 Samba核心配置—smb.conf

5.1 smb.conf 文件

smb.conf文件指定了smbd和nmbd守护进程的运行行为。实际上, smb.conf文件位于Samba的核心,smbd、nmbd以及Samba套件内的其他许多工具都使用它。尽管它的参数很多,却不是非常难以理解的。

smb.conf是一个纯ASCII码文件,可以用任何文本编辑器编辑。它的基本格式和Windows的.INI文件相似。其中的配置信息分为若干节,并用该节的名字分开(见表5-1)。每一节都指定了一项服务。有一个特定的global节,它指定了整个系统和管理的缺省配置,以及服务器在工作组或域中所起的作用。文件中的其他节指定了服务器为网络中的客户提供的共享资源。可以通过各种参数来定义每一节的属性。

Global

系统角色和缺省值

shares

Home

Home目录共享

Printers

打印机共享

Name

用户自定义共享

表5-1 smb.conf节

5.2 结构布局

标准smb.conf文件可以包含多个部分,每个部分包含多个参数。Samba配置文件是一个ASCII文本文件,在逻辑上分为节标题,用一对方括号( [ ] )表示。节名称、参数和值将忽略大小写,除非它和操作系统有关。每个节将在下一个节标题之前结束。

图5-1说明了3个内置的节和另一个节。因为节标题忽略大小写,[global]、[GLOBAL]和[Global]都代表相同的节。4个设置:netbios name, workgroup, security和printing都代表全局参数。因而,它们都位于[global]节中,在下一个节的标题[homes]那里结束。最后的[boss1]节表示已经为这个服务器配置的磁盘共享。

[global] start of [global] section

netbios name = EAGLE

workgroup = FOWLPLAY

security = user

printing = bsd

[homes] end of [global] section

start of [homes] section

comment = unix home directory space

path = %H

writeable = yes

valid users = %S

[printers] end of [homes] section

start of [printers] section

comment = printer from /etc/printcap

printable = yes

writeable = no

[boss1] end of [printers] section

start of [boss1] section

comment = shared directory for group boss1

path = /export/boss1

writeable = yes

valid users = @boss1

create mode = 0660

directory mode = 0770

5.2.1 [global]

smb.conf配置文件中的[global]节描述了服务器在工作组和域中的角色,定义了缺省的节参数值,设置了管理性文件的范围、位置和网络选项。角色信息包括服务器的NetBIOS域名和所在工作组的组名,以及服务器是否用作WINS服务器、主浏览器或是域控制器。定义节缺省参数避免了在后面的节中重复定义这些参数。如果需要的话,在某个节中为一个参数指定新值可以覆盖掉缺省值。global节指定了与特定资源共享定义无明显关系的Samba功能和特定。

· netbios name: 标识了服务器的NetBIOS域名

· workgroup: 标识了工作组或域

· guest account: 用于对服务器进行guest访问的用户帐号

· security: 指定登录安全级别是user,share,server,domain

· encrypt passwords: 如果要询问客户的加密口令,需要在smbpasswd 文件中记录加密口令

· log file: Samba日志文件路径

· max log site: 日志文件最大长度(以k字节为单位)

5.2.2 [homes]

利用[ homes]节这个特殊共享,用户可以连接到他们的主目录,而不要求为每个用户定义一个特定的共享。这个过程是这样的:

1) Samba接收一个连接请求。

2) 在smb.conf件中查找所请求的服务名称。

3) 如果没有找到请求名称而配置了[ homes]服务,则Samba查找/etc/passwd文件,以找到匹配的用户名称。

4) 如果找到匹配的用户名称,则创建[homes]共享的副本,然后将名称修改为找到的用户名称。如果没有列出路径,则将其设置为在/etc/passwd条目中列出的用户主目录。

5) 如果没有找到匹配的用户名称,Samba向客户返回“resource in tree connection request”错误消息。

5.2.3 [printers]

第3个内置节[printers]和[homes]类似,差别是它建立的资源类型不同.[ homes]从/etc/passwd中创建主目录,而[printers]从/etc/printcap中创建打印机资源。

5.2.4 smb.conf的剩余部分

[global]之外的任何节都被认为是共享资源(为简短起见,简称为共享),因而,节必须遵循一般的共享命名约定。

为创建自定义共享,需要输入一个节标题,例如[test]和必要的参数,然后, SMB客户可以通过网络访问共享。smb.conf节标题忽略大小写。因而,[test]和[TEST]指相同的服务。这就是为什么共享定义为[test],而PC客户可以使用TEST访问的原因。

根据你对建立文档的认识,你可以在行的第1个非空字符的位置上加入分号(;),或者磅(#)符号来随意插入注释,注释在第1个回车处结束:

; This is a comment

# and so is this

5.2.5 小结

下表总结了已经讨论的smb.conf项的语法。

条目

格式

行中包含位于括号([ ])内的字符

[global]

包含和Samba和默认服务器设置的常规设置相关的参数的特殊节

[homes]

从/etc/passwd得到名称的动态共享

[printers]

从特定的printcap文件中得到打印机名称的动态共享

注释

第一个字符为“; ”或者“#”的行

参数

配置参数 ,其后是等号和一些值

表5-2 smb.conf格式的总结

5.3 变量

在smb.conf中可以使用几个不同的变量。这些宏用%字符标明,它们将在运行配置文件的句法分析期间被替换。例如,当用户leo发送一个会话建立请求时,Samba将分析smb.conf的句法,并在所有出现%U的地方用leo替换。表5-3包含可用的smb.conf变量集合列表。这些变量可以有多种方式使用。变量可以在文本字符串合法的任何地方使用。

变量

说明

%g

用户名称%u的主组

%G

用户名称%U的主组

%H

用户名称%u的主目录

%h

Samba正在运行的Internet主机名称

%L

服务器的NetBIOS名称

%m

客户设备的NetBIOS名称

%M

客户设备的Internet主机名称

%s

当前服务名称

%u

当前服务的用户名称

%v

Samba版本号

%I

以点十进制形式表示的客户设备的IP地址

%d

当前服务进程的ID

表5-3 smb.conf变量

按照前面对变量的解释,对于[homes]共享,就更容易理解:

[homes]

comment = Linux home directory space

path = %H

writeable = yes

valid user = %S

valid users =%S条目将限制连接用户的用户名称必须和服务名称相同。根据[homes]共享的定义,如果Samba有可以在/etc/passwd文件中和共享名称匹配的名称,则使用[homes]定义中的参数来创建共享,但是要用匹配的用户名称重新命名。因而,允许建立连接的唯一用户就是主目录的拥有者。

5.4 参数

除了少数例外,参数的值可以分为3类:

· 第1类是字符串,例如jerry或者Samba server。在文本串中保留大小写。

· 第2类就是布尔参数值,它可以接受是/否、真/假或者1/0条件.布尔值忽略大小写,所以在考虑Samba时,YES,Yes和yes是完全等价的。

· 第3类参数接受数值。你必须检查每个参数,以确定这是整数还是基数,例如,创建模式是一个八进制数字。

参数的形式是name = value,例如:netbios name = EAGLE

仅仅是第1个等号在参数和值的句法分析中使用。值从等号后面的第1个非空字符开始,直至它遇到第1个回车符号时结束,并且,这个回车符号前面没有“ \”字符。因而,下面的设置和netbios name参数的例子是完全等价的。

netbios name = EAGLE

5.5 安全等级和安全参数

SMB协议有两个验证连接的基础模式。Samba使用的模式是通过设置smb.conf文件中的[global]部分的安全参数而定义的。事实上,在Samba所支持的4种模式共享、用户、服务器和域中,有本质差别的仅仅是共享和用户,它们就是两个SMB安全等级。Samba所支持的其他值只是用户模式安全的变种:

security = [share | user | server |domain ]

5.5.1 security=share

在共享级的权限中,客户在树连接请求期间发送一个口令。不需要任何的相关用户的名称。图5-4说明了以共享级权限连接到SMB服务器的两个步骤。

图5-4 share 模式

5.5.2 security=user

当处于用户级安全时,Samba收到传输的用户名称/口令对,并企图按照它的帐号数据库来确认它们。无论用户帐号后端是什么,这个过程都是一样的,尽管身份的验证可能使用导出值,而不是实际的口令本身。如果会话建立确认成功了,客户并不需要在后续的树连接请求期间发送用户帐号信息。

在图5-5中列出了连接到一个用户级SMB服务器的3个步骤:

· 选择一个协议级

· 在客户和服务器之间建立会话

· 最后配置到资源的连接

图5-5 user模式

5.6 用户名称和口令

5.6.1 用户名称级

在会话建立请求的信息包转储中可以看见,一些客户以全部大写的字母发送用户名称。默认情况下,Samba首先以全部小写的形式查找这个用户名称,然后以第1个字母大写的形式进行查找, 所需要准备的是一个参数,它规定了用户名称中的大写字母的最多数目。然后,Samba力图使用一种强制的方法,即尝试从1到定义值之间的大写字母的各种排列情况,从而找到用户名称。

设置用户名称级为4,并将其应用在Bob的帐号名称上:

username level = 4

可以假设,在会话建立请求中传输BOBACCT作为用户名称。Samba力图在系统口令文件或者任何正在使用的帐号后端)中找到下列名称:

· b o b a c c t

· B o b a c c t

· b O b a c c t

· b o B a c c t

· b o b A c c t

· b o b a C c t

· b o b a c C t

· b o b a c c T

· B O b a c c t

· B o B a c c t

· B o b A c c t

在找到用户名称之后,查找过程结束。username level的值越大,所尝试的大写字母/小写字母组合就越多,因而在可以报告成功或者失败之前的延迟时间就会越长。如果所有的linux帐号名称都以全部小写字母的标准格式出现,则没有必要使用这个参数。

5.6.2 口令加密

通过在Samba中提供NTLM加密口令支持,可以避免在建立S M B会话的过程中使用纯文本口令。这种方法减少了口令被监听的可能而增加了整个网络的安全性;但是它也增加了维护Linux和NTLM口令空间并保持其一致性工作的复杂度。使用加密口令需要维护另一个含有NTLM口令的口令文件。这必须通过标准的Linux口令维护活动完成。

如果给定相同的输入,则产生LanManager或者Windows NT信息口令的算法总是得到相同的结果。这意味着,如果将口令testpass加密200次,每次加密所得到的口令是相同的。这就是所谓的明码等价口令。

下面的例子将阐明这点。你可以研究一下图5-7中的流程。

图5-7 用户级加密流程

1) 客户向服务器发送协商协议请求。

2) 如果服务器支持口令加密,则在响应信息包中会设置合适的位以指明这一点,而且服务器在信息包中包含一个8位的质询。质询是随机产生的,而且每个客户是不同的。

3) 图5-8说明了客户的响应产生过程。然后客户使用适合协商的协议级的加密口令,其后追加5个空格(这将创建一个168位的流)以产生3个不同的56位DES键,然后用它们来加密8字节质询。3个8字节结果被连接为2 4字节响应形式,然后将这个响应发送给服务器。

图 5-8 客户响应产生过程

4) 然后服务器使用保存在磁盘上的用户口令的加密版本执行相同的步骤。产生的24字节流将和客户发送的字节进行比较,以确定客户是否知道正确的口令。

5) 如果服务器的2 4字节流和客户发送的响应互相匹配,则接受用户会话设置请求。如果它们不能匹配,那意味着客户并不知道正确的口令。

可以逐步重复这个过程。这里说明它仅仅是为了证明一点:用户的口令永远不会在网络上传送,增加了安全性。

5.6.3 口令加密参数

如果决定使用口令加密,在默认情况下这个选项是关闭的,必须在smb.conf文件中启用它,方法是将encrypt password设置为yes:

encrypt passwords = yes

在启用口令加密之后,必须跟踪第2个用户帐号文件。这个文件通常称为smbpasswd.如果决定将包含加密口令的文件放置在非默认位置上,或者为其取非默认名称,可以使用smb passwd file参数来定义加密口令文件。这个值必须是指向SMB口令的绝对路径:

smb password file = /etc/smbpasswd

5.7 可访问性和可访问参数

5.7.1 可访问性

为处理客户对连接到共享的请求, S a m b a首先确定所请求的共享是否存在。下面的简单方法决定是否这样:

· 扫描smb.conf文件,查找匹配所请求的共享名称的节。如果找到一个,则使用它。

· 如果没有找到共享,则检查在smb.conf文件中是否包含一个[homes]节。如果是这样,则查找passwd文件,以确定共享名称是否匹配用户名称。如果是这样,则复制[homes]共享细节,使用新的共享。

· 如果仍然没有找到共享,则检查smb.conf文件中是否包含[printers]节。如果是这样,则检查所请求的共享是否和printcap文件中的某个打印机匹配。如果是这样,则复制[printers]共享,并使用所复制的共享。由于本论文只讨论文件共享,所以对打印机共享不做进一步介绍。

· 如果仍然没有找到共享,则检查是否存在默认的服务。如果是这样,则修改默认的服务名称以匹配所请求的服务,并使用它。

· 如果没有找到任何共享,Samba向客户返回一个非法的网络名称错误。

下一步, Samba将确定是否应该给予某个客户访问所找到的共享的权限,以及他们应该赋予什么样的权限。访问和所允许的文件访问模式是由smb.conf文件中的许多参数所控制的。

5.7.2 可访问参数

· guest account

这个全局参数设置guest帐号的名称。这个参数可以在全局节中设置,也可以在单独的共享节中设置。在共享节中设置的Guest帐号将覆盖任何全局guest参数。这个参数的默认值是在编译时指定的,而且默认情况下设置为nobody。使用这个参数的一个例子如下:

guest account = pcguest

它规定pcguest帐号必须作为guest帐号使用。

· guest ok

这个共享级的参数规定,在没有提交用户名称和口令的情况下是否接受对共享的访问。当同意客户进行guest访问时,他们将作为guest帐号访问共享下的文件。guest ok的同义词就是public。这个参数的默认值是no。

· hosts allow

可以使用hosts allow参数来定义一系列主机,并允许这些主机连接到特定的服务上。如果在[global]节中使用了这个参数,则它适用于所有的服务,而无论它是否是单独共享设置。参数为点分十进制数形式表示的IP地址列表,它们可以是完整的地址或者子网网络地址。只要Samba可以分析名称,还可以使用主机名称,而不是IP地址。这通常意味着输入完全限定的域名称( F Q D N)作为参数值。使用EXCEPT关键字来排除某些主机也是可能的。默认的特性是接受来自任何I P地址的连接。下面是一个例子:

hosts allow = 192.168.1.73 queso.my.net 191.168. EXCEPT 191.168.2.

这个设置允许来自两个特定主机192.168.1.73和queso.my.net的连接,以及来自B类子网191.168上任何主机的连接,但排除来自C类子网191.168.2主机的连接。

· hosts deny

hosts deny参数是对hosts allow参数的补充。它提供和hosts allow值中的EXCEPT关键字一样的功能,但是范围更广。其语法和hosts allow的格式相同。默认值是不拒绝来自任何主机的连接:

hosts deny = 192.168.3. 192.168.1.72

· read list

这个共享级参数是一个用户列表,并赋予他们对共享的只读权限。就是说,没有赋予他们对共享的写入权限,即使共享是可写的也是如此。

这个参数没有默认值。使用这个参数的一个例子如下:

read list = fred @guests

它规定fred和guests组中的所有用户都被赋予对共享的只读权限。

· read only

这当设置这个参数时,说明客户不能对共享写入。默认情况下,这个参数为yes,这意味着共享是只读的。就是说,如果没有为共享提供一个值,则它是只读的。

· valid users

这个共享级参数列出了允许访问共享的用户列表。 以@开始的名称解释为一个NIS网络组,如果没有在NIS中找到,则解释为一个Linux组。默认情况下,这个参数是空的,这意味着任何用户都可以访问共享。使用这个参数的例子如下:

valid users = fred @accounts

它规定,仅仅允许用户fred和accounts组中的所有用户可以访问共享。

· writeable

这个共享级参数说明是否允许客户对共享写入。参见read only参数。

默认情况下,这个参数设置为no,这意味着默认情况下共享是只读的。

· write list

这个共享级参数规定了用户列表,并赋予其中的用户对共享的读写权力,而无论read only参数的值是什么。如果一个用户同时位于readlist和writelist中,则赋予他写入权限。默认情况下,这个参数没有值,这意味着所有的用户遵循read only参数值的设定。

5.8 浏览(Browse)

在SMB协议中,计算机为了访问网络资源,就需要了解网络上存在的资源列表(例如在Windows下使用网络邻居查看可以访问的计算机),这个机制就被称为浏览(Browse)。虽然SMB协议中经常使用广播的方式,但如果每次都使用广播的方式了解当前的网络资源(包括提供服务的计算机和各个计算机上的服务资源),就需要消耗大量的网络资源和浪费较长的查找时间,因此最好在网络中维护一个网络资源的列表,以方便查找网络资源。只有必要的时候,才重新查找资源,例如使用Windows下的查找计算机功能。   但没有必要每个计算机都维护整个资源列表,维护网络中当前资源列表的任务由网络上的几个特殊计算机完成的,这些计算机被称为Browser,这些Browser通过记录广播数据或查询名字服务器来记录网络上的各种资源。 Browser并不是事先指定的计算机,而是在普通计算机之间通过自动进行的推举产生的。不同的计算机可以按照其提供服务的能力,设置在推举时具备的不同权重。为了保证一个Browser停机时网络浏览仍然正常,网络中常常存在多个Browser,一个为主Browser(Master Browser),其他的为备份Browser。

5.8.1浏览参数

· local master = yes|no

这个参数指定nmbd是否试图成为本地主浏览器,默认值是yes,如果设为no则samba服务器就永远都不会成为本地主浏览器。但即使设置了yes,也不等于samba服务器就会成为本地主浏览器。只是参与本地主浏览器选择。

· os level = n

n的值是个整数,决定了nmbd是否有机会成为本地广播区域的工作组里的本地主浏览器,默认值是零,零则意味着nmbd失去浏览选择。如果要nmbd更有机会成为本地主浏览器的话,可以设为65。

第六章 文件共享的设计与实现

6.1 设计目标

6.1.1 基本目标

假设windows客户端有财务,教师,学生三个部门,对应予三个不同的用户组,分别为caiwu,teacher,student,并且每个部门有两个用户(如下图6-1):

部门

Windows用户

所属组

财务

caiwu01,caiwu02

caiwu

教师

teacher01,teacher02

teacher

学生

student01,student02

student

图6-1 部门用户情况

Linux服务器上有共享目录:

· caiwu

· teacher

· exchange

· public

windows用户访问Linux共享文件希望能做到以下要求:

1) 服务器采用user模式验证方式,每个用户可以访问自己的home主目录,并且只有该用户能访问其主目录,并具有完全的权限,而其他人不能看到你的主目录。

2) 建立一个财物部门的目录caiwu,希望caiwu组,teacher组和student02可以访问,但只有caiwu01有写的权限。

3) 建立一个教师部门的目录teacher,只有teacher组的人可以访问并读写,还有student02也可以访问,但外人看不到那个目录。

4) 建立一个文件交换目录exchange,所有人都能读写,包括guest用户,但每个人不能删除别人的文件。

5) 建立一个公共的只读文件夹public,所有人只读这个文件夹的内容。

windows客户机上有共享目录picture

Linux用户访问windows共享文件希望做到以下要求:

1) Linux用户能读windows共享文件picture

2) Linux用户能写windows共享文件picture

整体结构如下图:

Linux操作系统 windows操作系统

linux用户 用户caiwu01

用户caiwu02

文件共享 用户teacher01

user模式 用户teacher02

用户student01

用户student02

6.1.2 优化目标

1) Samba能随服务器开机关机或重起时自动启动停止或重新启动文件共享的服务。

2) 实现文件共享后,不合理的设计会影响服务器性能。导致文件传输速度远远低于FTP传输速度,失去了Samba服务器优势。因此根据实际硬件和网络情况,找到影响服务器性能的瓶颈因素,然后加以设计调整以提高服务器与客户机之间的文件传输速率,减少与FTP传输速度的差距。

6.2 设计思想

6.2.1 基本目标设计思想

· 在Linux计算机上安装Samba,构建服务器,编写启动脚本

· 采用user模式安全级别

· 加密密码机制

· 合理运用变量与参数设计smb.conf文件,实现用户的可浏览性可访问性等权限

6.2.2 优化目标设计思想

· 编写Samba启动脚本,并将其添加到文件init.d中去并且与各个系统启动级别建立链接

· 修改套接口设置,寻找合适的缓冲区大小,借以修改滑动窗口大小,以提高性能

6.3 基本目标设计过程

6.3.1 编译安装Samba

由于Samba是开放免费的,可到Samba官方网站去下载新的源代码进行编译安装:

1) 解压tar包

2) tar zvxf samba-3.0.0.tar.gz 解压后有一个samba-3.0.0文件夹,转到该目录下source目录

cd samba-3.0.0/source

3) 编译安装

· ./configure \ --prefix=/usr \ --bindir=/usr/bin \ --sbindir=/usr/sbin \ --libexecdir=/usr/libexec \ --datadir=/usr/share/samba \ --sysconfdir=/etc/samba \ --localstatedir=/usr/local/samba/var \ --libdir=/usr/lib \ --with-automount \ --with-smbmount \ 编译时通过参数设定安装目录,并且将一些模块一起编译

· make

· make install

6.3.2 建立用户相关目录和组

· 添加财物、教师、学生三个用户组

#groupadd caiwu

#groupadd teacher

#groupadd student

· 每个组添加两个用户

#useradd caiwu01 -g caiwu

#passwd caiwu01

#useradd caiwu02 -g caiwu

#passwd caiwu02

#useradd teacher01 -g teacher

#passwd teacher01

#useradd teacher02 -g teacher

#passwd teacher02

#useradd student01 -g student

#passwd student01

#useradd student02 -g student

#passwd student02

查看/etc/passwd可得:

· 建立所需共享目录

#mkdir /home/samba

#mkdir /home/samba/caiwu

#mkdir /home/samba/teacher

#mkdir /home/samba/exchange

#mkdir /home/samba/public

我们为了避免麻烦可以在这里把上面所有的文件夹的权限都设置成777,通过samba灵活的权限管理来满足设计要求要求。

6.3.3 添加Samba用户和密码

由于使用加密机制,必须有一个保存加密密码的文件smbpasswd为用户登录验证提供标准。

使用smbpasswd -a caiwu01的命令为6个帐户分别添加到Samba加密用户中,添加过程如图6-2:

smbpasswd –a caiwu01

smbpasswd –a caiwu02

smbpasswd –a teacher01

smbpasswd –a teacher02

smbpasswd –a student01

smbpasswd –a student02

图6-2 添加过程

若你的系统已经存在了大量的用户,可以

cat /etc/passwd | mksmbpasswd.sh > /etc/smbpasswd

生成 /etc/smbpasswd 文件。这时其密码还没有设置。需要 smbpasswd user 来设置密码。

6.3.4 编写smb.conf文件

[global] #global段整体定位Samba

workgroup = workgroup

#我的网络工作组名称

server string = Samba server

#我的服务器名描述

security = user

#使用用户验证机制,即用户连接服务器时须提交合法的用户名称与密码

encrypt passwords = yes

#使用加密密码机制

smb passwd file = /etc/samba/smbpasswd

加密后的密码存放在smbpasswd文件中

local master = yes

#将其设置为主浏览器,以提供工作组中的成员共享情况

os level = 64

#提高level级别,帮助Samba服务器在浏览器的选举过程获得成功

[homes] #homes段满足第1要求

comment = Home Directoriesbrowseable = no

#其他人不能浏览主目录writable = yes

valid users = %S

#保证只有自身能访问,%S在执行时会替换为访问用户的名称create mode = 0664

#指定新创建的文件模式为文件属主和属主所在用户组可读写,其他用户只能读

directory mode = 0775

#指定目录的模式为属主和属主所在用户组可读写执行,其他用户只能读和执行

[caiwu] #caiwu段满足我们的第2要求

comment = caiwupath = /home/samba/caiwupublic = no

valid users = @caiwu,@teacher,student02

#caiwu合法用户为财务组教师组成员和学生02

write list = caiwu01printable = no

[teacher] #teacher段能满足我们的第3要求

comment = teacherpath = /home/samba/teacherpublic = no

write list = @teacherbrowseable = no

#浏览共享文件时,teacher将被隐藏

valid users = @teacher,student02printable = no

[exchage] #exchange段基本满足我们的第4要求 comment = exchange file directorypath = /home/samba/exchangepublic = yes

#guest可以访问

writable = yes

#exchange段基本能满足我们的第4要求,但不能满足每个人不能删除别人的文件这个条件,即使里设置了mask也是没用,其实这个条件只要Linux设置一个粘着位就行

chmod -R 1777 /home/samba/exchange

注意这里权限是1777,类似的系统目录/tmp也具有相同的权限,这个权限能实现每个人能自由写文件,但不能删除别人的文件这个要求

[public] #public段能满足我们的第5要求

comment = read only publicpath = /home/samba/publicpublic = yesread only = yes

#所有用户只能读

6.3.5 检查启动Samba

到此为止,已基本按设计目标完成Samba的安装与配置任务,使用testparm命令检查是否有语法错误

#testparm

无语法错误后启动Samba服务以便测试,启动命令如下图所示:

6.4 优化目标设计过程

启动流程图:

6.4.1 编写Samba启动脚本

#检查源文件functions是否存在

if [ -f /etc/init.d/functions ] ; then

. /etc/init.d/functions

elif [ -f /etc/rc.d/init.d/functions ] ; then

. /etc/rc.d/init.d/functions

else

exit 0

fi

# 执行网络配置文件

. /etc/sysconfig/network

# 检查网络是否打开

[ ${NETWORKING} = "no" ] && exit 0

# 检查文件smb.conf是否存在

[ -f /etc/samba/smb.conf ] || exit 0

# 检查是否对smb.conf文件有些权限

[ -w /etc/samba/smb.conf ] || exit 0

RETVAL=0

start() {

KIND="SMB"

echo -n $"Starting $KIND services: "

daemon smbd -D

RETVAL=$?

echo

KIND="NMB"

echo -n $"Starting $KIND services: "

daemon nmbd -D

RETVAL2=$?

echo

[ $RETVAL -eq 0 -a $RETVAL2 -eq 0 ] && touch /var/lock/subsys/smb || RETVAL=1

return $RETVAL

}

stop() {

KIND="SMB"

echo -n $"Shutting down $KIND services: "

killproc smbd

RETVAL=$?

echo

KIND="NMB"

echo -n $"Shutting down $KIND services: "

killproc nmbd

RETVAL2=$?

[ $RETVAL -eq 0 -a $RETVAL2 -eq 0 ] && rm -f /var/lock/subsys/smb

echo ""

return $RETVAL

}

restart() {

stop

start

}

case "$1" in #根据第一个参数执行不同函数调用

start)

start

;;

stop)

stop

;;

restart)

restart

;;

esac

exit $? #返回上条语句执行情况

添加运行级符号链接,用于在机器启动和关闭时自动运行和停止Samba:

chmod 754 /etc/rc.d/init.d/smb &&

ln -s /etc/rc.d/init.d/smb /etc/rc.d/rc0.d/K48smb &&

ln -s /etc/rc.d/init.d/smb /etc/rc.d/rc3.d/S24smb &&

ln -s /etc/rc.d/init.d/smb /etc/rc.d/rc6.d/K48smb

rc.d中rc0,rc3,rc6分别对应inittab文件中三个运行级别(如下表6-3),分别定义了以某种方式运行时所需停止和启动的服务,K代表停止服务,S代表启动服务,后面的数字代表执行的顺序。

运行级

说明

0

关闭

1

单一用户模式(一般仅用于管理目的)

2

多用户模式,不允许使用网络

3

多用户模式,允许使用网络

4

没有用到的用户级

5

多用户模式,允许使用网络,X-Windows方式(图形登陆界面)

6

重新引导

表6-3 Red Hat Linux运行级

6.4.2 寻找最佳缓冲区大小

socket options参数中有以下两项:

1) SO_RCVBUF套接字操作接收缓冲区套接字选项控制用于接收数据的缓冲区的大小。

2) SO_SNDBUF套接字操作

发送缓冲区套接字选项控制用于发送数据的缓冲区的大小。

即允许设置发送和接收缓存的大小。接收缓存的大小是该连接上所能够通告的最大窗口大小。而窗口大小将会影响TCP性能。如今并没有一个规定说明多大的窗口会使传输达到最好的效果,不同的环境与设施会有不同的结果,只有通过多次修改尝试,得出适合的大小。

逐渐增加缓冲区大小,找到合适的缓冲区大小能使读写速度达到较好平衡。依次按照下表所列缓冲区大小进行修改,记录下读写速度:

次数

1

2

3

4

5

缓冲区大小(KB)

2048

4096

8192

16384

32768

读速度(KB/S)

470

540

550

455

370

写速度(KB/S)

320

285

460

430

470

平均速度(KB/S)

395

412.5

505

442.5

420

表6-5 共享文件读写速度表

根据上表数据绘出直观图:

缓冲区大小与传输速的关系图

观察图得到如下结论:

· 缓冲区小于8192KB时读写速度逐步提高

· 缓冲区等于8192时得到最高读写速度

· 缓冲区大于8192KB后,再增加缓冲区大小,性能反而有所下降

于是确定最佳缓冲区大小为8192KB

第七章 功能与性能测试

7.1 测试环境

计算机名

操作系统

角色

所属工作组

Server

Redhat linux9.0操作系统

Samba服务器

workgroup

dongying

Windows XP professional

Windows客户机

workgroup

7.2 Samba服务器功能测试

7.2.1 登陆Samba服务器

1) 在windows客户机dongying上打开网络邻居,查看工作组计算机情况:

2) 双击Samba Server图标,以某个用户名称登陆(用户caiwu01)登陆

3) 即可看到如下共享文件:

财务部门目录

用户caiwu01主目录

交换目录

公共目录

7.2.2 测试结果

分别以六个用户登录测试共享文件,结果如下:

用户caiwu01:

· 对主目录caiwu01有完全操作权限

· 可读写caiwu目录

· 看不到teacher目录,也不可访问该目录

· 可读写exchange自己创建的文件,但只能读其他用户文件

· 只读public文件

用户caiwu02:

· 对主目录caiwu02有完全操作权限

· 可读caiwu目录

· 看不到teacher目录,也不可访问该目录

· 可读写exchange自己创建的文件,但只能读其他用户文件

· 只读public文件

用户teacher01:

· 对主目录teacher01有完全操作权限

· 只读caiwu目录

· 看不到teacher目录,在地址栏直接输入地址\\Server\teacher,可以读写teacher目录

· 可读写exchange自己创建的文件,但只能读其他用户文件

· 只读public中文件

用户teacher02:

· 对主目录teacher02有完全操作权限

· 只读caiwu目录

· 看不到teacher目录,在地址栏直接输入地址\\Server\teacher,可以读写teacher目录

· 可读写exchange自己创建的文件,但只能读其他用户文件

· 只读public中文件

用户student01:

· 对主目录student01有完全操作权限

· 不可访问caiwu目录

· 看不到teacher目录,也不可访问该目录

· 可读写exchange自己创建的文件,但只能读其他用户文件

· 只读public中文件

用户student02:

· 对主目录teacher02有完全操作权限

· 只读caiwu目录

· 看不到teacher目录,在地址栏直接输入地址\\Server\teacher,可以读teacher目录

· 可读写exchange自己创建的文件,但只能读其他用户文件

· 只读public中文件

7.3 Samba客户端功能测试

7.3.1 查看工作组计算机

使用smbclient命令查看服务器共享与所在工作组情况:

测试结果:发现windows客户机dongying,希望与之实现共享

7.3.2 查看共享情况

使用smbclient查看windows客户机dongying共享情况:

测试结果:发现共享文件夹picture,准备访问

在实验过程中,原先smbclient –L //dongying命令不能执行,在/etc/hosts文件中添加:

202.115.16.230dongying

解决了该问题(22.115.16.230为dongying的IP地址)

7.3.3 读写共享文件

在linux系统中使用smbclient //dongying/picture命令访问共享文件夹picture

使用get命令文件默认下载到用户主目录

测试结果:Linux用户可以读写共享文件picture

7.4 Samba性能测试

将缓冲区设为8192KB后,重新启动服务器,查看运行进程:

Samba服务已经启动,实现了Samba随服务器开机启动的目标。

传输速度测试文件为test.jpg,大小为154KB

· FTP传输速度为:

· Samba未优化前传输速度:

· Samba优化后传输速度:

综合以上数据得下表:

类型

FTP

优化前

优化后

优化前后速率提高率

读文件(KB)

1157

920

1010

10%

写文件(KB)

980

647

809

25%

共享文件传输速率表

可以看出经优化后Samba的传输性能得到了较大的提高

第八章 结论

通过前面测试结果表明:

Samba完全达到设计目标要求,实现了Linux与windows安全可靠的文件共享。既可以通过网上邻居让windows计算机访问Linux计算机共享文件,也可以借助Samba客户端命令smbclient访问windows计算机共享文件。

经优化后Samba服务器性能得到了较好的改善,能随服务器开机自动启动服务,以方便各网络用户并且共享文件读写速度能得到了显著的提高。

但依然存在如下问题需要进一步研究:

1) 每次使用某个用户名称和密码通过网上邻居进入服务器共享文件后,会记住这条连接,不方便其他用户使用,须通过net ues删除这条连接后才能重新登录。

2) 虽然优化后性能有所改善,但与FTP的传输速的仍有差距,要想进一步提高性能,必须从内核着手。

3) 只是在两台计算机上实现了windows与Linux文件共享,能否在较大复杂网络中实现有待进一步验证。

参考文献

(1) W. Richard Stevens. 《TCP/IP Illustrated, Volume 1: The Protocols》. 北京:机械工业出版社,2000-4

(2) Gerald Carter.《Samba 24学时教程》。机械工业出版社.2000-7

(3) McGraw-Hill.《Samba工具使用指南:UNIX与Windows NT网络互连》.译者沈立等.机械工业出版社.2000-7

(4) Robert Eckstein,David Collier-Brown,Peter Kelly《Using Samba》.1st Edition November 1999 published by O'Reilly &amp.2000

(5) Michael Jang.《红帽 Linux 9 从入门到精通》.邱仲潘等译.电子工业出版社.2003

(6) John Muster.《UNIX和Linux权威教程》.王玉馨 郑建超等译.清华大学出版社.2003

(7) 谢希人.《计算机网络》。电子工业出版社.2003-6

(8) 沈芝慎. UNIX技术-网络应用篇. 北京:电子工业出版社.1998

英语原文与翻译

Using Samba, 2nd Edition

By Jay Ts, Robert Eckstein, and David Collier-Brown2nd Edition, February 2003 O'Reilly & Associates, ISBN: 0-596-00256-4

If you are a typical system administrator, then you know what it means to be swamped with work. Your daily routine is filled with endless hardware incompatibility issues, system outages, data backup problems, and a steady stream of angry users. So adding another program to the mix of tools that you have to maintain may sound a bit perplexing. However, if you're determined to reduce the complexity of your work environment, as well as the workload of keeping it running smoothly, Samba may be the tool you've been waiting for.

A case in point: one of the authors of this book used to look after 70 Unix developers sharing 5 Unix servers. His neighbor administered 20 Windows 3.1 users and 5 OS/2 and Windows NT servers. To put it mildly, the Windows 3.1 administrator was swamped. When he finally left -- and the domain controller melted -- Samba was brought to the rescue. Our author quickly replaced the Windows NT and OS/2 servers with Samba running on a Unix server, and eventually bought PCs for most of the company developers. However, he did the latter without hiring a new PC administrator; the administrator now manages one centralized Unix application instead of fifty distributed PCs.

If you know you're facing a problem with your network and you're sure there is a better way, we encourage you to start reading this book. Or, if you've heard about Samba and you want to see what it can do for you, this is also the place to start. We'll get you started on the path to understanding Samba and its potential. Before long, you can provide Unix services to all your Windows machines -- all without spending tons of extra time or money. Sound enticing? Great, then let's get started.

Samba is an extremely useful networking tool for anyone who has both Windows and Unix systems on his network. Running on a Unix system, it allows Windows to share files and printers on the Unix host, and it also allows Unix users to access resources shared by Windows systems.

Although it might seem natural to use a Windows server to serve files and printers to a network containing Windows clients, there are good reasons for preferring a Samba server for this duty. Samba is reliable software that runs on reliable Unix operating systems, resulting in fewer problems and a low cost of maintenance. Samba also offers better performance under heavy loads, outperforming Windows 2000 Server by a factor of 2 to 1 on identical PC hardware, according to published third-party benchmarks. If all that weren't enough, Samba has a very nice cost advantage: it's free. Not only is the software itself freely available, but also no client licenses are required, and it runs on high-quality, free operating systems such as Linux and FreeBSD.

After reading the previous paragraph, you might come to the conclusion that Samba is commonly used by large organizations with thousands of users on their networks—and you'd be right! But Samba's user base includes organizations all over the planet, of all types and sizes: from international corporations, to medium and small businesses, to individuals who run Samba on their Linux laptops. In the last case, a tool such as VMware is used to run Windows on the same computer, with Samba enabling the two operating systems to share files.

The types of users vary even more—Samba is used by corporations, banks and other financial institutions, government and military organizations, schools, public libraries, art galleries, families, and even authors! This book was developed on a Linux system running VMware and Windows 2000, with Adobe FrameMaker running on Windows and the document files served by Samba from the Linux filesystem.

Does all this whet your technological appetite? If so, we encourage you to keep reading, learn about Samba, and follow our examples to set up a Samba server of your own. In this and upcoming chapters, we will tell you exactly how to get started.

Samba is a suite of Unix applications that speak the Server Message Block (SMB) protocol. Microsoft Windows operating systems and the OS/2 operating system use SMB to perform client-server networking for file and printer sharing and associated operations. By supporting this protocol, Samba enables computers running Unix to get in on the action,communicating with the same networking protocol as Microsoft Windows and appearing as another Windows system on the network from the perspective of a Windows client. A Samba server offers the following services:

· Share one or more directory trees

· Share one or more Distributed filesystem (Dfs) trees

· Share printers installed on the server among Windows clients on the network

· Assist clients with network browsing

· Authenticate clients logging onto a Windows domain

· Provide or assist with Windows Internet Name Service (WINS) name-server resolution

The Samba suite also includes client tools that allow users on a Unix system to access folders and printers that Windows systems and Samba servers offer on the network.

Today, the Samba suite revolves around a pair of Unix daemons that provide shared resources—called shares or services—to SMB clients on the network. These are:

smbd

A daemon that handles file and printer sharing and provides authentication and authorization for SMB clients.

nmbd

A daemon that supports NetBIOS Name Service and WINS.It also assists with network browsing.

使用Samba,第二版

Jay Ts, Robert Eckstein和David Collier-Brown著

2003年二月 第二版

O'Reilly & Associates, 国际标准图书编号: 0-596-00256-4

如果你是一个典型的系统管理员,那么就会明白什么是陷入工作的沼泽。你每天的日程都会被无止境的硬件不兼容,系统停电,数据备份问题塞的满满,还要面对一群群愤怒的用户。因此要在你维护的混合工具中添加另一个程序听起来有点复杂。然而,如果你决心减少你工作环境的复杂性以及使其平稳运行的工作量,Samba可能就是你所期待的工具。

举个例子:本书作者之一曾经要照顾70UNIX开发人员,他们共享5个UNIX服务器。他的邻居管理着20个Windows 3.1 用户,5个OS/2和Windows NT服务器。说得婉转些,Windows 3.1的管理员会忙得不可开交。最后他离开了——域控制器烧化了——就要Samba来急救了。作者很快将Windows NT和OS/2服务器替换为运行Samba的UNIX服务器,最后为公司大多数开发人员买了个人计算机。然而他却不需要为此雇用一个新的PC管理员;管理人员现在只需管理一个集中的UNIX应用程序,而不是50台分散的电脑。

如果你正面临网络问题并且确信会有更好的解决办法,我们鼓励你开始看这本书。或者如果你已经听说过Samba,想知道它能为你做些什么,这本书也是个不错的开始。我们会让你从了解Samba及它的潜能开始。不久,你就可以为所有的Windows机器提供UNIX服务—全都不需要额外的时间和金钱。听起来挺诱人的?好吧,让我们开始吧。

对于那些网络上有Windows和Unix两个系统的人来说,Samba是一个极其有用的网络工具。它运行在Unix操作系统上,使Windows能够使用Unix主机共享的文件和打印机,同样使Unix用户能够访问Windows的共享资源。

尽管使用Windows服务器为包含Windows客户的网络提供文件和打印机服务是很自然的,但是我们更好的理由使用Samba服务器来实现这些功能。Samba是一个可靠的软件,它依赖于UNIX操作系统,只要较低的维护费用却产生很少的问题。Samba在重载也有较好的表现。依照公布的第三方基准,在相同的硬件条件下,Samba要比Windows 2000服务器好2到1点因数。如果以上理由都不够充分,Samba还有一个非常好的费用优势:它是免费的。不仅软件本身自由免费可得,而且不需要任何的用户端许可证,能运行在例如Linux 和 FreeBSD这样高质量免费开放的操作系统上。

在读完先前的段落之后,你可能会认为Samba一般被用在大型的机构组织,他们的网络上有数千的用户——这样认为是没错的。不过Samba基本用户包括了全球各种类型和大小的组织:从跨国公司,到中小型企业,到在膝上Linux电脑上运行Samba的个人用户。对于个人用户,他们使用类似VMware的工具在相同计算机上运行Windows,然后借助Samba实现两个操作系统的文件共享。

Samba用户类型更加多变——公司,银行,其他财政机构,政府部门,军队组织,学校,公共图书馆,美术展览馆,家庭甚至作家!本书的开发基于运行在Vmware上的Linux系统和Windows 2000,以及运行在Windows的Adobe FrameMaker 和Samba提供的Linux文件系统文档文件。

所有的这些有没有激起你的技术食欲?若是如此,我们鼓励你继续阅读和学习Samba有关知识,然后跟随我们的例子建立一个你自己的Samba服务器。在这章及下面的章节中,我们将会告诉你如何正确开始。

Samba是一组使用服务器信息块(SMB)协议的应用程序。微软公司 Windows 操作系统和 OS/2 操作系统使用 SMB协议运行客户/服务器网络来实现文件和打印机共享与联合操作。在这个协议的支持下,Samba能使运行UNIX操作系统的计算机加入该行列,使之能与使用相同网络协议的windows计算机进行交互并且从windows用户看来,该UNIX计算机就象是网络上的另一台windows机器。一个 Samba 服务器提供下列的服务:

· 共享一棵或多棵目录树

· 共享一棵或多棵分布式文件系统树

· 为windows客户共享服务器的打印机

· 帮助客户进行网络浏览

· 对登录到windows域的客户进行验证

· 提供或帮助WINS服务器进行域名解析

Samba组件还包括客户工具。它使UNIX系统的用户能访问Windows和Samba服务器在网络上提供的文件夹和打印机。如今Samba围绕一对Unix进程进行考虑。这对进程为网络中的SMB客户提供共享资源(称为共享或服务)。它们分别为:

smbd

一个控制文件和打印机共享并且为SMB客户进行认证和授权的进程。

nmbd

一个支持网路基本输入输出系统名字服务和WINS的进程,能协助进行网络浏览。

致谢

本论文工作是在导师卢显良教授的精心指导和悉心关怀下完成的,导师严谨求实的治学态度,渊博的科学知识,对科学前沿敏锐的洞察力和正直宽厚的为人,给学生留下了深刻的印象,学生将终身受益。值此论文完稿之际,谨向导师致以深深的敬意和衷心的感谢。

还要感谢教研室窦凌云师兄以及同做毕设的刘金山,徐景倩,王永恒,桂涛,夏鑫在实验期间对我的关心与帮助,感谢室友在毕设期间给予的理解与支持。

最后还要感谢我的父母在我的求学道路上给予的最无私的关怀与奉献,爸爸妈妈,你们辛苦了!同时还要感谢我的姑父姑妈,在成都的四年里给予的生活上的关爱和学习上的指导。

感谢所有帮助我支持我爱护我的人!

附录 完整smb.conf文件

# This is the main Samba configuration file. You should read the

# smb.conf(5) manual page in order to understand the options listed

# here. Samba has a huge number of configurable options (perhaps too

# many!) most of which are not shown in this example

#

# Any line which starts with a ; (semi-colon) or a # (hash)

# is a comment and is ignored. In this example we will use a #

# for commentry and a ; for parts of the config file that you

# may wish to enable

#

# NOTE: Whenever you modify this file you should run the command "testparm"

# to check that you have not made any basic syntactic errors.

#

#======================= Global Settings =====================================

[global]

# workgroup = NT-Domain-Name or Workgroup-Name

workgroup = workgroup

# server string is the equivalent of the NT Description field

server string = Samba Server

# This option is important for security. It allows you to restrict

# connections to machines which are on your local network. The

# following example restricts access to two C class networks and

# the "loopback" interface. For more examples of the syntax see

# the smb.conf man page

; hosts allow = 192.168.1. 192.168.2. 127.

# if you want to automatically load your printer list rather

# than setting them up individually then you'll need this

printcap name = /etc/printcap

load printers = yes

# It should not be necessary to spell out the print system type unless

# yours is non-standard. Currently supported print systems include:

# bsd, sysv, plp, lprng, aix, hpux, qnx, cups

printing = cups

# Uncomment this if you want a guest account, you must add this to /etc/passwd

# otherwise the user "nobody" is used

; guest account = pcguest

# this tells Samba to use a separate log file for each machine

# that connects

log file = /var/log/samba/%m.log

# Put a capping on the size of the log files (in Kb).

max log size = 0

# Security mode. Most people will want user level security. See

# security_level.txt for details.

security = user

# Use password server option only with security = server

# The argument list may include:

# password server = My_PDC_Name [My_BDC_Name] [My_Next_BDC_Name]

# or to auto-locate the domain controller/s

# password server = *

; password server =

# Password Level allows matching of _n_ characters of the password for

# all combinations of upper and lower case.

; password level = 8

; username level = 8

# You may wish to use password encryption. Please read

# ENCRYPTION.txt, Win95.txt and WinNT.txt in the Samba documentation.

# Do not enable this option unless you have read those documents

encrypt passwords = yes

smb passwd file = /etc/samba/smbpasswd

# The following is needed to keep smbclient from spouting spurious errors

# when Samba is built with support for SSL.

; ssl CA certFile = /usr/share/ssl/certs/ca-bundle.crt

# The following are needed to allow password changing from Windows to

# update the Linux system password also.

# NOTE: Use these with 'encrypt passwords' and 'smb passwd file' above.

# NOTE2: You do NOT need these to allow workstations to change only

# the encrypted SMB passwords. They allow the Unix password

# to be kept in sync with the SMB password.

unix password sync = Yes

passwd program = /usr/bin/passwd %u

passwd chat = *New*password* %n\n *Retype*new*password* %n\n *passwd:*all*authentication*tokens*updated*successfully*

# You can use PAM's password change control flag for Samba. If

# enabled, then PAM will be used for password changes when requested

# by an SMB client instead of the program listed in passwd program.

# It should be possible to enable this without changing your passwd

# chat parameter for most setups.

pam password change = yes

# Unix users can map to different SMB User names

; username map = /etc/samba/smbusers

# Using the following line enables you to customise your configuration

# on a per machine basis. The %m gets replaced with the netbios name

# of the machine that is connecting

; include = /etc/samba/smb.conf.%m

# This parameter will control whether or not Samba should obey PAM's

# account and session management directives. The default behavior is

# to use PAM for clear text authentication only and to ignore any

# account or session management. Note that Samba always ignores PAM

# for authentication in the case of encrypt passwords = yes

obey pam restrictions = yes

# Most people will find that this option gives better performance.

# See speed.txt and the manual pages for details

socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192

# Configure Samba to use multiple interfaces

# If you have multiple network interfaces then you must list them

# here. See the man page for details.

; interfaces = 192.168.12.2/24 192.168.13.2/24

# Configure remote browse list synchronisation here

# request announcement to, or browse list sync from:

#a specific host or from / to a whole subnet (see below)

; remote browse sync = 192.168.3.25 192.168.5.255

# Cause this host to announce itself to local subnets here

; remote announce = 192.168.1.255 192.168.2.44

# Browser Control Options:

# set local master to no if you don't want Samba to become a master

# browser on your network. Otherwise the normal election rules apply

local master = yes

# OS Level determines the precedence of this server in master browser

# elections. The default value should be reasonable

os level = 64

# Domain Master specifies Samba to be the Domain Master Browser. This

# allows Samba to collate browse lists between subnets. Don't use this

# if you already have a Windows NT domain controller doing this job

; domain master = yes

# Preferred Master causes Samba to force a local browser election on startup

# and gives it a slightly higher chance of winning the election

; preferred master = yes

# Enable this if you want Samba to be a domain logon server for

# Windows95 workstations.

; domain logons = yes

# if you enable domain logons then you may want a per-machine or

# per user logon script

# run a specific logon batch file per workstation (machine)

; logon script = %m.bat

# run a specific logon batch file per username

; logon script = %U.bat

# Where to store roving profiles (only for Win95 and WinNT)

# %L substitutes for this servers netbios name, %U is username

# You must uncomment the [Profiles] share below

; logon path = \\%L\Profiles\%U

# Windows Internet Name Serving Support Section:

# WINS Support - Tells the NMBD component of Samba to enable it's WINS Server

; wins support = yes

# WINS Server - Tells the NMBD components of Samba to be a WINS Client

#Note: Samba can be either a WINS Server, or a WINS Client, but NOT both

; wins server = w.x.y.z

# WINS Proxy - Tells Samba to answer name resolution queries on

# behalf of a non WINS capable client, for this to work there must be

# at least oneWINS Server on the network. The default is NO.

; wins proxy = yes

# DNS Proxy - tells Samba whether or not to try to resolve NetBIOS names

# via DNS nslookups. The built-in default for versions 1.9.17 is yes,

# this has been changed in version 1.9.18 to no.

dns proxy = no

# Case Preservation can be handy - system default is _no_

# NOTE: These can be set on a per share basis