简介:
在Windows网络环境中,主机之间进行文件和打印机共享是通过微软自己的SMB(Server Message Block,服务消息块)/CIFS(Common Internet File System,通用互联网文件系统)私有网络协议实现的.
Samba是著名的开源软件项目之一,它在Linux/UNIX系统中实现了微软的SMB/CIFS网络协议,使得跨平台的文件共享变得更加容易.
更多关于Samba的详细信息,或者下载地址请点这里
相关阅读:
Samba文件共享-实现异构通信 http://www.linuxidc.com/Linux/2013-03/81152.htm
VMWare 虚拟机 Ubuntu 双网卡 访问 samba 速度 翻倍 http://www.linuxidc.com/Linux/2013-06/85445.htm
1.Samba软件的组成:
-
Samba:服务端软件
-
Samba-client:客户端软件
-
Samba-common:用于提供服务端和客户端程序的公共组件
-
Samba-swat:用于提供Web接口的图形管理程序(远程装Samba时用到)
安装samba包:
2.Samba服务的程序组件:
-
Samba服务器提供smbd 、nmbd两个服务程序,用来完成不同的功能.
-
Smbd: 负责为客户机提供服务器中共享资源(目录和文件等)的访问;
-
Nmbd:负责提供基于 NetBIOS协议的主机名称解析,以便为windows网络中的主机进行查询服务
启动samba服务: /etc/rc.d/init.d/smb start 或者 service smb start
启动smb服务后,会自动加载Smbd和nmbd两个程序组件.使用netstat命令可以验证服务进程状态:
Smbd程序负责监听TCP协议的139端口(SMB协议),445端口(CIFS协议);
Nmbd服务程序负责监听UDP协议的137-138端口(NetBIOS协议)
3.主配置文件smb.conf
Samba服务的配置文件: /etc/samba目录中
主配置文件: smb.conf
(以”#”号开始的行表示注释性的文字; 以”;”开始的行表示配置样例)
Eg:使用grep命令过滤出smb.conf文件中的有效配置.
Grep -v “#” /etc/samba/smb.conf | grep -v “^;” | grep -v “^$”
注解:
[ global ]全局设置:这部分配置项的内容对整个samba服务器都有效.
[ homes ]宿主目录共享设置:设置linux用户的默认共享,对应用户的宿主目录;当用户访问服务器中与自己用户名同名的共享目录时,通过验证后将会自动映射到该用户的宿主文件夹中
[ printers ]打印机共享设置:如果需要打印机设备,可以在这部分进行设置
Samba服务器的常见配置项及含义说明:
workgroup |
所在工作组名称 |
server string |
服务器描述信息 |
security |
安全级别,可用值如下:share、user、server、domain |
log file |
日志文件位置,“%m”变量表示客户机地址 |
max log size |
日志文件的最大容量,单位为KB |
passwd backend |
设置共享账户文件的类型 |
comment |
对共享目录的注释、说明信息 |
path |
共享目录在服务器中对应的实际路径 |
browseable |
该共享目录在“网上邻居”中是否可见 |
guest ok |
是否允许所有人访问,等效于“public” |
writable |
是否可写,与read only的作用相反 |
若要兼容旧版的Samba密码文件,应设置passwd backend = smbpasswd
Samba服务器提供了一个配置文件检查工具——testparm程序,使用testparm工具可以对smb.conf配置文件的正确性进行检查,如果发现有错误将会进行提醒:
Eg:当配置文件中的public共享设置未指定文件夹路径时会报错:
构建文件共享服务器:
可匿名访问的共享:
-
可匿名访问的共享适用于公开的资源分享,一般只建议提供只读访问。
-
修改主配置文件以便支持匿名共享文件夹:
-
将默认的安全级别修改为share ;添加一段共享目录配置。
Eg:将本地挂载光盘目录/media/cdrom发布为共享文件夹,共享名为rhel5:
从客户机访问并验证
需用户验证的共享:
步骤:
将默认的安全级别修改为share;添加共享目录配置,指定用户权限;需先创建授权的共享账户
建立Samba用户数据库
默认数据库文件位于:/etc/samba/passdb.tdb
Pdbedit -a -u wzx添加共享用户(-a:添加-u:指定用户名称)
Pdbedit -L 列出所有的samba共享用户
Pdbedit -x -u 删除samba用户
设置用户访问授权:
新建测试目录:
修改smb.conf配置文件,添加名为tools的共享目录:
重新加载smb.conf文件,或重启smb服务:
确定目录访问授权(将文件夹的权限设置为777以便u1用户能够读取、写入):
设置上传文件和目录的默认权限:
用户映射及访问地址限制:
共享账号映射(别名):
Samba共享账号的映射文件默认位于/etc/samba/smbusers
格式:共享用户名 = 别名1 别名2 别名3 …
该文件中默认已经添加了两条兼容windows客户机的别名映射:
注解:
-
当客户机以用户administrator或admin访问共享时,samba服务器将视为本机的共享用户root;
-
当用户guest、pcguest等被映射为共享用户nobody
Eg:为现有的samba共享用户u1指定两个别名hello、welcome:
设置好别名记录后,修改修改主配置文件后重启服务以便正常启用账号映射功能:
访问地址限制:
-
一般用在全局配置[global]部分
-
hosts allow配置项:仅允许特定的客户机
-
hosts deny配置项:仅拒绝特定的客户机
-
客户机地址表示形式:以空格分隔多个地址
主机名或IP地址,例如:192.168.168.11 或者prtsvr
网络段地址(省去主机部分),例如:173.17. 或者173.17.0.0/255.255.0.0
访问共享文件夹:
使用smbclient 访问共享文件夹:
查询目标主机的共享资源列表:
登录并访问共享文件夹
格式: //主机地址/共享名
Eg:连接到samba服务器192.168.10.1中名为rhel的匿名共享目录:
Eg:使用共享用户u1(或别名hello,welcome)访问tools共享:
Ls :用于列表目录;pwd :查看当前路径
Get 和mget:用于下载文件;put 和mput用于上传文件
?或help :查看各种交换命令的在线帮助信息
使用mount 挂载共享文件夹:
格式:通过”//主机地址/共享名”指定共享文件夹的位置,并指定本地的挂载点的目录
Eg:将samba服务器192.168.10.1中的tools共享目录挂载到本地的/media/smbdir/文件夹以便共享用户u1进行验证:
Samba服务就此成功!