Samba服务的安装配置

Samba服务简介
Samba的起源:
对于windows的网上邻居来讲,共享文件的方式用的是SMB和CIFS协议以及NETBIOS协议Linux/Unix之间用的是NFS协议。

​但是Linux和Windows之间是不能共享的,所以澳大利亚国立大学的Andrew Tridgell,决定开发一款软件,这款软件就是为了实现不同的系统之间互相共享文件的,于是一款叫做SMB的软件横空出世了,但是这个名字不能被注册成商标,因为已经有SMB协议了,于是作者给名字上加了两个A,就成了我们即将使用的功能强的文件共享服务器: SAMBA。

什么是Samba:
Samba是一个能让Linux系统应用Microsoft网络通讯协议的软件,而SMB是Server Message Block的缩写,即为服务器消息块 ,SMB主要是作为Microsoft的网络通讯协议,后来Samba将SMB通信协议应用到了Linux系统上,就形成了现在的Samba软件。后来微软又把 SMB 改名为 CIFS(Common Internet File System),即公共 Internet 文件系统,并且加入了许多新的功能,这样一来,使得Samba具有了更强大的功能。

Samba的功能:
Samba最大的功能就是可以用于Linux与windows系统直接的文件共享和打印共享,Samba既可以用于windows与Linux之间的文件共享,也可以用于Linux与Linux之间的资源共享,由于NFS(网络文件系统)可以很好的完成Linux与Linux之间的数据共享,因而 Samba较多的用在了Linux与windows之间的数据共享上面。

Samba的工作原理:
SMB是基于客户机/服务器型的协议,因而一台Samba服务器既可以充当文件共享服务器,也可以充当一个Samba的客户端,例如,一台在Linux 下已经架设好的Samba服务器,windows客户端就可以通过SMB协议共享Samba服务器上的资源文件,同时,Samba服务器也可以访问网络中 其它windows系统或者Linux系统共享出来的文件。

​ 事实上, 就像 NFS 是架构在 RPC Server 上面一样, SAMBA 这个文件系统是架构在 NetBIOS (Network Basic Input/Output System, NetBIOS) 这个通讯协议上面所开发出来的。

​ Samba在windows下使用的是NetBIOS协议,如果你要使用Linux下共享出来的文件,请确认你的windows系统下是否安装了NetBIOS协议。

组成Samba运行的有两个服务,一个是SMB,另一个是NMB;SMB是Samba 的核心启动服务,主要负责建立 Linux Samba服务器与Samba客户机之间的对话, 验证用户身份并提供对文件和打印系统的访问,只有SMB服务启动,才能实现文件的共享,监听139 TCP端口;而NMB服务是负责解析用的,类似与DNS实现的功能,NMB可以把Linux系统共享的工作组名称与其IP对应起来,如果NMB服务没有启动,就只能通过IP来访问共享文件,监听137和138 UDP端口。

Samba使用的 damons:
NetBIOS 机器间的沟通

取得对方主机的NetBIOS name 定位该主机所在:

利用对方给予权限存取可用资源

SAMBA 使用下面两个服务来控制上面两步骤,分别是:

nmbd
这个daemon是用来管理工作组,NetBIOS name等等的解析。
主要利用 UDP 协议开启 port 137 138 来负责名称解析的任务。
smbd
这个daemon主要用来管理SAMBA主机分享的目录,档案与打印机等等。
主要利用可靠的TCP协议来传输数据,开放端口为139.
所以SAMBA每次启动至少都需要有这个daemon,而当我启动了SAMBA之后,主机系统就会启动137,138 这两个UDP 及139这个TCP端口。

Samba联机模式介绍:
两种最常见的局域网的联机模式

peer/peer(对等模式)
domain model(主控模式)
(1)peer/peer (workgroup model,对等模式)

                                   

                                                                图:对等模式原理

使用 peer/peer 的架构的好处是每部计算机均可以独立运作,而不受他人的影响!不过, 缺点就是当整个网域内的所有人员都要进行数据分享时,光是知道所有计算机里面的账号与密码,就会很伤脑筋了! 所以, Peer/Peer 的架构是比较适合 :

1、小型的网域

2、没有需要常常进行档案数据分享的网络环境

3、每个使用者都独自拥有该计算机的拥有权

(2)domain model(主控模式)
                                 

                                                                            图:主控模式原理
将所有的账号与密码都放置在一部主控计算机 (Primary Domain Controller, PDC) 上面,在我的网域里面,任何人想要使用任何计算机时,都需要在屏幕前方输入账号与密码,然后通通藉由 PDC 服务器的辨识后,才给予适当的权限。也就是说,不同的身份还具有不一样的计算机资源权限。

Samba的常见应用:
Samba能做什么?

1、分享档案与打印机服务
2、可以提供用户登入Samba主机时的身份认证,以提供不同身份者的个别数据。
3、可以进行windows网络上的主机名解析
4、可以进行装置的分享
Samba服务器的应用实例:

1、利用软件直接编修WWW主机上面的网页数据
        用FTP修改,后上传;不方便,很有可能传上去旧版本的。
        在线修改比较能迅速看到结果。
2、做成可直接联机的文件服务器
        因为每个人登陆的账户名不同,这样对目录的权限也不同,实现权限控制。

Samba服务器的搭建

 

一、安装软件

yum -y install samba samba-common samba-client  

二、主要相关文件

/etc/samba/smb.conf    samba的主要配置文件

/etc/samba/smbusers    samba的用户别名,比如可以将root用别名administrator、admin代替等(作用:可以只告知samba用户该别名,这样可以保护真实的samba服务器/etc/passwd的用户不泄漏)

/etc/samba/lmhosts     samba的IP和域名对应,类似/etc/hosts文件功能

/etc/samba/smbpasswd        该文件为手动创建,用于存放samba用户及密码

三、smb.conf主要说明

[global]

workgroup = WORKGROUP 
//说明:指明共享所在的工作组,可以是NT域名、工作组名
server string = samba server on Centos
//说明:客户端看到的服务器的描述信息
netbios name = centos_smb
//说明:设置Samba Server的NetBIOS名称。如果不填,则默认会使用该服务器的DNS名称的第一部分。netbios name和workgroup名字不要设置成一样了
interfaces = lo eth0
//说明:设置Samba Server监听哪些网卡,可以写网卡名,也可以写该网卡的IP地址
hosts allow = 192.168.1. 192.168.163. 192.168.153.
//说明:表示允许连接到Samba Server的客户端,多个参数以空格隔开。可以用一个IP表示,也可以用一个网段表示。我这里只允许3个网段里的所有客户端访问samba server。(注释掉表示允许所有IP)


security = user
//说明:设置用户访问Samba Server的验证方式,一共有四种验证方式。 
1. share:用户访问Samba Server不需要提供用户名和口令, 安全性能较低。 
2. user:Samba Server共享目录只能被授权的用户访问,由Samba Server负责检查账号和密码的正确性。账号和密码要在本Samba Server中建立。 
3. server:依靠其他Windows NT/2000或Samba Server来验证用户的账号和密码,是一种代理验证。此种安全模式下,系统管理员可以把所有的Windows用户和口令集中到一个NT系统上,使用Windows NT进行Samba认证, 远程服务器可以自动认证全部用户和口令,如果认证失败,Samba将使用用户级安全模式作为替代的方式。 
4. domain:域安全级别,使用主域控制器(PDC)来完成认证。
我只需要user级别的安全验证就可以了。


username map = /etc/samba/smbusers
//说明:用来定义用户名映射,比如可以将root换成administrator、admin等。要事先在smbusers文件中定义好。比如:root = administrator admin,这样就可以用administrator或admin这两个用户来代替root登陆Samba Server,以保护Linux的系统账号root。后面会介绍这个文件


encrypt passwords = true
//说明:是否将认证密码加密。因为现在windows操作系统都是使用加密密码,所以一般要开启此项。


passdb backend = smbpasswd
//说明:passdb backend密码验证后端。目前支持的有三种:smbpasswd、tdbsam和ldapsam。其中smbpasswd方式是使用smb自己的工具smbpasswd来给系统用户(真实用户或者虚拟用户)设置一个Samba密码,客户端就用这个密码来访问Samba的资源。smbpasswd文件默认在/etc/samba目录下,不过有时候要手工建立该文件。这里我选用smbpasswd。


smb passwd file =/etc/samba/smbpasswd
//说明:用来定义samba用户的密码文件。smbpasswd文件如果默认不存在,要手工新建。


log file = /var/log/samba/log.%m
//说明:设定 samba server 日志文件的储存位置和文件名(%m代表客户端主机名)。


max open files = 1000
//说明:同一客户最多能打开的文件数目


socket options = TCP_NODELAY
//说明:用来设置服务器和客户端之间会话的Socket选项,可以优化传输速度。

[xxxxx] 共享目录
//说明:xxxxx表示共享名

comment = code string
//说明:comment是对该共享的描述,可以是任意字符串。
path = /home/songyd/code
//说明:path用来指定共享目录的路径。
writable = yes
//说明:writable用来指定该共享路径是否可写。这里我们允许写入,以满足文件双向共享。

writelist = mysql, jack

//说明:只允许mysql和jack2个用户对此资源可以写,其他的为read only
browseable = yes
//说明:browseable用来指定该共享是否可以浏览。
available = yes
//说明:available用来指定该共享资源是否可用。
guest ok = no
//说明:是否允许允许来宾访问
read only = yes
//说明:设置权限为只读权限
public = no
//说明:共享目录允许所有用户访问及上传文件
valid users = jack sunny
//说明:只允许jack sunny访问该共享资源

四、一个完整的smb.conf实例

[global]
workgroup = WORKGROUP
server string = samba server on Version %v
netbios name = centos_smb
interfaces = lo eth0
#hosts allow = 192.168.16. 192.168.20.
security = user
username map = /etc/samba/smbusers
encrypt passwords = true
passdb backend = smbpasswd
smb passwd file =/etc/samba/smbpasswd
log file = /var/log/samba/log.%m
max open files = 1000
socket options = TCP_NODELAY

[webfile]
comment = frontend web
path = /home/wwwroot/frontend/web
browseable = yes
writable = yes
create mask = 0664
directory mask = 0755
guest ok = no
public = no
available = yes

五、新建samba用户

smbpasswd -a mysql (mysql为/etc/passwd下存在的用户,不存在会报错)

New SMB password:
Retype new SMB password:
Added user mysql.

输入完该samba用户密码后,会在/etc/samba/smbpasswd文件生成mysql用户密码信息,如果不想让samba用户使用mysql作为samba用户名访问的话,则可以在/etc/samba/smbusers 设置改用户别名,如下写出了添加mysql后的smbpasswd文件和smbusers文件信息

[root@nginx samba]# cat smbpasswd 
mysql:500:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:FDB5CFC19C8AC660A21CA41FE95E7D8:[U ]:LCT-5874994E: 
[root@nginx samba]# cat smbusers 
# Unix_name = SMB_name1 SMB_name2 ...
root = administrator admin
nobody = guest pcguest smbguest
mysql = sql     (samba用户可以使用sql作为samba帐号来访问samba服务器)

六、重启、启动samba

service smb start

service nmb start  (nmb作用是netbios,可以使用主机名方式访问samba)

猜你喜欢

转载自www.cnblogs.com/hwf-1/p/11446549.html