• samba服务简介
    共享文件系统,存储分离技术,增加数据交互的稳定性,共享的是磁盘,或文件系统的读写权力。
    smb = Server Message Block Sum (服务器消息块 Sum公司开发)
    cifs = Common Internet File System Miscrosoft (通用因特网文件系统 微软公司开发)
    windows系统共享文件时用到的协议smb (smb是由miscrosoft+sum)
    Linux使用的协议是cifs。
  • smb服务主要的作用是是使客户机可以通过该服务访问服务器上的文件共享系统;
    cifs 客户端可以访问服务器上的文件并要求服务器提供服务,cifs是 smb 的一种特殊实现,所以 smb 和 cifs 的客户端之间可以相互访问。

一、samba基本信息

  • 服务启动脚本:smb.service
    主配置目录: /etc/samba
    主配置文件: /etc/smb.conf
    安全上下文:samba_share_t
    端口:139、445
    安装包:samba、samba-common
  • 1、window系统共享文件给linux系统:
    在window系统建立所要共享目录westos,设定用户名和密码,且设定目录权限为完全控制、更改、读取,window系统的ip:172.25.254.94。对于windows系统,在运行里面输入\172.25.254.94即可看到共享的文件。
    在linux系统中访问windows共享目录的方式:linux系统安装samba-client(selinux 开启状态下);
    smbclient -L //172.25.254.94 -U administrator :-U指定用户为window系统的用户administator,-L:表示查看用户列表,输入密码之后,即可看到window系统共享的内容。(没有密码会直接拒绝访问)

    可以用以上客户端的方式访问(必须要输入密码),也可用挂载的方式,将windows的共享目录挂载到/mnt目录,这样就实现了/mnt目录和系统存储是分离的,

    用户可以在/mnt目录下创建(创建的文件其实都在windows系统的/westos目录中)和删除文件
  • 2、linux系统共享文件给windows系统:
    在selinux 是开启状态下,在根下建立westos目录

    安装 samba-common samba-client samba软件

    samba服务启动

    将主配置目录中的模板文件复制作为主配置文件(内容更详细)

    查看samba手册

    ls -Zd /westosdir 查看目录的安全上下文,将目录的安全上下文修改为samba_share_t ,刷新设定
  • 1、共享自建目录,在samba主配置文件/etc/samba/smb.conf 中设定目录可写,修改目录的安全上下文之后,即可成功访问;
    编辑smb.conf文件,指定共享目录名、说明、路径、目录可写
    [WESTOS] :共享名称
    comment = westos:共享说明
    path = /westos:共享路径

    重启smb服务后设定生效,修改目录权限为777,
  • samba用户的建立
    samba用户必须是被地存在的用户

    smbpasswd -a westos:添加用户(建立smb账号)

    pdbedit -L :查看用户列表
    pdbedit -x westos:删除用户


    westosb的IP为172.25.254.88

    linux系统客户端使用方式两种

    1、用客户端的方式访问(必须要输入密码),查看用户列表

    2、用挂载的方式,将linux系统的共享目录挂载到 /mnt目录


    在windows系统,打开运行,输入//172.25.254.88 ,输入westosb主机中的用户账号和密码进行访问,即可看到linux系统共享的目录,在目录中建立的文件,在linux系统的共享目录下依然存在。当再次访问时,不需要输入用户名和密码。
    net use :查看访问记录 ;
    net use * /del :删除访问记录。

二、samba的访问控制

  • 共享系统目录/mnt

    列出westosb的samba服务所共享的目录

    可以看到 MNT 共享目录名,但是进入后不能显示内容,这是因为 selinux 开启时导致的,但由于是系统目录,不能修改目录安全上下文,否则会造成一些系统问题

    设定selinux不对目录进行影响 :
    方法一:将selinux设定为permissive模式;
    方法二:取消selinux对samba服务读写文件的限制:开启 setsebool -p samba_export_all_rw

    此时selinux在强制模式下,用户也可以访问samba服务 共享目录的内容

    当不做任何限制时,用户自建目录和系统目录都可以被任意挂载;(客户端westosa可以挂载服务器westosb的共享目录)当设定全局白名单后,只有IP为172.25.254.88(westosb)的主机能挂载samba的共享目录,其余主机挂载时会出现设备不存在的报错信息;


    westosa不能挂载samba的共享目录

    当设定全局黑名单后,除了IP为172.25.254.88的主机,其余主机都能挂载samba的共享目录,88主机在挂载时会出现设备不存在的报错信息;


    westosa主机能挂载samba的共享目录

三、samba的常用配置参数

  • 将之前的设定注释
    writable = yes:可写
    当设定局部白名单后(对于/westos目录的访问进行限制),只有88主机可以挂载/westos目录(只对该共享目录的挂载有影响)

    将目录权限设定如下

    以哪个用户的身份挂载,在/mnt目录下建立的文件,文件的拥有者和拥有组是root,但在/westos目录中,文件的拥有者和拥有组就是挂载的用户


    westosa不能挂载共享目录

    将写权限注释

    此时将不能在/mnt目录写入文件

    write list = westos:指定只有westos用户可以对共享目录/westos进行写操作,此时重新以lee的用户身份挂载共享目录到/mnt,将不能在/mnt目录中建立文件


    westos用户可以对共享目录/westos进行写操作

    write list = +(@)westos,指定westos组的成员可以对共享目录/westos进行写操作

    修改lee的用户组为westos之后,重新以lee的用户身份挂载共享目录到/mnt,此时lee也可以在 /mnt目录中建立文件

    valid users = westos : 指定westos可以访问(挂载)这个共享目录,设定完成,lee将不能挂载共享目录

    valid users = +(@)westos : 指定westos组的成员可以访问(挂载)这个共享目录,设定完成,lee将可以挂载共享目录


    browseable = yes:设定共享目录是否隐藏,设定为yes之后,smbclient -L //172.25.254.103 可以看到共享目录

    设定为no之后
    smbclient -L //172.25.254.103 将看不到共享目录,但仍然可以被挂载和使用


    匿名用户默认不能访问共享目录的内容(smbclient //172.25.254.103)

    guest ok = yes:设定允许匿名用户访问

    加上map to guest = bad user:将没有身份的用户映射为guest用户

    此时匿名用户可以访问共享目录

    admin users = lee:设定lee用户在共/mnt建立文件时,在/westos目录中,所建立文件拥有者的身份是root