Chinaunix首页 | 论坛 | 博客
  • 博客访问: 115079
  • 博文数量: 42
  • 博客积分: 932
  • 博客等级: 准尉
  • 技术积分: 470
  • 用 户 组: 普通用户
  • 注册时间: 2011-07-18 22:33
文章分类
文章存档

2011年(42)

分类: LINUX

2011-08-28 19:41:52

背景介绍:
Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。samba的出现是为了解决unix,linux主机跟windwos主机之间的文件共享服务的。samba文件服务器是在linux上用软件的方式模拟实现windowsSMB/CIFS NETBIOS协议的软件。
我们知道在windows网上邻居中实现文件共享主要依据的协议类ing是SMB/CIFS以及NETBIOS。smb:service message block  服务信息块协议 ;cifs:common internet file ststem 通用网络文件系统  netbios:是windows主机之间实现主机名解析的协议。而在unix和linux之间我们用的是nfs协议,因此windows主机与linux,unix主机之间的文件共享就难以实现,而samba就是为了解决此问题而诞生的。这是一位澳大利亚的学生发明的软件,最初命名为smb,但是在注册使用的时候由于smb是一个协议的统称,而改名为samba。


Samba的部分介绍:
samba相关的软件包都以samba开头(使用yum list all samba*查看),redhat默认安装了两个客户端包:
samba-client,samba-common
samba服务器端包 :samba
samba-swat基于web的samba图形化配置工具
samba启动后有两个主要的进程(守护进程):
nmbd,提供NETBIOS名称解析 监听tcp 139 udp 137 138端口
smbd,提供文件共享服务 File Sharing 监听在tcp 445端口
相关文件:
主配置文件:
/etc/samba/smb.conf 文件里有两类注释 ;开头的注释表示可以启用的选项 # 开头的是注释信息。
文件主要有3个段组成:
全局配置段
[global]
配置每个用户是否能浏览自己的家目录
[homes]
有个专门的printrter段指定共享打印机的
[printers]
自定义共享
[customshare]
服务脚本文件:
/etc/init.d/smb
其他配置文件:/etc/samba/*


下面就对samba做下简单的配置:和前面所有的软件配置一样,首先,设置好自己的yum库,安装软件,yum install samba

首先看下主配置文件中默认启用的选项有哪些吧:

[global]
 workgroup = MYGROUP
 server string = Samba Server Version %v
 security = user
 passdb backend = tdbsam
 load printers = yes
 cups options = raw
[homes]
 comment = Home Directories
 browseable = no
 writable = yes
[printers]
 comment = All Printers
 path = /var/spool/samba
 browseable = no
 guest ok = no
 writable = no
 printable = yes

以上这些就是默认开启的选项了,以上各个字段的意思就不一一解释了,主要说下比较重要的:

security 这个定义了安全级别,共有4个级别,分别是:share,user,domain/server,ads

一般默认是user, share允许任何匿名用户访问共享的目录可想而知这是十分不安全的。user需要用户提供账号和密码(samba的账号和密码),domain/server分布式集中管理用户认证,ads与域相关的,一般用不到。一般都用默认的user级别。

samba的配置选项有近百项,实际配置起来还是挺麻烦的,不过平时我们自己在用时只需做下简单的配置。例如我们如何自定义一个共享目录呢!

# vim /etc/samba/smb.conf

 [tools]

        comment = My Tools

        path = /share   

        browseable = yes (其他用户(并非此共享文件的属主)是否能看到此共享文件)

        guest ok = yes

        writable = yes

# service smb start

# user add gentoo

# smbpasswd    -a gentoo

将workgroup = WORKGROUP service smb restart就可以在windows的网上邻居里看到这个/share这个目录了,用gentoo用户可以登录进去看看。

以上需要说明的部分:[tools] 共享的名称,随便定义共享文件的名称并非必须与共享目录的目录名称相同,这点跟windows里局域网共享文件夹时的情况类似;下面的字段定义一般都是单词的字面意思很容易理解,就不多做说明,主要说明下path 这个就是定义你想共享的目录的路径的;另外,writable这个字段定义共享的目录是否可写,但要注意的是并非这里定义了可写,我们就对此目录具有写权限,这还要看文件自己的权限属性,还有此处我们还可以将writable换为wirte list = 可以定义可写的列表定义哪些用户可写;用法:

write list = name(@group/+group定义组可写)

host allow = 可以定义来自于哪些网段或特定的主机访问共享资源

定义的方法比较特别:用172. 代表172.0.0.0 网段 可以自己看看配置文件里面有未启用的选项后面有示例。

我们使用的是默认安全级别,security = user 说明我们要用账号和密码才能访问共享目录,这里要对samba用户做下简单说明,所有的samba用户必须是系统用户,但密码并非登录系统的密码,这个密码存放在/etc/samba下一个加密文件中。这里对samba服务常用简单的命令或者说工具做下简单的介绍:

首先是上面用到的一个:smbpasswd 给用户加samba密码用到的几个选项如下:
-a 添加samba用户
-s 删除
-d 禁用
-e 启用

smbclient专门的客户端工具:smbclient //host/file -U 以某个用户身份登录某主机的共享资源(登录进去后可以做类似于ftp的操作命令 如get put 等动作)

                           smbclient -L host 可以查看特定主机的共享选项 -U username 以某个用户身份查看

用法示例:smbclient //192.168.0.179/tools -U gentoo

testparm 可以检查配置文件的语法错误,每次修改完配置文件后可以用此命令检查语法错误并且查看有效的选项,是否跟自己配置和需求一致。

我们还可以将共享的目录直接挂载到本地来使用但文件系统类型必须为cifs:如

mout -t cifs //192.168.0.179/tools /mnt -o username=gentoo

其他的常用命令:service smb start/stop/restart 这些大家都很熟悉了吧!不过这是redhat专属的!在其他系统很多都不能用service直接调用的!这个大家也应该比较熟悉了!

前面说了samba有个基于web页面的图形化配置工具:samba-swat 默认监听在901端口

yum install samba-swat

我们就可以使用这个图形化的配置工具了,这个工具是个非独立守护进程,受超级守护进程xinetd的管理,配置文件/etc/xinetd.d/swat

可以编辑下这个文件看看:

我们主要修改两项:

only_from = 定义你想开放的网段 (这里子网掩码只支持短格式的如:192.168.0.0/24 只支持这种写法)

disable = no

这样就可以使用图形化界面来对samba做配置了!

samba简单的配置就是如此了,更复杂的大家可以自己看看配置文件里的选项都是干嘛的!也可以通过图形化的界面操作些,也很简洁明了,不过选项还是挺多的,有兴趣的可以玩玩看!


  

阅读(1396) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~