samba

samba


  • samba概述

  • samba原理

  • samba服务

  • samba的命令

  • samba搭建实例

  • 使用GUI工具SWAT管理samba


samba概述

什么是samba?

samba是基于smb(Server Message Block)协议的一种实现方式。

samba的功能是什么?

samba能够用来在windows,unix平台间实现文件共享服务,不同于FTP与NFS的是,samba能够很好的跨平台实现共享,并在本地挂载共享文件夹。

samba原理

samba

1.SMB是基于NetBIOS的一个网络文件共享协议,允许cilent从服务器端访问文件资源。
2.NetBIOS协议是一个用来让局域网内的主机互相连接的通讯协议,被广泛用于windows平台间的通信。
3.samba就是基于smb开发的,让unix主机能够通过mbr协议与windows平台进行文件共享。

samba服务

samba的安装包:

 samba                samba服务器端程序。
 libsmbclient         samba客户端库文件。
 samba-client        samba客户端程序。    
 samba-common        samba客户端以及服务端都会用到的文件,如samba.conf等。
 samba-winbind        samba对于windows域的支持的服务端的库。
 samba-winbind-clients    samba windwos域的客户端。

samba的进程文件:

nmb:负责管理工作组,NETBIOS解析,工作在UDP的137,138端口上。
smb:负责对通过验证的请求调用系统资源,工作在TCP的139或445端口上。

samba的文件:

/etc/samba/smb.conf            samba的主要配置文件。
/etc/samba/smbusers            共享服务中,linux与windows的账号的映射,格式为 linuxuser = windowsuser1,windowsuser2
/var/lib/samba/private/passdb.tdb / secrets.tdb            samba用户账号密码存放的数据库。

samba.conf

[global]


  [network]

    workgroup = MYGROUP        工作组名称,要与windows的工作组名称一致。
    server string = Samba Server Version %v        

;    netbios name = MYSERVER

;    interfaces = lo eth0 192.168.12.2/24 192.168.13.2/24 
;    hosts allow = 127. 192.168.12. 192.168.13.


  [login]
    log file = /var/log/samba/log.%m    日志文件路径。
    max log size = 50        一个日志文件最大多少Kb进行轮替。

  [独立服务器设定  Standalone Server]
    security = user|share|domain  安全认证方式   
                        share:共享模式  
                        user:使用samba服务器的密码库    
                        domain:使用外部域服务器的密码。        
    passdb backend = tdbsam     密码库格式。


  [域成员设定 domain members]
;    security = domain
;    passdb backend = tdbsam
;    realm = MY_REALM

;    password server = <NT-Server-Name>

.................... 海量设置请自行查看此文件,或者查看/usr/share/doc/samba[version] 帮助手册。


#============================ Share Definitions ==============================

[homes]
    comment = Home Directories            注释信息。
    browseable = no                        是否让所有人都看到此目录。
    writable = yes                        是否可以写入。
;    valid users = %S                    有效的用户。
;    valid users = MYDOMAIN\%S

[printers]
    comment = All Printers
    path = /var/spool/samba            共享文件夹路径。
    browseable = no
    guest ok = no                    是否允许来宾账号访问。
    writable = no
    printable = yes                    是否允许打印。            

# Un-comment the following and create the netlogon directory for Domain Logons        格式参考模板1
;    [netlogon]
;    comment = Network Logon Service
;    path = /var/lib/samba/netlogon
;    guest ok = yes
;    writable = no
;    share modes = no


# Un-comment the following to provide a specific roving profile share        格式参考模板2
# the default is to use the user's home directory
;    [Profiles]
;    path = /var/lib/samba/profiles
;    browseable = no
;    guest ok = yes


# A publicly accessible directory, but read only, except for people in        格式参考模板3
# the "staff" group
;    [public]
;    comment = Public Stuff
;    path = /home/samba
;    public = yes
;    writable = yes
;    printable = no
;    write list = +staff

smb.conf基础共享属性格式小结:

[NAME]                            共享名称,windows看见的文件夹名称。
comment = [STRING]                 注释信息。
path = /PATH/TO/SHARE_DIR        共享文件夹的路径。
browseable = yes|no                是否让所有人都看到此目录。
guest ok = yes|no                是否允许来宾账号。
writable = yes|no                是否允许写入。
read only = yes|no                是否设定只读。
write list = group,user            只有在此条中组或用户才能写入。

账号,权限相关

与nfs相同,samba的可行性权限也是用户权限与文件夹权限的交集,所以在设置时请确认用户,文件夹权限两点。

如果没有设定guest ok,samba默认是不允许匿名登陆的,一定要设定账号。

samba的命令与客户端访问

testparm:测试有效的exports内的属性。

testparm

pdbedit:管理smb的用户数据库。

pdbedit -L [-vm]      列出数据库中的用户等信息,-v详细信息,-w使用smbpasswd格式。
pdbedit -a -u [user]   新增一个用户,但必须存在实体用户。
pdbedit -r -u [user]   修改一个用户的信息,需搭配其他参数,可参考man文档。
pdbedit -x -u [user]   删除一个用户。
pdbedit -a -m -u [machine account计算机账号]   添加一个计算机账号,域相关。

smbpasswd:改变samba账户的密码。

smbpasswd -a [user]    新增用户以及密码。
smbpasswd -r [user]       修改用户密码。
smbpasswd -x [user]       删除用户。
smbpasswd -d [user]    禁止登陆。
smbpasswd -e [user]    启用用户。

smbclient:unix客户端访问工具。

smbclient -L //IPADDR [-U smbuser]    测试查看目标服务器所开放的共享文件夹
smbclient //IPADDR/dir    -U smbuser     连接共享服务器文件夹。

[root@host2 ~]# smbclient //192.168.1.1/test -U xiao     命令行形式访问。
Enter xiao's password: 
Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.6.23-30.el6_7]
smb: \> help
?              allinfo        altname        archive        blocksize      
cancel         case_sensitive cd             chmod          chown      
....

挂载访问。

mount -t cifs -o username=xiao,password=redhat -l //192.168.1.1/test  /tmp

samba搭建实例

smb服务搭建:


host1(192.168.1.1):

[root@host1 ~]# yum install samba
[root@host1 ~]# vim /etc/samba/smb.conf
        [test]
        comment = test on 192.168.1.1 server!
        path = /tmp/samba
        writable = yes
        guest ok = yes
        write list = xiao
[root@host1 ~]# testparm
[root@host1 ~]# pdbedit -a -u xiao
[root@host1 ~]# pdbedit -L
[root@host1 ~]# mkdir -pv /tmp/samba
[root@host1 ~]# setfacl -m u:xiao:rwx /tmp/samba
[root@host1 ~]# service nmb start
[root@host1 ~]# service smb start
ps.配置iptables并设置selinux。

测试:


host2(192.168.1.2):

[root@host2 ~]# smbclient -L //192.168.1.1 -U xiao          查看192.168.1.1共享的文件夹,并指定账户。
Enter xiao's password:                         输入密码。
Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.6.23-30.el6_7]        

    Sharename       Type      Comment
    ---------       ----      -------
    test            Disk      test on 192.168.1.1 server!
    IPC$            IPC       IPC Service (Samba Server Version 3.6.23-30.el6_7)
    xiao            Disk      Home Directories
Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.6.23-30.el6_7]

    Server               Comment
    ---------            -------
    HOST1                Samba Server Version 3.6.23-30.el6_7        可以看到host1。

    Workgroup            Master
    ---------            -------
    MYGROUP              HOST1
    WORKGROUP            XIAOLAOPO

[root@host1 ~]# smbclient //192.168.1.1/test -U xiao        访问192.168.1.1的共享文件夹test
Enter xiao's password: 
Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.6.23-30.el6_7]
smb: \> ls            列出文件夹。
  .                                   D        0  Tue Apr 26 19:03:03 2016
  ..                                  D        0  Wed Apr 27 17:32:03 2016
  a.txt                               A        0  Tue Apr 26 19:02:57 2016

        35418 blocks of size 524288. 23572 blocks available
smb: \> get a.txt                 尝试下载a.txt
getting file \a.txt of size 0 as a.txt (0.0 KiloBytes/sec) (average 0.0 KiloBytes/sec)
smb: \> put install.log            尝试上传。
putting file install.log as \install.log (440.0 kb/s) (average 440.0 kb/s)
smb: \> ls                    查看,上传成功。
  .                                   D        0  Wed Apr 27 17:46:55 2016
  ..                                  D        0  Wed Apr 27 17:32:03 2016
  a.txt                               A        0  Tue Apr 26 19:02:57 2016
  install.log                         A    49565  Wed Apr 27 17:46:55 2016

        35418 blocks of size 524288. 23572 blocks available

windows8(192.168.1.10):

访问192.168.1.1的共享文件夹:

windowstest1

身份验证:

windowstest2

尝试创建文件并查看所有者:

windowstest3

使用GUI工具SWAT管理samba

swat是samba的图形化管理工具,我们可以在配置后通过http来通过网页配置,并且内嵌帮助文档,能够非常直观的配置samba服务,swat是基于xinetd超级守护进程。
[root@host1 tmp]# yum install xinetd -y            安装xinetd超级守护进程
[root@host1 tmp]# yum install samba-swat -y        安装swat程序,主机安装包名为samba-swat,如果直接输入swat是找不到包的!!

[root@host1 tmp]#vim /etc/xinetd.d/swat            编辑swat的配置文件。
    # default: off
    # description: SWAT is the Samba Web Admin Tool. Use swat \
    #              to configure your Samba server. To use SWAT, \
    #              connect to port 901 with your favorite web browser.
    service swat
    {
            port            = 901            <---    监听的端口默认为901。
            socket_type     = stream        <---    socket类型为stream,面向连接的稳定数据传输,即为TCP协议。
            wait            = no            
            only_from       = 192.168.1.0            <---只监听指定范围内的主机,即限制登陆主机,设置为0.0.0.0 则默认为监听所有主机。
            user            = root                <---只允许使用指定用户登录。
            server          = /usr/sbin/swat        <---指定主程序路径。
            log_on_failure  += USERID            
            disable         = no            <---开启swat工具,yes为关闭。
    }
[root@host1 tmp]# service xinetd start        开启xinetd服务即可,因为swat是由xinetd来管理的。

[root@host1 tmp]# ss -tunl | grep 901        查看901端口号,的确为设置的tcp的901
tcp    LISTEN     0      64                    :::901                  :::*
访问服务器的901端口:

swat1

进行身份验证:

swat2

进入图形设定界面:

swat3

原创文章,作者:Net18_肖肖,如若转载,请注明出处:http://www.178linux.com/15661

(0)
Net18_肖肖Net18_肖肖
上一篇 2016-04-27 16:59
下一篇 2016-04-28 08:41

相关推荐

  • Shell脚本编程基础之一

      Linux为高效管理系统,提供了CLI命令行接口,供用户在命令提示符下输入命令,它有很多bash shell基础特,根据这些特性能够很灵活的使用命令,也支持使同时输入多个命令执行,命令之间用冒号分隔;但是要完成复杂多次重复性的操作,非常不便,系统管理工作变得很是繁忙,很难轻松完成工作任务;不过Linux的shell支持脚本编程,通过编写纯文本格…

    Linux干货 2016-08-15
  • 前两天课程中学到的东西

    一、计算机组成部分 由CPU,存储器和输入输出系统三大部分组成(或者可以说成四大部分) CPU:相当于大脑,用来执行最重要的任务:计算 存储器:相当于身体,为CPU提供计算所需要的所有东西 输入输出设备:四肢,为整个系统提供需要计算的内容,吧需要给供给CPU的东西放入存储器中 二、linux发行版,linux发行版主要有三个大类:debian,slackwa…

    Linux干货 2016-10-30
  • iptables详解

    iptables的工作机制 iptables有五个钩子函数(hook functions),也叫五个规则链。 1.PREROUTING (路由前) 2.INPUT (数据包流入口) 3.FORWARD (转发关卡) 4.OUTPUT(数据包出口) 5.POSTROUTING(路由后)   这是NetFilter规定的五个规则链,任何一个数据包,只要…

    Linux干货 2017-03-15
  • 软件包管理

    软件包管理 在linux中有人多的软件使用,比如我们使用的ifconfig,fdisk,btrfs文件系统等。可能这些软件在你原有的linux系统中并不存在,那么我们如何去使用这些工具呢。我们知道windows在需要软件的时候需要安装,当然对于linux系统一样需要安装。在linux下常用的安装工具我们使用的是rpm程序包(当然我们这边是针对CentOS而言…

    Linux干货 2016-08-19
  • 马哥教育网络班22期+第1周课程练习

    一、描述计算机的组成及其功能。 组成:CPU (运算器+控制器),存诸器(内存与硬盘),输入设备,输出设备。 运算器:对数据进行加工处理的部件(包括算述运算与逻辑运算)。 控制器:负责从存储器取出指令,按指令的要求发出控制信号,使各部件协调的,一步步的完成各种操作。 存储器:计算机记忆或暂存数据的部件 输入设备:人机接口,负责输入信息(数据与指令)转成计算机…

    Linux干货 2016-08-15
  • 数组

    一.数组 变量:存储单个元素的内存空间 数组:存储多个元素的连续的内存空间,相当于多个变量的集合。 索引:编号从0 开始,属于数值索引  注:索引可支持使用自定义的格式,而不仅是数值格式,即为关联索引,bash4.0 版本之后开始支持,bash 的数组支持稀疏格式(索引不连续) 二.数组的声明 declare -a ARRAY_NAME decla…

    Linux干货 2016-11-23