标签:samba
samba是架起windows和linux的桥梁,并且提供不同系统间的共享服务!
samba的工作原理
samba服务功能十分强大,这与其通信基于smb协议有关。smb不仅提供目录和打印机的共享,还支持认证,权限设置。在早期,smb运行于nbt协议上使用udp协议上的137,138端口及tcp协议的139端口。后期smb经过开发,可以直接运行tcp/ip协议,没有额外的nbt层,使用tcp协议的445端口!
samba工作流程:
当客户达端访问服务器时,信息通过smb协议进行传输,其工作过程可以分为4个部分:
1,协议协商:客户达端在访问samba服务器时,发送negport指令数据包,告知目标计算机其支持的什么的类型。samba服务器根据客户端的情况,选择最优的smb类型,并做出回应!
2,建立连接:当smb类型确认之后,客户端会发送session setup数据包,提交帐号和密码,请求与samba服务器建立连接。如果客户端通过身份验证,samba服务器会对session setup
报文做出回应,并为用户分配唯一的uid,在客户端与其通信时使用!
3,访问共享资源:客户端访问samba共享资源时,发送tree connect指令数据包,通知服务器需要访问的共享资源名。如果设置允许,samba服务器会为每个客户端与共享
资源的连接分配tid,客户端即可以访问需要的共享资源!
samba的主配置文件在/etc/samba/smb.conf,通过修改这个配置文件来实现我们的各种需求!
基本samba服务器搭建流程主要分为四步:
1:编辑主配置文件smb.conf,指定需要共享的目录,并未共享目录设置共享权限!
2:在smb.conf文件中指定日志文件名称和存放路径。
3:设置共享目录的本地文件权限
4:更新加载配置文件或重新启动smb服务使配置生效!
smb.conf主配置文件:
smb.conf文件大概有280行,smb.conf大致分为3部分,先简单了解一下:
smb.conf文件开头部分为samba配置简介,告诉使用者smb.conf文件的作用和使用信息!smb.conf文件中以“#”开头的为注释,为用户提供相关配置的解释信息。以“;”开头的是smb.conf配置的格式范例,默认是不生效的,我们通过去掉前面的“;”号,并加以修改来实现想使用的功能!
#======================= Global Settings ===================================== [global]
Global Settings为全局变量区域,该区域的设置是针对所有共享资源的。
samb的配置通用格式是 “字段 = 设定值”
1:设定工作组或域名称。工作组是网络中,地位平等的一计算机,可以通过设置workgroup字段,来对samba服务器所在的工作组或域名进行设置。
workgroup = WORKGROUP (WORKGROUP为windows的默认工作组,若想和windows通信,此处可设为此值)
2:服务器描述:在一个工作组中,可能存在多台服务器,为了方便用户浏览,可以在server string配置相应的描述,这样用户通过描述就知道自己要登录的服务器:
server string = Samba Server Version %v
3:设置samba服务的安全级别:
security = share/user/server/domain/ads
security为用户的安全级别,用来适应不同的企业服务器的需求!
share:客户端登录samba服务器,不需要输入用户名和密码,就可以浏览samba服务器的资源。适用于公共的共享的资源,安全性差,需要配合其它权限设置,保证samba的安全性!
user:客户端登录samba服务器,需要提交合法的帐号和密码,经过服务器验证,才可以访问共享资源。服务器默认为该级别!
server:客户端需要将用户名和密码,提交到指定的一台samba服务器上进行验证,如果验证出现错误,客户端会用user级别访问!
domain:如果samba服务器加入window环境中,验证工作由windows服务器负责,domain级别的samba服务器只是成为域的成员客户端,并不具备服务器特性,samba早期使用此级别登录windows域!
ads:当samba服务器使用ads安全级别加入到windows域中,其中包含domain级别的所有功能,并可以具备控制域的功能!
3:shonare definitions共享服务定义:
1)设置共享名
共享资源发布后必须为每一个共享目录或打印机设置不同的共享名,为网络用户访问时使用,并且共享名可以与元目录名不同。
[homes] //共享名为homes
2)共享资源描述:网络中存在各种共享资源,为了方便用户识别,可以为其添加备注信息:
comment = share for users
3)共享路径:共享路径的原始完整可以用path字段进行发布,务必指定正确:
path = /tmp/samba
4)设置匿名访问:
public = no/yes //yes允许匿名,no不允许匿名访问
5)设置访问用户
如果共享资源存在重要数据,需要对访问用户进行审核,使用valid users字段进行设置
valid users = 用户名 valid users = @组名 //只有被设定的用户才能访问!
6)设置共享目录:共享目录如果限制用户的读写操作,可以用readonly实现:
readonly = yes /no
7)设置目录可写:
writeable = yes/no
samba服务日志文件:
日志文件对samba非常重要,它存着客户端访问samba服务器的信息,以及samba服务的错误日志提示信息!
在/etc/samba/amb.conf文件中,log.file为设置samba日志的字段!
samba服务的日志文件默认存在/var/log/samba/中,其中samba会为每个连接到samba服务器计算机分别建立日志文件。
nmbd.log记录nmbd进程的解析信息
smbd.log记录用户访问samba服务器的问题,以及服务器本身的1错误信息,可以通过该文件获取大部分的samba维护信息。当客户端访问samba服务器后,会自动添加客户端的相关日志!
设置一个共享目录,使用用户名和密码登录
1)配置smb.conf配置文件:
修改配置文件 workgroup = WORKGROUP server string = Samba Server Version %v security = user
然后在文件最后加上:
[shares1] comment = share for users path = /tmp/samba browseable = yes public = no writeable = yes
如果共享目录不存在,则需要创建共享的目录:
[root@nulifendou ~]# cd /tmp [root@nulifendou tmp]# ls //共享目录已存在 samba yum.log
添加用户
[root@nulifendou tmp]# useradd test2 //在服务端创建一个用户,用来映射samba服务的虚拟用户 [root@nulifendou tmp]# pdbedit -a test2 //把创建的用户加入samba、服务 new password: retype new password: Unix username: test2 NT username: Account Flags: [U ] User SID: S-1-5-21-1414275737-2304374364-3016793499-1001 Primary Group SID: S-1-5-21-1414275737-2304374364-3016793499-513 Full Name: ·····
启动samba服务
[root@nulifendou tmp]# service smb start 启动 SMB 服务: [确定]
在windows端打开运行窗口,输入“\\服务器ip地址”,弹出界面输入用户名和密码即可看到分享的目录!
在linux端查看samba服务:
mount -t cifs //ip地址/[共享目录] /【当前一个目录】
用之前需要安装一个工具:
yum install -y cifs-devel
本文出自 “自定义” 博客,请务必保留此出处http://zidingyi.blog.51cto.com/10735263/1711949
标签:samba
原文地址:http://zidingyi.blog.51cto.com/10735263/1711949