linux smb 服务开启实现文件共享

linux smb 服务开启实现文件共享

如何实现不同系统间的文件共享操作

想要实现文件共享有很多种方式 比如 NFS,FTP,SMB,云存储,NAS 等,今天我们 SMB 协议来搭建一个跨平台的文件共享。

SMB 介绍

服务器消息块(Server Message Block,缩写为 SMB),又称网络文件共享系统(Common Internet File System,缩写为 CIFS, /ˈsɪfs/),一种应用层网络传输协议,由微软开发,主要功能是使网络上的机器能够共享计算机文件、打印机、串行端口和通讯等资源。它也提供经认证的进程间通信机能。它主要用在装有 Microsoft Windows 的机器上,在这样的机器上被称为 Microsoft Windows Network。

经过 Unix 服务器厂商重新开发后,它可以用于连接 Unix 服务器和 Windows 客户机,执行打印和文件共享等任务。

与功能类似的网络文件系统(NFS)相比,NFS 的消息格式是固定长度,而 CIFS 的消息格式大多数是可变长度,这增加了协议的复杂性。CIFS 消息一般使用 NetBIOS 或 TCP 协议发送,分别使用不同的端口 139 或 445,目前倾向于使用 445 端口。CIFS 的消息包括一个信头(32 字节)和消息体(1 个或多个,可变长)。

搭建 SMB 服务

  1. 安装 samba

    1
    2
    apt update
    apt install samba
  2. 创建用户登入的用户

    • 现在 linux 系统中添加用户名
      1
      sudo useradd <用户名>
    • 添加 smb 用户名密码
      1
      sudo smbpasswd -a <用户名>
      然后在输入密码 这个账号用于登入这个 smb 服务
  3. 编辑配置文件

    1
    vim /etc/samba/smb.conf

    smb 的默认配置文件就是这个路径然后我们将需要共享出去的文件夹配置上去 这个文件夹的权限得改一下

    1
    sudo ch
    1
    2
    3
    4
    5
    [共享名称]
    path = /共享的目录路径
    browseable = yes
    read only = no
    valid users = <用户名>
  4. 启动 smb 服务

    1
    2
    sudo systemctl start smbd
    sudo systemctl status smbd
  5. 开启防火墙
    需要将防火墙的 139 和 445 两个端口打开,我这里用的是云主机所以直接去控制台设置一下就行

  6. 连接
    可以用 windows 的映射网络驱动器 来连接就好或者你也可以下载个 smb client 工具去连接
    linux smbclient //共享服务器 IP 地址/共享名称 -U 用户名

    windows //共享服务器 IP 地址/共享名称

    mac smb://共享服务器 IP 地址/共享名称