samba配置

来源:百度文库 编辑:神马文学网 时间:2024/04/29 18:19:32

samba server的配置文件在/etc/samba/下的smb.conf打开一个终端中输入: gedit/etc/samba/smb.conf也可以用vi编辑.由于文件太长,我把个人认为没有用的东东删除了,主要是一些注释.下面偶解释一下主要字段的意思.由于我的这个文件配置过了,可能你的机器和我的不一样.
======================= Global Settings=====================================

[global] //设置samba服务整体环境

workgroup = hackase //设置工作组名

server string = angel server //服务器的名说明

 

; hosts allow = 192.168.1. 192.168.2. 127. //限制可访问此服务的IP范围,默认是全部

允许的,要是想设设置去掉前面的";"

printcap name = /etc/printcap //打印机配置文件

load printers = yes //是否共享打印机

 

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

printing = cups //打印机的类型.标准打印机类型包括以上几种.

 

; guest account = pcguest //pcguest为用户名.可改去掉前边的";"让用户以

pcguest身份匿名登录,但保证/etc/passwd中有此人.

 

log file = /var/log/samba/%m.log //为登录服务器的用户建立不同的日志文件.

 

max log size = 0 //日志文件的大小,"0"代表无限制

 

//以下是smb.conf文件对服务器安全级别的设置

 

security = SHARE //安全性的级别共四种.share、user、server、domain

 

; password server = 密码验证服务器.

; password level = 8 //密码级别

; username level = 8

 

encrypt passwords = yes //用户密码加密,当然也可以不加密

 

smb passwd file = /etc/samba/smbpasswd //将密码服务器设置为samba server.

需要这个东东来指定验证文件.这个是文件的路径,如果samba server是指定的win

server这个不须要

 

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

 

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*

 

pam password change = yes

 

; username map = /etc/samba/smbusers //如果每个windows用户在samba服务器

中有帐户这个可以不设

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

 

obey pam restrictions = yes

 

; interfaces = 192.168.12.2/24 192.168.13.2/24 如果多网段要在这里列出

 

; remote announce = 192.168.1.255 192.168.2.44

 

; local master = no

 

; os level = 33

 

; domain master = yes

 

; preferred master = yes

 

; domain logons = yes

 

; logon script = %m.bat

 

; logon script = %U.bat

 

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

 

; wins support = yes //wins server支持

 

; wins server = w.x.y.z

 

; wins proxy = yes //wins 代理设置

 

dns proxy = no //dns代理设置

 

; preserve case = no

; short preserve case = no

 

; default case = lower

 

; case sensitive = no

 

#============================ Share Definitions==============================

[homes] //用户访问自已目录的设置

comment = Home Directories //说明(以下同理)

browseable = no//设定目录可不可以别人浏览

writeable = yes//用户写入自己的权限

valid users = %S

create mode = 0664

directory mode = 0775

 

 

; [netlogon] //此段域用户登录目录设置

; comment = Network Logon Service

; path = /usr/local/samba/lib/netlogon

; guest ok = yes

; writable = no

; share modes = no

 

;[Profiles]

; path = /usr/local/samba/profiles

; browseable = no

; guest ok = yes

 

[printers] //打印机设置

comment = All Printers

path = /var/spool/samba

browseable = no

 

printable = yes

 

;[tmp] //用户共享资源设置

; comment = Temporary file space

; path = /tmp //可以自定义目录,去掉前边的";"就OK了

; read only = no //是否只读或可写

; public = yes

 

;[public] //用户共享资源设置

; comment = Public Stuff

; path = /home/samba

; public = yes

; writable = yes

; printable = no

; write list = @staff

 

 

;[fredsprn]

; comment = Fred's Printer

; valid users = fred

; path = /home/fred

; printer = freds_printer

; public = no

; writable = no

; printable = yes

 

;[fredsdir]

; comment = Fred's Service

; path = /usr/somewhere/private

; valid users = fred

; public = no

; writable = yes

; printable = no

 

;[pchome]

; comment = PC Directories

; path = /usr/local/pc/%m

; public = no

; writable = yes

 

;[public]

; path = /usr/somewhere/else/public

; public = yes

; only guest = yes

; writable = yes

; printable = no

 

;[myshare]

; comment = Mary's and Fred's stuff

; path = /usr/somewhere/shared

; valid users = mary fred

; public = no

; writable = yes

; printable = no

; create mask = 0765

 

[my work] //偶的东东

comment = is me work

path = /root/my work

valid users angel

public = yes

writeable = yes

 

了解smb.conf的文件就好办了.我们开始对samba server的四个安全级别分别讲解.

 

1、share级配置

 

这个在四个等级中是最低的,方法也是最简单.我们只要对smb.conf文件修改一下就可以了.

 

workgroup = hackase

server string = angel server

hosts allow = 192.168.1. //限制192.168.1的IP网段可以防问

printcap name = /etc/printcap

load printers = yes //共享打印机

printing = cups //打印机用linux标准的

guest account = angel

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

max log size = 20

security = share

===================================================================

其他的设置默认就可以了,也可以像我把所有的注释删除.[tmp]这个字段的";"去掉.

路径可以更改. 重启一下服务 /etc/samba/smb restart //

 

service smb restart 也可

 

用testparm测试我们配置的文件是否正确:

===================================================================

[root@localhost root]# testparm //测试时[printers]注释掉了所以这里没有.

Load smb config files from /etc/samba/smb.conf

Processing section "[homes]"

Processing section "[tmp]"

Processing section "[my]"

Loaded services file OK. //如有错误,会在这列出错误的地方.

Press enter to see a dump of your service definitions

==================================================================

用smbclient命令查看网络共享情况

===================================================================

[root@localhost etc]# smbclient -L localhost //本机名为localhost

Password:

Domain=[HACKBASE] OS=[Unix] Server=[Samba 2.2.7a]

 

Sharename Type Comment

--------- ---- -------

tmp Disk Temporary file space

my Disk is me

IPC$ IPC IPC Service (angel server)

ADMIN$ Disk IPC Service (angel server)

root Printer Home Directories

 

Server Comment

--------- -------

 

Workgroup Master

--------- -------

=======================================================================

2、user级配置

 

user比share级安全级别高一点点,很简单的,可以在share基础上改一下就可以了.

改一下security = share字段为:security = user.在加上如下字段:

guest account = angel //机器上有这个用户名,如果你没有那就建一个吧!

encrypt passwords=yes

smb passwd file=/etc/samba/smbpasswd

(1)生成口令文件.

 

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

 

本命令将生成口令文件"/etc/samba/smbpasswd" 这个就是我们

刚加上的"smb passwd file=/etc/samba/smbpasswd"

(2)我们知道建账户是建在etc/passwd文件里,我们须要用smbpasswd命令

为刚才建立的账名设置samba server口令. 格式为:smbpasswd angel

 

(3)重启samba server服务

 

user级的也OK了,你可以用testparm and smbclient命测试.windows用户想

访问就要输入angel and passwd.这个就不是谁都可以访问你的共享

 

资源了.

 

3、server 级配置

server级比user级也高那么一点,只需要user级配置上修改一下就OK了.

 

(1)security = user字段为:security = server

 

(2)加上password server = ****** //密码服务器,这个可以是你的windows主域控制器,也

可以是别一个samba server服务器(名子无意思)

 

(3)注释smb passwd file=/etc/samba/smbpasswd

 

(4)重启samba server服务,你可以用testparm and smbclient命测试.

 

好了,又完事一个现在如果一台windows机器登录******(password server =

******设置的)域服务器的时候,也就同登录上了samba server,如

 

果你以是*****主控域的计算机,那你就可以输入你自己的账号密码打开samba server的文件了,

但是你要保证*****和sambs server的账号

本文来自: 站长(http://www.qqcf.com)详细出处参考:http://study.qqcf.com/web/240/26752.htm

如果你正在处理一个跨操作平台的网络,网络中可能包括Windows,Linux和UNIX的工作站,服务器,那你肯定对怎样在这些不同平台上实现网络打印服务感兴趣

上星期,介绍了怎样在Linux上实现网络打印服务。在这部分中,你将学习怎样为Windows95/98/NT/2000的用户实现这项服务。通过修改你服务器上的Samba配置,你可以让网络中的Windows用户共享你的本地打印机。

请注意,我假设你已经在Linux和Windows之间成功的安装和配置了Samba的文件共享。如果你还没有安装和配置Samba,或者你的Samba不能正常工作,请看文章“省钱之道:用Linux的Samba代替NT服务器”。为了实现我们的目标,我也假设你已经成功安装了一个本地打印机。

配置Samba实现本地打印机共享

在开始之前,确信你的Samba运行正常,并且Windows用户可以在网络邻居的列表中看到Samba服务器。我将介绍修改smb.conf文件,使得网络中的Windows用户可以通过Samba服务器使用打印机。

为了配置smb.conf文件实现共享一个本地打印机,检查你Linux下的打印机是否工作正常。下一步,在Windows客户端安装同一个打印机。这样做的话,你需要Windows下打印机的安装盘。开始安装打印机,点击开始,选择打印机,并且双击添加打印机。

在打印机安装向导中,按照屏幕上的说明一步一步,直到在列表中选择打印机的名称。要点:写出打印机的准确名称,注意大小写(名称对大小写是敏感的)。例如,Windows中使用的Epson Stylus740打印机应该输入如果需要,在安装完成后要重启机器。在Samba服务器上,以根用户登录(或是超级用户),用你习惯的文本编辑器打开/etc/smb.conf或者/etc/samba/smb.conf。例如,vi /etc/smb.conf。

在[global]这一节,找到打印名称这行,如果你想使Windows用户可以使用所有本地打印机,去掉这一行,并且如果文件中没有这些内容的话,添加上:

printcap name = /etc/printcap

load printers = yes

如果只想让其他用户用一个打印机,你不要删掉那行,也不用添加什么。需要注意的是在大多数从BSD发展而来的Linux系统上,Samba假设你在用默认的打印系统。如果你用的是其他打印系统,在Linux的打印系统配置中,找到相应的行,改变默认设置(bsd)。选择包括sysv,plp,lprng,aix,hpux和qnx。如果不能确认你的Linux配置正在使用的打印系统,你可以查看一下相关文件,但大多数情况下都是默认的。

下一步,使所有的本地打印机都实现共享。所有的打印机都在/etc/printcap文件的打印机列表中,在/etc/smb.conf文件尾添加以下服务条目:

[printers]

writable = no

path = /tmp

printable = yes

如果只要共享一个打印机,在smb.conf文件的[global]小节添加一个自动服务行。和在/etc/printcap中的相同,这行指定你想使用的打印机名称。下行中在lp填写默认打印机的名称:

auto services = lp

而且,仿照下面创建一个打印机定义,添加到[services]小节中(在/etc/smb.conf文件末尾):

[lp]

printable = yes

comment = Epson Stylus (Color)

public = yes

writable = no

browseable = yes

printer driver=EPSON Stylus COLOR 740

定义中的打印机名是lp,这个名称必须和上面自动服务行中的名称相一致,并且也要和在/etc/printcap文件中定义的打印机名称相同(或打印机的别名)。需要注意的是,打印机驱动行需要你正确的输入Windows中的打印机信息(在这里,EPSON Stylus COLOR740,还是需要注意大小写)。

最后,保存/etc/smb.conf文件。退出文本编译器,键入/etc/init.d/rc.d/smb重启Samba。

检测安装

在其中一台Windows工作站上检测你的安装成果

。用用户的Windows网络用户名和密码登录,双击网络邻居,双击Linux系统的图标后看看Samba打印机是否显示出来。如果点击右键选择安装,你可以看到打印机安装的对话框。在开始安装的时候,用户不需要关心打印机的牌子和型号,因为打印机的名称以Windows认可的某种方式定义。但是,用户还是需要打印机的安装盘,如果Windows本来就支持这种打印机的话,只要Windows的安装盘就可以了。

打印机驱动器定位

打印机驱动器定位是Samba的一个选项,使你能够指定打印机驱动软件的位置。虽然你可以在共享的Linux目录中选择适合打印机驱动器和相关文件的选项,但这个选项对许多打印机驱动器不起作用,而且你也可能因为在网络中没有得到使用软件的许可而侵犯了作者了的版权。

Samba打印故障处理

如果在Linux系统上你的打印机可以正常工作,但不能通过Samba实现打印服务,用超级用户登录,用文本编译器打开/etc/smb.conf,仔细检查你的输入。运行testparm/etc/smb.conf,仔细查看输出结果,找出错误标志。确信/dev/null对任何用户都是可写的(做法是:键入ls -l/dev/null,按回车,查看文件读取权限)。Samba通过/dev/null来忽略不需要的输出。如果这个文件不是对所有用户可写的,用超级用户登录,键入chmod a+w/dev/null,按回车。如果你的打印机只输出代码而不是你想要的图形,在/etc/samba.conf文件的打印机定义中添加postscript = yes。

 

 

一、Samba简介

给Windows客户提供文件服务是通过samba实现的,凡架设过MS Windows网络的人都知道MSWindows网络的核心是SMB/CIFS,而samba也是一套基于UNIX类系统、实现SMB/CIFS协议的软件,作为UNIX的克隆,Linux也可以运行这套软件。和NT相比较,samba的文件服务功能一点也不亚于NT,效率很高,借助Linux本身,可以实现用户磁盘空间限制功能,NT到4.0版本还是无法实现这点,samba由samba小组(http;//samba.org)开发,更新速度很快,目前最高的版本是2.0.7版,是2000年4月25日发布的,每个更新版本在功能上都所增强,也修复了已知的BUG。本章所涉及到的技术内容以2.0.3版蓝本。目前各种Linux发布大都包含这套软件,如果你的Linux发布是ReadHat,则是以RPM形式提供,可以在安装Linux的时候选择这个软件,也可以单独安装,以root身份。rpm -isamba-2.0.3-8.i386.rpm,就可以了。

如果你的Linux发布没有包含这个软件,可以从ftp;//samba.org/pub/samba去下载。另外,您的Linux的核心要支持smbfs,一般各种发布已经把smbfs的支持包含进去,如果没有包含的话,就要重新编译核心,获得smbfs支持,具体怎么样编译核心请参阅相关文章。

由于本章的内容是基于文件服务器, 重点介绍samba在文件服务器上的应用。目前samba还不能完全代替WindowsNT,尤其是把samba设置成PDC,最好不要这样做,NT PDC非常复杂,samba还只能实现其中一部分功能。希望未来的版本可以做到。

这套软件由一系列的组件构成,主要的组件有:

smbd SMB服务器,给SMB客户提供文件和打印服务;

nmbd, Netbios 名称服务器,提供Netbios名称服务和浏览支持,帮助SMB客户定位服务器;

smbclient, SMB客户程序,用来存取SMB服务器上的共享资源;

testprns 测试服务器上打印机访问的程序;

testparms 测试Samba配置文件的正确性的工具;

smb.conf samba的配置文件;

smbstatus 这个工具可以列出当前smbd服务器上的连接;

make_smbcodepage 这个工具用来生成文件系统的代码页;

smbpasswd 这个工具用来设定用户密码;

swat samba的Web管理工具。


二、怎么样配置samba

实际上,samba安装完后,只要把/etc/smb.conf这个文件里的workgroup=XXXXX这个参数该为您的工作组,启动samba就可以运行了,但这根本不能符合我们的需要。samba的配置都是围绕smb.conf来进行的,配置方式有很多种,如果熟练的话可以手工编辑这个文件,也可以通过linuxconf来配置,而且samba本身带了一个基于web的管理工具swat,使用901端口,安装完samba后,它会在您机器的/etc/services的尾部加上一条:

swat 901/tcp #Add swat service used via inetd在inetd.conf里填上:

swat stream tcp nowait.400 root /usr/sbin/swat swat在浏览器的地址栏里键入 http://youhostname:901/就可以进入swat对samba进行管理。下面就介绍怎么样手工配置这个文件以达到让samba成为一个符合需求的文件服务器。

先看看一小段的smb.conf:

# smb.conf example   [global]   workgroup = WORKGROUP   server string= Samba Server   hosts allow = 192.168.1. 192.168.2. 127.   loadprinters = no   printcap name = /etc/printcap   guest account = guestlog file = /usr/local/samba/var/log.%m   max log size = 50   security =user   socket options = TCP_NODELAY   [homes]   comment = HomeDirectories   browseable = yes   writable = yes   [printers]   comment =All Printers   path = /usr/spool/samba   browseable = no   guest ok =no   writable = no   printable = yes   printer driver = Epson LQ-1600K[tmp]   comment = Temporary file   path = /tmp   read only = nopublic = yes   [public]   comment = Public Zone   path = /home/sambapublic = yes   writable =yes从上面的例子可以看出,smb.conf的格式和Windows里的INI文件很像,含有多个段,每个段由段名开始,一直到下个段名,每个段名放在方括号中间。段里的参数的格式是:名称 = 值。

文件里的每个段名、参数以及注释都只能占一行,换句话说就是一行里只能写一个段名或参数或注释,如果一行写不下或不想把一行写的过长,可以在行尾用""来表示续行。段名和参数名不分大小写。可以有注释,注释以;或#开始到该行结束。

除了[global]段外,所有的段都可以看作是一个共享资源,段名是该共享资源的名字,而段里的参数就是共享资源的属性。[global],[homes] 和 [printers]这三个段是比较特殊的,把在后面说明。而下面的注意事项则是针对普通的段。

一个共享资源段由要提供访问的路径和附加的访问权限组成,可以是文件资源或打印资源。共享资源段可以给guest级的用户服务,一般来说guest用户是不需要密码的,如果给guest提供服务,guest的权限是根据UNIX里的guest帐户来赋予。如果共享资源段不是给guest提供服务的,则访问这样的段需要客户的密码。由于赋予用户对共享资源段的访问权限是基于该用户在UNIX系统的对该资源的访问权限,所以服务器是不能赋予超过UNIX系统赋予该用户的权限的。

例如:

下面的共享资源段的例子定义了一个文件共享,用户对路径/home/abc有写入的权限,共享资源段名是abc,也就是共享名。

[abc]   path = /home/abc   writeable = true1.段

而这下面的段定义了一个打印共享,共享是只读的,但可打印,就是说唯一允许的写访问就是打开、写入和关闭脱机文件。

[myprinter]   path = /usr/spool/public   read only = true   printable= true   guest ok = true特殊段:

[global] 段

在这个段的参数是全局有效的。

[homes] 段

当用户请求一个共享时,服务器把在存在的共享资源段中去寻找,如果找到匹配的共享资源段,就使用这个共享资源段。如果找不到,就把请求的共享名看成是用户的用户名,并在本地的password文件里找这个用户,如果用户名存在且用户提供的密码是正确的,则以这个home段克隆出一个共享提供给用户。这个新的共享的名称是用户的用户名,而不是home,如果home段里没有指定共享路径,就把该用户的宿主目录(homedirectory)作为共享路径。

通常的共享资源段能指定的参数基本上都可以指定给[home]段。但一般情况下[home]段有如下配置就可以满足普通的应用。

[homes]   writeable = yes注意,如果在[home]段里加了guess access =ok,所有的用户都可以不要密码就能访问所有的宿主目录!

[printers] 段

该段用于提供打印服务。

如果定义了[printers]这个段,用户就可以连接在printcap文件里指定的打印机。当一个连接请求到来时,smbd去查看配置文件里已有的段,如果和请求匹配就用那个段,如果找不到匹配的段,但[home]段存在,就用[home]段。否则请求的共享名就当作是个打印机共项名,然后去寻找适合的printcap文件,看看请求的共享名是不是个有效的打印共享名。如果匹配,那么就克隆出一个新的打印机共享提供给客户。

注意,[printers]服务必须是printable,如果指定为其它,服务器把拒绝加载配置文件。

通常指定的路径应该任何人都有写入权限。

[printers]   path = /usr/spool/public   writeable = no   guest ok =yes   printable = yes   printer driver = Epson LQ-1600K()


2.参数

段里可以指定的参数非常多,有些参数是全局段才可以用的,而有些参数是任何段都可以用的,先介绍一些基本参数,明白这些基本参数,基本上就可以一般性地应用samba了,如果要更精细地控制samba,可以继续参考一些高级配置。另外,本章假设读者对MS WINDOWS网络是熟悉的,不熟悉的可以参考相关资料。

全局参数

2.1 基本参数

workgroup

说明:这个参数用来指定samba所要加入的工作组,另外如果在设置了security=domain,则workgroup可以指定域名。例如:workgroup = wgp1。指明工作组为wgp1 。

netbios name

说明:这个参数指定samba的netbios名,可以不设置,samba把会使用机器的DNS名的第一部分,如果你的机器的DNS名是host1.domain,就用host1 例如:netbios name = public。指定NetBios名为public。

server string

说明:这个参数指定在浏览列表里的机器描述,和MS WINDOWS里配置网络时的描述是一样的。可以是任何字符串。也可以不填,samba会用缺省的 samba %v,即samba尾随它的版本号,不过如果要模仿NT象一点的话,可以填一下。例如:

server string = Master File Server2.2 安全参数

security

说明:这是个重要的安全配置参数,有4个值,分别是share、user、server和domain,定义了samba的基本安全级,通常是user。

security = user这是samba的默认配置,这种情况下要求用户在访问共享资源之前资源必须先提供用户名和密码进行验证。

securtiy = share这是几乎没有安全性的级别,任何用户都可以不要用户名和口令访问服务器上的资源

security =server和user安全级类似,但用户名和密码是递交到另外一个SMB服务器去验证,比如递交给一台NT服务器。如果递交失败,就退到user安全级,从用户端看来,server和user这两个级别是没什么分别的。

security = domain这种安全级别要求网络上存在一台NT PDC,samba把用户名和密码递交给NT PDC去验证。

从用户端看来,user级以上的安全级其实是没什么分别的,只是服务器验证的方式不同,但这三种安全级都要求用户在本Linux机器上也要系统帐户。否则是不能访问的。

encrypt passwords

说明:是否对密码进行加密,samba本身可以维护一个密码文件/etc/smbpasswd,如果不对密码进行加密则在验证会话期间客户机和服务器之间传递的是明文密码,samba直接把这个密码和Linux里的/etc/passwd密码文件进行验证。这其中有些问题,之一就是在Windows95 OS/R2以后的版本和Windows NTSP3以后的版本缺省都不传送明文密码,要让这些系统能传送明文密码必须在其注册表里更改。对于Windows 95 OS/R2以上的版本,可以在[HKEY_LOCAL_MACHINESystemCurrentControlSetServicesVxDVNETSUP]里加一个十六进制值Enable PlainTextPassword=00000001。对于WINDOWS NT SP3 以上的版本,可以在[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesRdrParameters]里加一个十六进制值EnablePlainTextPassword=00000001,这样就可以让它们能在网络上传送明文密码。

另外,还有一件很烦人的事情就是NT系统,如果一个服务器是处于用户级别上的安全模式,又不支持密码加密传送的话,NT把拒绝和服务器连接,除非服务器向用户提示要密码。这在实际应用中会出现什么情况呢。如果你在NT机器有个帐户user1,在Linux机器上也有个帐户user1,密码都是一样,但你去和Linux机器上的共享连接的时候,NT就会提示你错误的密码或未知的用户名,要求你再次输入用户名和密码,NT才和服务器连接。如果你映射了Linux上的共享资源作为NT的一个网络驱动器,那么NT在下次启动试图重新连接这个网络驱动器时,又会提示你错误密码或未知用户名....烦得很。所以一般samba的应用基本都设定为yes:encrypt passwords = yes。

当然,samba的用户是基于Linux系统用户的,sambad的加密工具是smbpasswd,最简单的用法是smbpasswd -ausername 这里的username必须是/etc/passwd里存在的用户名,然后会提示输入密码和确认密码,会生成一个新的密码条目,放在/etc/smbpasswd这文件里。另外,samba提供了一个工具—mksmbpasswd.sh,这是shell脚本,可以从/etc/passwd文件里生成smbpasswd文件,用法是:cat /etc/passwd | mksmbpasswd.sh >/etc/smbpasswd。把passwd里的用户都加到smbpasswd里。从安全起见,smbpasswd这个文件的存取权限请设为600。 

username map

说明:这个参数可以让你指定一个文件包含来自客户机的用户名与Linux系统用户名之间的映射,文件的格式是每行一个映射,映射的格式是:Linux usename = client username ... 。

例如 root = adminadminstrator这样,当客户机的用户是admin或administrator时,就被转换成root。这个功能对用户管理很方便,可以让管理员不需要对客户或服务器上的用户帐号大动干戈。 文件名通常用默认的/et/smbusers password level说明:这是针对一些SMB客户像Windows forWorkgroup、OS/2之类而设的,像WFW这样的系统在发送用户密码的时候,会把密码转换成大写再发送,这样就和samba的密码不一致,这个参数可以设定密码里允许的大写字母个数,这样samba就根据这个数目对接收到的密码进行大小写重组,以重组过的密码尝试验证密码的正确性。这个值越大,组合的次数就越多,验证时间就越长,安全性也越低!

例如:如果这个值是2,用户的密码是abcd,但发送出去其实是ABCD,samba就会把这个ABCD进行大小写重组,组合的密码可以是下列:Abcd, aBcd, abCd, abcD, abcd, ABcd, AbCd, AbcD,aBCd,aBcD,abCD。

所以如果没有必要,就把这个值定为是零(一般应该是没这必要,现在谁还用WFW这样的系统)。这样的话samba只尝试两次,一个是接收到的密码,另一个尝试的是这个密码都是小写的情况。即使是这样,也还存在着一定的安全性问题。

guest account

说明:这个参数指定guest级帐户的用户名,可以是nobody、ftp,guest级别的用户可以不要密码就访问给定的guest服务。

host allow

说明:这个参数指定那些机器可以访问samba,例如:host allow = 192.168.1. 127.指定192.168.1.0里的所有机器都可以访问。如果不允许子网里的一台机器访问,可以这样设:host allow = 192.168.1.EXCEPT 192.168.1.33 禁止192.168.1.33访问。

host deny

说明:和host allow 相反是指定那些机器不能访问,格式一样。

2.3 日志记录参数

log file

说明:这个参数指定日志文件的名称,路径一般放在/var/log/samba,可以在文件名后加个宏%m表示对每台访问samba的机器都单独记录一个日志文件。 例如: log file =/var/log/samba/log.%m,如果host1、host2这台机器访问过samba,就会留下log.host1、log.host2这两个日志文件。

max log size 说明:这个参数指定最大日志文件的大小,以KB为单位。例如:max log size = 50k。

2.4 协议参数

announce version

说明:指定服务器的宣告版本号,默认是4.2,如果在WINDOWS的网上邻居里查看samba服务器的属性,就可以看见在类型一行里有Windows NT 4.2 Server 的字样。一般不要去更改它,如果你要让samba模拟NT像一点的话,可以改成4.0。

2.5 计算机浏览参数

os level

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

preferred master

说明:这个参数指定nmbd是否是工作组里的首要的主浏览器,如果指定为yes,nmbd在启动的时候就强制一个浏览选择。指定该参数为yes时最好把domain master 也指定为yes。用这个参数的时候要注意的是在samba服务器所在的子网上如果有其它的机器(不管是WINDOWSNT还是另一个samba服务器)也指定为首要的主浏览器时,这些机器都会因为争夺主浏览器而在网络上广播,引起不必要的网络性能下降。

local master

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

domain master

说明:这个参数让nmbd成为一个域浏览器,取得各本地主浏览器的浏览列表,并把整个域的浏览列表递交给各本地主浏览器。默认值是no。如果网络上已经有一台NT PDC,就不要把这个参数设为yes,争不过NT PDC的。

另外,如果你对计算机浏览服务不是很清楚的话,可以参考NT网络管理资料。

2.6 共享资源设置参数

comment

说明:就是对共享的描述,可以是任意的字符串。例如:comment = Share Stuff。

path

说明:path是提供共享服务的路径,可以用%u %m这样的宏来代替路径里的unix用户和客户机的Netbios名。

例如:如果我们不打算用home段做为客户的共享,而是在/home/share/下为每个Linux用户以他的用户名建个目录,作为他的共享目录,这样path就可以写成:path = /home/share/%u; 。

用户在连接到这共享时具体的路径会被他的用户名代替,要注意这个用户名路径一定要存在,否则,客户机在访问时会找不到网络路径。同样,如果我们不是以用户来划分目录,而是以客户机来划分目录,为网络上每台可以访问samba的机器都各自建个以它的netbios名的路径,作为不同机器的共享资源,可以这样写path:path = /home/share/%m 。

writeable

说明:指定共享路径是否可以写,值是yes或no。

browseable

说明:指定共享是否可以浏览,默认是yes。

available

说明:指定共享资源是否可用,默认是yes,设为no则关闭该资源的共享服务,用户无法连接到该资源上。

exec 和 postexec,root preexec 和 root postexec

说明:指定在用户与共享资源在连接和断开时在服务器上执行一个命令,这两对参数很有用,区别是root preexec 和rootpreexec 是以root的权限运行。比如在服务器把cdrom作为共享,但cdrom是不能一直处于装配状态的。我们可以这样设置

[cdrom]   comment = Server Cdrom   path = /mnt/cdrom   public = yesbrowseable = yes   root preexec = /bin/mount -t iso9660 /dev/cd0/mnt/cdrom   root postexec = /bin/umount /mnt/cdrompublic

说明:这个参数指明是否允许guest帐户访问,值为yes或no,另一个和public相同意义的参数是guestok。打印共享还有些专用的打印参数,阐述如下:

load printers

指定在samba启动时是否自动把printcap文件里的所有打印机加载,从而可以在浏览清单里看到所有的打印机,默认是yes。printable 指定用户能不能打印,默认是no,要让一个打印共享可以让用户使用,必须设为yes。print name 打印机名。

printer driver

打印机的驱动类型,这个参数可以让WINDOWS知道远程打印机上的类型,具体的值可以参考在WINDOWS里安装打印机出现选择打印机类型时的打印机类型。比如Espon LQ1600K打印机:

printer driver = Espon LQ-1600K以上就是samba的一些常用的配置,通过这些配置参数,我们已经可以建立起一个一般应用的文件服务器。虽然还有很多参数没有提到,但samba本身可以用缺省值。 启动samba,可以用/usr/sbin/samba start来启动samba,也可以用ntsysv来启动。

三、samba 进阶

下列所介绍的是一些高级参数的配置,这些参数如果应用得当,可以更加灵活地在网络上应用samba

1.宏

在基本配置里有提到一些参数的可以尾随%u、%m,这是samba里定义的宏,宏用百分号后面跟一字符表示,在具体运作的时候就用实际的参数来代替。常用的宏有:

%S = 当前服务名;

%P = 当前服务的根路径;

%u = 当前服务的用户名;

%g = 给定%u的所在的主工作组名;

%H = 给定的%u的宿主目录;

%v = Samba 版本号;

%h = 运行Samba的机器的主机名;

%m = 客户机的NETBIOS名;

%L = 服务器的 NetBIOS 名;

%T = 当前的日期和时间;

灵活地应用宏可以很方便地管理比较复杂的网络。

2.一些常用高级配置参数

2.1 全局参数

config file

说明:这个参数是全局参数,可以让你用另一个配置文件覆盖缺省的配置文件,如果文件不存在,该项无效。这个参数非常有用,也使得samba的配置更灵活,让一台Linux服务器模拟多台不同配置的NT 服务器,满足不同的需求。

比如,您想让网络上的某台名字是host1的机器用它自己的配置文件,先在/etc/下为host1配置一个名为smb.conf.host1的文件,在缺省的smb.conf里加这行:

config file = /etc/smb.conf.%m

这样,当host1请求连接的时候,smb.conf.%m被替换成smb.conf.host1,对host1来说,它所看到的samba就是由smb.conf.host1定义的。而其它机器还是用smb.conf。

deadtime

说明:这个参数值是个整数,单位是分钟,用于切断一个不活动的连接。当一个没有打开任何文件的连接的不活动的时间超过datetime指定的的时间后,samba就自动切断这个连接。这个参数可以节省服务器的资源消耗,尤其是在有大量连接的情况下。默认的值是零,零代表samba不自动切断任何连接。

time server

说明:这个参数让nmbd成为WINDOS客户的时间服务器。默认是no。

2.2 共享资源参数

dmin users

这个参数用来赋予用户对共享资源的管理员权限,意味着这些用户可以root一样进行所有的文件操作,当然只局限在这个共享资源上。这个选项要慎用,因为任何这样的用户可以对该共享上的文件随意进行操作。缺省是admin users = no。

例如:

admin users = Su_27 那么Su_27这个用户就是这个共享资源的管理员。

valid users

说明:指定共享资源的有效用户,即允许访问该资源的用户。例如:valid users = user1,user2那么user1和user2是有效用户。

invalid users

说明:和valid users 相反,指定那些用户不可访问这共享资源。

max connections (S)

说明:指定一个服务的最大连接数目,用户连接到该服务时如这个服务的连接数目已经达到指定值,这个新的连接请求把被拒绝。 例如: maxconnections = 100最大连接数为100以上是一些samba的高级配置参数,但samba的参数还有很多,本章不能一一详述,如文件创建权限设定,代码页,文件名大小写是否敏感等,可以参考samba的文档。

四、什么是NFS

NFS 是网络文件系统(Network FileSystem)的简称,是分布式计算系统的一个组成部分,实现在异种网络上共享和装配远程文件系统,从用户角度看来,在这些远程的文件系统操作和本地的文件系统上操作并没有什么不同。NFS由Sun 微系统公司(Sun Microsystem, Inc)开发,制订了NFS标准,并被IETF接受,纳入RFC,作为文件服务的一种标准(RFC1904,RFC1813)。NFS基于客户/服务器结构,通过RPC(远过程调用)实现,所有的NFS操作都由RPC过程来进行。NFS服务器导出本地的目录给远程的NFS客户,NFS客户把对文件操作系统调用重定向到远程的系统。在Linux里,通常用knfsd来实现NFS服务,这是个运行在核心空间的后台守护程序,相对与用户空间的NFS程序,有较高的响应性能。

五、配置NFS

1.创建或修改/etc/exports

exports 的每一行由导出路径, 客户名列表以及每个客户名后尾随的访问选项构成, 访问选项是可选的。

directory hostname(options) ...

options是可选的,如果不指定options,nfs把采用默认的选项。hostname也可以为空,代表给任意外来主机提供服务。

例如: /usr ws1.mydomain.com 导出路径/usr 提供给 ws1.mydomain.com 访问。

/usr ws1.mydomain.com(rw) 同样是给ws1.mydomain.com访问,但具有写入权限。

/pub (ro,insecure,all_squash)导出/pub, 任何机器都可以访问, 允许用大于1024的端口进行连接,并把所有的连接id映射到nobody.

主机名里可以包含通配符*和?,例如*.mydomain.com,代表mydomain.com里的所有机器,但注意通配符不能匹配主机名里的点,所以上面的*.domain.com不包括ws1.subdomain.mydomain.com这样的机器。也可以用IP网络/子网掩码的形式来指定网络上的可以访问的机器。例如:192.168.1.0/255.255.255.0修改过/etc/exports后,需要告诉nfs进程重新检查配置信息,可以用命令:exportfs或重新启动nfs。

一些常用选项:

insecure 允许用户可以从大于1024的端口进行连接。

secure 限制用户只能从小于1024的端口号进行连接。

ro 只读,注意在没指定ro的情况是可写的。

noaccess 让导出路径的所有子目录对客户不可见。用户连接到这样的路径后看到的是个空目录。

root_squash 这个选项可以把从客户机的uid为0的请求映射成nobody。

no_root_squash 这个选项和上面的相反,不映射uid 为0的请求,这是缺省的。

rw 可写,这是缺省的。

2.一个exports的例子

/home ws1(rw) ws2(rw) ws3(rw)   /usr/X11R6 ws1(rw) ws2(rw) ws3(rw)/usr/share ws1(rw) ws2(rw) ws3(rw)   / ws1(rw,no_root_squash)/home/ftp (ro)   /pub (ro)   /pub/private (ro,noaccess)3.启动NFS服务

启动NFS服务可以用如下命令:

/etc/rc.d/init.d/nfs start在修改exports文件后要告诉nfs配置信息变化,可以:

/etc/rc.d/init.d/nfs stop   /etc/rc.d/init.d/nfsstart4.怎么样装配远程NFS文件系统

如上例,装配上述的/pub可以简单用如下命令:

mount hostname:/pub /mnt其中hostname是远程主机的主机名。

查询远程机器上有导出文件系统的情况,可以用showmount -e hostname。