当前位置: 首页 > 图文教程 > 服务器 > Linux服务器 > Linux成为“文件服务器”

Linux服务器
linux下用cron定时执行任务的方法
.htaccess绑定域名到子目录的方法
linux apache下虚拟主机配置方法
apache 局域网访问配置方案
linux Apache服务器系统安全设置与优化
linux中mac地址绑定方法
linux托盘不断闪烁之解决方法
Apache配置 虚拟转向实例
Apache No space left on device的解决办法
Apache rewrite的重写相关的参数说明
LINUX入门级常用命令20条整理
Ubuntu设置开机自动挂载所有格式硬盘分区
5个可能被你忽略的Linux安全设置方法
学习Apache的mod rewrite、access写法
改版时保留原链接,创建新的URL的方法
rsync中文手册之使用rsync实现网站镜像和备份linux
rsync 数据同步使用详解
linux URL的301重定向代码分析
eclipse3.2.2 + MyEclipse5.5 + Tomcat5.5.27 配置数据库连接池
Apache服务器二级域名的完美实现

Linux服务器 中的 Linux成为“文件服务器”


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-18   浏览: 67 ::
收藏到网摘: n/a


一、Samba简介
给Windows客户提供文件服务是通过samba实现的,凡架设过MSWindows网络的人都知道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,最好不要这样做,NTPDC非常复杂,samba还只能实现其中一部分功能。希望未来的版本可以做到。

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

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

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

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

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

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

smb.confsamba的配置文件;

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

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

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

swatsamba的Web管理工具;



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

swat901/tcp#Addswatserviceusedviainetd

在inetd.conf里填上:

swatstreamtcpnowait.400root/usr/sbin/swatswat

在浏览器的地址栏里键入http://youhostname:901/就可以进入swat对samba进行管理。下面就介绍如何手工配置这个文件以达到让samba成为一个符合需求的文件服务器。

先看看一小段的smb.conf:

#smb.confexample

[global]

workgroup=WORKGROUP

serverstring=SambaServer

hostsallow=192.168.1.192.168.2.127.

loadprinters=no

printcapname=/etc/printcap

guestaccount=guest

logfile=/usr/local/samba/var/log.%m

maxlogsize=50

security=user

socketoptions=TCP_NODELAY

[homes]

comment=HomeDirectories

browseable=yes

writable=yes

[printers]

comment=AllPrinters

path=/usr/spool/samba

browseable=no

guestok=no

writable=no

printable=yes

printerdriver=EpsonLQ-1600K

[tmp]

comment=Temporaryfile

path=/tmp

readonly=no

public=yes

[public]

comment=PublicZone

path=/home/samba

public=yes

writable=yes

1.段

从上面的例子可以看出,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=true

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

[myprinter]

path=/usr/spool/public

readonly=true

printable=true

guestok=true

特殊段:

[global]段

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

[homes]段

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

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

[homes]

writeable=yes

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

[printers]段

该段用于提供打印服务。

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

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

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

[printers]

path=/usr/spool/public

writeable=no

guestok=yes

printable=yes

printerdriver=EpsonLQ-1600K

2.参数

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

全局参数

2.1基本参数

workgroup

说明:这