SAMBA 的实现原理以及使用方法

SAMBA 的实现原理以及使用方法

------------------------------------------------------------------------

文章首发于CSDN。作者:卫岩,博客地址http://blog.csdn.net/wei2856059,转载请注明出处。谢谢。

------------------------------------------------------------------------

 

一.SAMBA的起源

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

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

         SAMBA

        

二.SAMBA的工作方式

         SAMBA主要提供的是SMB/CIFS或者NETBIOS协议的。

         所以只要使用了SAMBA,就能实现让Linux出现在Windows的网上邻居里,或者,让Windows的文件共享在Linux上--

         一旦在linux上安装之后,有两个主要进程:

         1.nmbd :提供NETBIOS 名称解析的                         

         2.smdb : 提供文件共享的。

        

         而由于NETBIOS协议对于windows来讲监听TCP的139端口和UDP的137,138端口 ,所以nmbd在linux上模拟出了udp的137和138端口,以及tcp的139端口,smdb上模拟出 tcp的445端口。而SAMBA将在Linux上同时监听这4个端口。

 

三.认识SAMBA

         SAMBA的软件都是”samba”开头的

        

         samba-client

         samba-common  这两个都是作为客户端使用的

         samba作为服务端使用

         samba-swat 基于图形的一个控制界面

                           

         安装完后,它的配置文件在 /etc/samba/smb.conf              

         而/etc/init.d/smb 脚本,实现了对于SAMBA的控制

         比如:/etc/init.d/smb start

                  

         小提醒:samba是一款接受selinux控制的软件,所以配置的时候一定要关闭selinux

        

四.安装并简单配置SAMBA

         1.安装:

         yum install samba -y

        

         安装完成之后在/etc/samba目录下

         主配置文件叫 smb.conf

                   小提醒:

                   这类文件里所有 以#开头的都是注释没意义

                   所有以“;”开头的都是可以去掉以启动的选项

                           

         2.配置:

                   配置文件主要有4个段组成:

                   1.全局配置段 [global]

                   2.家目录段[homes]

                   3.独立的共享段[printer]

                   4.自定义段[c_s]     

                  

         我们一段一段的来分析

         第一段:[global]:

                   workgroup = MYGROUP           定义工作组的

                   server string = Samba Server Version %v         这是用于当你通过网上邻居打开的时候,注释信息是什么

                   netbios name = XXX     显示在终端中的名字

                   security = user          这一项很关键,是用来定义SAMBA服务的安全级别的,安全级别主要有4个

                                     1.share:允许任何匿名用户直接访问

                                     2.user:默认:每一个用户访问的时候必须要提供账号和密码

                                     3.domain/server:通常意味着把用户的账号和密码在认证的时候是通过第三方集中的认证的。而不是直接通过系统来认证,比如有一个专门的认证服务器

                                     4.ads:通过主域控制器来认证的

                   passdb backend = tdbsam     所有的SAMBA用户的认证文件使用什么方式认证

                   load printers = yes    是否去尝试加载打印机

                   cups options =raw    通用打印系统,指定打印方式

                   hosts allow = XX.XX.XX.XX   定义访问控制列表

                                                       

         第二段:[homes]:

                   comment = Home Directories          说明信息

                  browseable = no     浏览,如果这个用户不是这个目录的属主的话,是否可以看到这个目录的,no表示只有属主才能看到

                   writable =yes     是否可以往里新建文件的。

 

         第三段:[printers]:

                   comment = All Printers

                   path = /var/spool/samba         打印池

                   browseable = no 

                   guest ok = no  打印机是否公开

                   writable = no  

                   printable = yes

                  

         第四段:我们定义一个自己的:[tools] 

                           中括号括起来的叫共享名

                   comment = My Tools

                   path = /share    用于定义在系统目录上真正的那个目录在什么地方

                   browseable = yes  是否可浏览

                   guest ok = yes  是否允许来宾账号

                   writable = yes 是否可写

         #       write list = XXX   定义一个列表决定用户/组是否可以写,定义组的时候,需要用 @组名

 

五.使用SAMBA

         1.简单的使用方法

         任何时候当你修改了配置文件之后,都要检查一下文件的语法是否合适

         这里,我们使用     testparm         命令:直接测试sam的配置文件

        

         当测试完成发现没有什么需要修改的地方以及语法错误之后。

         使用:     service smb start  命令来开启服务

         chkconfig smb on   设置开机自动启动

         netstat -ntlp   查看那4个端口是否已经开启    

         此时,在你的windows端,应该已经可以通过网上邻居查看到了:

        

         所有的通过samba来访问文件用户首先必须是系统用户,但是密码一定不是用户密码 ,我们可以是smbpasswd命令来给samba的用户加密码

           常用选项:

                   -a : 将此用户加入到samba里来

                   -x : 从samba中删除一个用户

                   -d : 临时性的禁用这个用户

                   -e : 启用此用户

                    

                   比如: smbpasswd -a gentoo

                          

----------------------------------------------------------------------------------

         小问题: 如何让centos 不可写,但是gentoo 可写呢?

         在[tools]中

                   删除writable = XX

                   定义write list = gentoo  ## 定义列表中的人才有写的权限。

         小扩展:这里的list权限大于一切,如果你的目录设置有权限的acl控制,那么这里将直接无视acl

-----------------------------------------------------------------------------------

                          

2.我们看看linux中如何以客户端的身份来访问

         smbclient         客户端的查看和登录命令

                   -L IP/HOST  可以显示对方主机的共享选项

                   -U username    以这个用户的身份去查看共享

        

         它的格式是:smbclient //IP/dir -U username

        

         比如:

                   smbclient -L 172.16.100.1  对方要密码,我们直接确认,匿名访问,查看对方共享了什么

                   smbclient -L 172.16.100.1 -U redhat       以gentoo 的身份看

                  

         进入:

                   smbclient //172.16.100.1/tools -U redhat

                   这条命令则可以让我们以redhat的身份登录到我们共享出来的目录里。

                  

                  

         我们再来看另一种实现的方法:

①   .如何通过组的方法,来定义让两个用户对同一个目录都有写权限的

         其实很简单:

         只要我们将两个用户加入到同一个组里去就好。

         groupadd mygrp

         usermod -aG mygrp gentoo

         usermod -aG mygrp redhat

        

         编辑配置文件

                   修改

                            write list = @mygrp  (或者+mygrp)

         这里,前面加@或者+,后面跟组名,则系统会自动识别成组的形式。

 

②   .定义访问控制列表,表示只允许哪个网段的人能够访问

         hosts allow = 127. 172.16.

                   这条配置命令则说明了到底哪个网段的人能够访问

 

③   .也可以直接将其共享的目录直接挂载在本地:

挂载其实也很简单,只不过挂载的时候一定要制定它的文件系统为cifs

mount -t cifs //172.16.100.1/tools /mnt -o username=redhat

                   我们以redhat的方式挂载,则redhat的用户是可写的。

 

 

六.图形化的Samba

Samba还给我们提供了一个基于图形化的管理界面。

         默认使用的 901 的端口,软件名称叫 samba-swat

         我们安装使用:

         yum install samba-swat

         samba-swat是个非独立守护进程,它依赖于超级守护进程xinetd

         超级守护进程管理的所有非独立守护进程的配置文件都在

         /etc/xinetd.d/目录下。

                   里面有一个 swat 文件

        

                   这个文件是定义是否随系统启动,以及启动的配置信息

                   里面有两个比较重要的选项:

                            1.only_from : 定义swat 的访问控制列表。格式是:192.168.16.0/24

                            2.disable = yes 是否禁用 ,默认是yes,此时我们给修改成 no

                   当设置好之后我们启动服务:                      

                   service xinetd start

        

         通过自己的IE浏览器访问: 172.16.100.1:901

         这里第一次登录的时候的用户是 root

         这里的密码是root的系统的密码。

        

         在这里的提交的配置会修改sam.conf。并且覆盖。并且自动重启sam服务

 

         当然,最重要的还是安全,我们需要在password中修改密码。和用户名。如果决定要长期使用了的话。一定要修改。

 

七.结语

         至此,Samba的所有相关配置以及相关的使用方法都已经介绍完了。如果你发现有什么不对的地方,可以PM我,我会立即修改的。当然如果大家有什么更好的使用的方法,也请告诉我,我们大家一起进步。

你可能感兴趣的:(学习心得)