2-7单元-文件服务器三剑客之二 SAMBA服务器

SAMBA 的介绍

SAMBA —— SMAServer (Server Message Block) ,用来沟通 Windows 与 Unix Like 这两个不同操作平台,实现文件共享

1 )主要功能:

  • 共享文件与打印机服务
  • 可以提供用户登录 SAMBA 主机时的身份认证,以提供不同身份的个别数据
  • 可以进行 Windows 网络上的主机域名解析 (NetBIOS Name)

在同一个组中,NetBIOS Name 是独一无二的

  • 可以进行设备的共享 (例如 Zip、CD-ROM)

2 )SAMBA 使用的  NetBIOS (Network Basic Input / Output System)通信协议

3 )SAMBA 使用的 daemons

  1. 取得对方主机的 NetBIOS Name ,定位该主机所在
  2. 利用对方给予权限访问可用资源

SAMBA 是通过两个服务来控制这两个步骤,分别是:

  • nmbd:这个 daemons 是用来管理工作组、NetBIOS Name 等的解析。主要利用 UDP 协议开启 port 137、138 来负责名称解析的任务。
  • smbd:这个 daemons 的主要功能是用来管理 SAMBA 主机共享的目录、文件与打印机等。主要利用可靠的 TCP 协议来传输数据,开放的端口为 139 、445.。

4 )连接模式的介绍(Peer / Peer、Domain model)

  1. Peer / Peer (Workgroup mode,对等模式)
  2. Domain model (主控模式)

SAMBA 服务器的基础设置

SAMBA 所需软件

  • samba:提供 SMB 服务器所需的各项服务程序(smbd 及 nmbd)、相关文件以及其他与 SAMBA 相关的 logrotate 配置文件等
  • samba-client:Linux 作为 SAMBA Client 端时,所需的工具命令
  • samba-common:提供服务器与客户端都会使用的数据

安装 及 启动服务

  • dnf install samba samba-client samba-common -y
  • systemctl enable --now smb.service

 SAMBA  的软件结构

  • /etc/samba/smb.conf:SAMBA 的主要配置文件
  • /etc/samba/lmhosts:NetBIOS Name 对应的 IP 文件
  • /etc/sysconfig/samba:提供启动 smbd、nmbd 时,还想要加入的相关服务参数
  • /var/lib/samba/private/{passdb.tab,secrets.tab}:管理 SAMBA 的用户账号/密码时,用到的数据文件

基础的网上邻居共享流程 与 smb.conf 的常用设置项目

网上邻居的默认限制:

  • 服务器与客户端必须要在同一个网络中 (否则需要修改 Windows 默认防火墙)
  • 最好设置为同一工作组
  • 主机名称不可相同(NetBIOS Name)

注意:

工作组与主机名设置—— 右击“我的电脑”- 弹出快捷菜单中,选择“属性” - 修改相关设置。

Windows 共享设置步骤:

  1. 打开“资源管理器”,然后再要共享的目录、磁盘、设备(如打印机)上面右击,在弹出的快捷菜单中,选择“共享”,设置共享数据。
  2. 建立一组给用户使用的账号与密码,让其他主机的用户可以通过该账号密码连接进入,使用网上邻居共享的资源。

注意:网上邻居的资源名称,写法“\\IP\共享资源名称”  ;共享资源名称为 “VB Game”

 SAMBA 的设置:

  1. 服务器全局设置方面:在 smb.conf 中设置好工作组、NetBIOS Name 主机名、密码使用状态(无密码共享或本机密码)等
  2. 规划准备共享的目录参数:在 smb.conf 中设置好预计要共享的目录或设备以及可供使用的账号数据
  3. 建立所需要的文件系统:根据步骤2 设置,在 Linux 文件系统中建立好共享出去的文件或设备,以及相关权限参数
  4. 建立可用 SAMBA 的账号:根据步骤2 设置,建立所需的 linux 实体账号,再以 pdbedit 建立使用 SAMBA 的密码
  5. 启动服务:启动 SAMBA 的 smbd 、nmbd 服务

Linux 系统的使用

1 ) smbclient:查询网上邻居共享的资源,以及使用类似 FTP 的方式上传/下载网上邻居

  1. smbclient -L //[ IP | hostname ]  [ -U username ]                   # 查询网上邻居共享资源

  2. smbclient -L '//[ IP | hostname ]/资源名称'  [ -U username ]  # 使用某个账号来直接登录某台主机的某个共享资源 (类似 FTP 的方式登录远程主机)

  • smb: \>              # 在smb: \> 下面其实就在 //[ IP | hostname ]/资源名称' 这个目录下
  • smb: \> ls          # 查看当前所在目录的文件
  • smb: \> get        #  下载单一文件
  • smb: \> put        #  上传单一文件
  • smb: \> del        # 删除某个文件
  • smb: \> rm         # 删除文件
  • smb: \> exit        # 离开 smbclient 的软件功能

 2 ) mount.cifs:直接挂在网上邻居成为网络驱动器 (将远程服务器共享出来的目录整个挂载到本机的挂载点,可直接执行复制,编辑等操作)

mount -t cifs // IP/共享资源   /挂载点  [ -o options ]

-o 后面可接的常用参数 (options)

  • username=登录账号
  • password=登录密码

例:

SMB 服务器主机

  • cd /etc/samba
  • cp -p smb.conf.example   smb.conf     # 用配置文件模板复制生成 SAMBA 主配置文件 smb.conf
  • vim /etc/samba/smb.conf                     # 编辑 smb.conf 配置文件,添加 共享目录【HAHA】及参数

[HAHA]                                # 共享目录的名称

comment = westos dir         # 共享目录的解释

path = /westos                     # 共享目录的路径

  • smbclient  -L  //172.25.254.20 -U westos  # 用 westos 用户身份 登录、查询 172.25.254.20 的网上邻居资源

客户端主机 (Client)

  • mount -t cifs //172.25.254.20/HAHA  /mnt/  -o username=westos,password=123    # 临时 挂载远程主机的共享目录(HAHA)
  • vim /etc/fstab                # 设置开机启动 , 永久 自动挂载远程主机的共享目录(HAHA)到本地挂载点 /mnt 下

//172.25.254.20/HAHA          /mnt/         cifs         defaults,username=westos,password=123 

  • systemctl restart smb.service     # 重启 smb.service 服务

测试:

允许远程登录 SAMBA 服务器主机的共享的资源,有可读写权限

SMB 服务器主机

  • chmod 777 /westos     # 使共享资源的目录权限为 777 (所有用户都可读写,可执行)
  • vim /etc/samba/smb.conf                     # 编辑 smb.conf 配置文件,添加 【HAHA】的 可读写权限

writable = yes

  • systemctl restart smb.service     # 重启 smb.service 服务

 客户端主机 (Client)

  • cd /mnt
  • touch file1             #  可以新建 文件 file1 (数据同步 远程主机/westos)

允许 匿名用户登录 访问共享资源

SMB 服务器主机

  • vim /etc/samba/smb.conf                     # 编辑 smb.conf 配置文件,允许匿名用户访问

map to guest = bad user                             # 映射 匿名用户 以访客身份登录

guest ok = yes                                             # 允许访客登录

  •  systemctl restart smb.service              # 重启 smb.service 服务

 

测试: 匿名用户登录

 

 用户访问控制

SMB 服务器主机

  • vim /etc/samba/smb.conf                     # 编辑 smb.conf 配置文件

hosts  allow = 172.25.254.20                     # 只能允许 172.25.254.20 访问,其他 IP 不能访问

hosts  deny = 172.25.254.20                     # 不允许 172.25.254.20 访问,其他 IP 能访问

  •  systemctl restart smb.service              # 重启 smb.service 服务

 

测试:

设置 客户端 多用户认证访问远程共享资源

客户端主机 (Client)

  • dif install cifs-utils -y      # 安装 SAMBA  多人挂载工具
  • touch /root/smbauth              #  参考 man mount.cifs  说明,建立 认证文件——smbauth
  • vim

username = westos                     # root用户 ,持有 SAMBA 用户 westos 以及 密码,登录 SMB.service

password = 123

  •  chmod 600 /root/smbauth    #  设置文件权限,只有root 用户 可写,可执行 文件 smbauth
  • mount -o credentials=/root/smbauth,sec=ntlmssp,multiuser  //172.25.254.20/HAHA   /mnt  # 多用户认证挂载

参数

credentials=/root/smbauth     # root用户 隐藏 登录账户及密码(账户信息直接读取 文件smbauth)

sec=ntlmssp                          # 用户登录,认证方式 ntlmssp

multiuser                                # 支持多用户 挂载

 测试:

cifscreds add [ -u username ] [ -d ] < hosts | domain>       # 添加 其他用户  -u SAMABA 账户用户 身份挂载、登录 方式

cifscreds clear [ -u username ] [ -d ] < hosts | domain>     # 除掉 某用户  -u SAMABA 账户用户 身份挂载、登录  方式

cifscreds clearall                                                                # 清除所有用户 -u SAMABA 账户用户 身份挂载、登录 方式

客户端主机 (Client)

  • su - linux                     # 客户端 切换 linux 用户身份
  • cifscreds add  -u westos 172.25.254.20         #  linux 用户身份 以 SAMABA 账户用户westos 身份 ,登录、挂载SMB共享资源

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值