一、基本概念

  • CIFS:
      CIFS(Common Internet File System)是一种通用网络文件系统,主要用于网络设备之间的文件共享。CIFS可以在linux系统和windows系统之间共享文件,因此这种文件系统主要用于客户端是windows系统。
      Linux 系统可以挂载和访问 CIFS 文件共享 , 如同常见的网络文件系统一样。然而 , 由于 CIFS 是基于 NTFS 文件系统权限模型及其自身的身份验证系统来构建的 , 因而 CIFS 协议中的所有内容并不能很好地映射到 Linux 中
    CIFS可以提供的功能:
    1.访问服务器本地文件并读写这些文件
    2.与其它用户一起共享一些文件块
    3.在断线时自动恢复与网络的连接
    4.使用统一码文件名
  • samba: 提供cifs协议实现共享文件,主要用于windows与linux的网络文件系统
    软件包:
    Samba-common     Samba 的支持文件
    Samba-client      客户端应用程序
    Samba        服务器应用程序
    服务名称: smb、nmb
    服务端口: 通常使用TCP/445进行所有连接。还使用UDP137、UDP138和TCP/139进行向后兼容
    主配置文件: /etc/samba/smb.conf

二、CIFS文件系统的安装以及与smb用户共享文件配置

  • 环境:
    服务端ip:172.25.254.131
    测试端ip:172.25.254.231
  • 服务端:
  1. 服务端首先下载安装samba及其组件:yum install samba samba-common samba-client
  2. systemctl satrt smb 将服务开启
  3. 关闭防火墙,并设置开机不自启动
  4. 添加smb用户,smb用户必须是本地用户,如果没有,则需要新的本地创建
  • student是本身存在的用户,所以添加smb用户成功,而westos用户本身不存在,则添加失败
  • 新建wetsos用户后,添加相应的smb用户成功
  • pdbedit -L  显示系统中的smb用户
  • pdbedit -x   删除指定smb用户
  1. 修改selinux的状态为警告模式(selinux本身关闭时不用修改)
  • 客户端:
  1. 安装 samba-client
  2. cifs协议和nfs协议_CIFS文件系统(Samba)


  3. cifs协议和nfs协议_配置文件_02


  4. 测试:
    (1)smb用户上传文件
  • 匿名用户显示内容
  • cifs协议和nfs协议_配置文件_03


  • 用smb用户westos显示内容
  • cifs协议和nfs协议_cifs协议和nfs协议_04


  • 用smb用户身份上传文件(上传的文件是客户端本来存在的文件)
  • cifs协议和nfs协议_服务端_05

  • 服务端可以看到上传的文件
  • cifs协议和nfs协议_Samba_06

  • (2)smb用户挂载
    以挂载的方式进行文件共享,好处就是可以使用shell里的命令
  • 将smb用户家目录挂载在/mnt下
  • cifs协议和nfs协议_Samba_07


  • 进入/mnt创建一个文件wold
  • cifs协议和nfs协议_服务端_08


  • 服务端有此文件,文件共享成功
  • cifs协议和nfs协议_cifs协议和nfs协议_09


三、smb用户的访问控制

  • 域名的修改
  1. 默认域名为MYGROUP
  2. cifs协议和nfs协议_CIFS文件系统(Samba)_10


  3. 编辑配置文件修改域名为WESTOS
  4. cifs协议和nfs协议_Samba_11


  5. cifs协议和nfs协议_配置文件_12


  6. 域名修改成功
  7. cifs协议和nfs协议_cifs协议和nfs协议_13


  • selinux状态为强制模式时实现smb用户登录
  1. 修改selinux状态为强制模式
  2. cifs协议和nfs协议_CIFS文件系统(Samba)_14


  3. 此时smb用户不能正常登录
  4. cifs协议和nfs协议_配置文件_15


  5. 在服务端查看samba_enable_home_dirs的sebool值,并将其打开
  6. cifs协议和nfs协议_服务端_16


  7. cifs协议和nfs协议_配置文件_17


  8. cifs协议和nfs协议_cifs协议和nfs协议_18


  9. 此时smb用户可以正常登录
  10. cifs协议和nfs协议_cifs协议和nfs协议_19


  • 白名单的设定
  1. 编辑配置文件
  2. cifs协议和nfs协议_Samba_11


  3. cifs协议和nfs协议_cifs协议和nfs协议_21

  4. 表示只允许172.25.254.131登陆访问登陆访问,其余用户默认加入黑名单
  5. 测试:
  6. cifs协议和nfs协议_服务端_22


  • 黑名单的设定
  1. 编辑测试文件
  2. cifs协议和nfs协议_Samba_11


  3. cifs协议和nfs协议_配置文件_24

  4. 不允许172.25.254.131登陆访问,其余用户默认加入白名单
  5. 测试
  6. cifs协议和nfs协议_CIFS文件系统(Samba)_25


四、共享目录

  • 共享自己创建的目录
  1. .建立目录,并在该目录下创建文件用于测试
  2. cifs协议和nfs协议_服务端_26


  3. cifs协议和nfs协议_cifs协议和nfs协议_27


  4. 修改主配置文件,将新建的文件目录编辑进去
  5. cifs协议和nfs协议_cifs协议和nfs协议_28


  6. cifs协议和nfs协议_Samba_29


  7. 重启服务
  8. cifs协议和nfs协议_配置文件_30


  9. 客户端可以查看到该目录信息
  10. cifs协议和nfs协议_服务端_31


  11. 但是smb用户不能正常登录该目录
  12. cifs协议和nfs协议_服务端_32

  13. 这是因为selinux安全上下文的问题
  14. 修改该目录的安全上下文和smb服务的安全上下文保持一致
    递归刷新并显示刷新过程
  15. cifs协议和nfs协议_CIFS文件系统(Samba)_33


  16. 此时,smb用户可以正常登录该目录
  17. cifs协议和nfs协议_服务端_34


  • 共享系统目录
  1. 修改主配置文件
  2. cifs协议和nfs协议_cifs协议和nfs协议_28


  3. cifs协议和nfs协议_cifs协议和nfs协议_36


  4. 在服务端的/mnt下建立文件用于测试
  5. cifs协议和nfs协议_服务端_37


  6. 客户端能看到/mnt目录,但是不能看到/mnt里边的文件
    如果将/mnt的安全上下文修改为samba_share_t,显然不太合适,因为/mnt是系统目录
  7. cifs协议和nfs协议_服务端_38


  8. 修改方式:将selinux的功能限制打开
  9. cifs协议和nfs协议_服务端_39


  10. 此时客户端可以看到/mnt下的文件,共享成功
  11. cifs协议和nfs协议_配置文件_40


  • 共享目录的功能设定
    添加一个smb用户方便后续测试:
  • cifs协议和nfs协议_服务端_41


  • 设定该目录可以被写
  1. 编辑配置文件
  2. cifs协议和nfs协议_cifs协议和nfs协议_42

    cifs协议和nfs协议_cifs协议和nfs协议_43

  3. 表示允许所有用户可写
  4. 重启服务(后面不再赘述)
  5. cifs协议和nfs协议_配置文件_44


  6. 测试:
    此时不能删除共享目录下的内容
  7. cifs协议和nfs协议_服务端_45

  8. 服务端修改/hui的权限为777
  9. cifs协议和nfs协议_cifs协议和nfs协议_46

  10. 此时,删除文件成功
  11. cifs协议和nfs协议_Samba_47

  12. 上传文件成功
  13. cifs协议和nfs协议_cifs协议和nfs协议_48


  • 指定用户可写
  1. 编辑配置文件
  2. cifs协议和nfs协议_cifs协议和nfs协议_42


  3. cifs协议和nfs协议_Samba_50


  4. 测试
    westos用户可写
  5. cifs协议和nfs协议_Samba_51

  6. student用户不可写
  7. cifs协议和nfs协议_服务端_52


  • 指定用户组内成员可写
  1. 编辑配置文件
  2. cifs协议和nfs协议_cifs协议和nfs协议_42


  3. cifs协议和nfs协议_CIFS文件系统(Samba)_54

  4. 此处@|+ 表示指定用户组
  5. 测试:
    student不是westos组内成员,所以不可写
  6. cifs协议和nfs协议_Samba_55

  7. 添加student用户到westos组中
  8. cifs协议和nfs协议_配置文件_56

  9. 此时,student用户可写
  10. cifs协议和nfs协议_配置文件_57


  • 指定用户登录
  1. 编辑配置文件
  2. cifs协议和nfs协议_cifs协议和nfs协议_42


  3. cifs协议和nfs协议_配置文件_59


  4. 测试
  5. cifs协议和nfs协议_配置文件_60


  • 指定用户组内成员登录
  1. 编辑配置文件
  2. cifs协议和nfs协议_cifs协议和nfs协议_42


  3. cifs协议和nfs协议_Samba_62


  4. 测试
  5. cifs协议和nfs协议_服务端_63


  6. cifs协议和nfs协议_配置文件_64

  7. 添加westos用户到student组中,则可以正常登录
  8. cifs协议和nfs协议_Samba_65


  9. cifs协议和nfs协议_cifs协议和nfs协议_66


  • 设定该目录是否可被浏览
  1. 编辑配置文件
  2. cifs协议和nfs协议_cifs协议和nfs协议_42

  3. browseable = no(设定该目录不允许被浏览,该目录会被隐藏)
  4. cifs协议和nfs协议_cifs协议和nfs协议_68


  5. cifs协议和nfs协议_服务端_69

  6. browseable = yes(设定该目录允许被浏览,不隐藏)
  7. cifs协议和nfs协议_配置文件_70


  8. cifs协议和nfs协议_Samba_71


  • 设定指定用户为root用户
  1. 编辑配置文件
  2. cifs协议和nfs协议_cifs协议和nfs协议_42

  3. 注意此时要把目录的可写功能打开
  4. cifs协议和nfs协议_cifs协议和nfs协议_73


  5. 测试
    测试端上传一个文件
  6. cifs协议和nfs协议_Samba_74

  7. 在服务端:文件的用户名所有人为root
  8. cifs协议和nfs协议_Samba_75

  9. 如果将指定信息注释掉
  10. cifs协议和nfs协议_Samba_76

  11. 再次上传文件
  12. cifs协议和nfs协议_服务端_77

  13. 在服务端:文件的用户名所有人为student
  14. cifs协议和nfs协议_cifs协议和nfs协议_78


  • 匿名用户登录
  1. 编辑配置文件
  2. cifs协议和nfs协议_cifs协议和nfs协议_42


  3. cifs协议和nfs协议_Samba_80

  4. yes表示允许匿名用户登陆
  5. cifs协议和nfs协议_服务端_81


  6. 测试
  7. cifs协议和nfs协议_服务端_82


  8. cifs协议和nfs协议_配置文件_83


五、smb的多用户挂载

  • 首先将配置文件中匿名用户登录设定注释掉
  • cifs协议和nfs协议_cifs协议和nfs协议_84


  • 客户端:在root身份下将共享目录挂载到/mnt,可以看到里面的文件
    但是切换到student用户身份后,仍然可以看到/mnt的内容,这样是不合理的
  • cifs协议和nfs协议_CIFS文件系统(Samba)_85


  • 卸载
  • cifs协议和nfs协议_服务端_86


  • 实现多用户挂载的步骤
  1. 在客户端安装多用户挂载的软件
  2. cifs协议和nfs协议_Samba_87


  3. cifs协议和nfs协议_CIFS文件系统(Samba)_88


  4. 编写已知smb用户的认证文件(将用户身份和密码编辑进去)
  5. cifs协议和nfs协议_cifs协议和nfs协议_89


  6. cifs协议和nfs协议_服务端_90


  7. 给文件设置权限
  8. cifs协议和nfs协议_配置文件_91


  9. 挂载
    credentials=/root/passwd   为指定挂载时用到的用户文件,即用户名和密码
    sec=ntlmssp        表示认证方式为标准smb认证方式(加密方式为ntlmssp)
    multiuser          采用多用户挂载
  10. cifs协议和nfs协议_cifs协议和nfs协议_92


  • 在/mnt在新建一个文件,可以看到文件的所有人和所有组恰好是服务端smb用户westos的所有人和所有组
  • cifs协议和nfs协议_CIFS文件系统(Samba)_93


  • cifs协议和nfs协议_cifs协议和nfs协议_94


  1. 切换到本地用户student,则不能查看挂载到/mnt目录的文件
  2. cifs协议和nfs协议_服务端_95

  3. 证明未经认证的用户中不能看到/mnt里边的内容,如果想看,必须用smb用户加以认证
  • 给student添加新的smb认证
    (1)首先在服务端新建一个用户,并添加smb用户
  • cifs协议和nfs协议_cifs协议和nfs协议_96


  • 添加smb用户认证
  • cifs协议和nfs协议_cifs协议和nfs协议_97


  • 此时用student用户新建文件,可以看到文件的所有人和所有组恰好是服务端smb用户hello的所有人和所有组
  • cifs协议和nfs协议_配置文件_98


  • cifs协议和nfs协议_cifs协议和nfs协议_99


  • 注意
    如果在添加用户认证时在密码输入错误
  • cifs协议和nfs协议_cifs协议和nfs协议_100

  • 此时重新添加不成功
  • cifs协议和nfs协议_Samba_101

  • 我们需要清除缓存,重新认证
  • cifs协议和nfs协议_Samba_102


六、开机自动挂载

  • 先卸载
  • cifs协议和nfs协议_cifs协议和nfs协议_103


  • 编写自动挂载文件
  • cifs协议和nfs协议_CIFS文件系统(Samba)_104


  • cifs协议和nfs协议_Samba_105


  • 自动挂载成功
  • cifs协议和nfs协议_CIFS文件系统(Samba)_106