Samba服务的安装与各类问题小记

Samba服务的安装与各类问题小记

九月 15, 2019
当前设备屏幕尺寸过小,推荐使用PC模式浏览。

基础概念

Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。实际上也被用于Windows对Linux的文件进行共享。

Linux搭建samba服务

以Ubuntu 16.04为例子:

  1. 首先更新一下仓库源以避免各种玄学bug:
1
apt-get update
  1. 安装samba服务
1
apt-get install samba
  1. 给定samba配置
1
vim /etc/samba/smb.conf

添加以下内容:

1
2
3
4
5
6
7
8
9
10
11
12
[share]
comment = share folder
path = /data/share-folder
create mask = 0700
force create mode = 0700
directory mask = 0700
force directory mode = 0700
force group = sambas
public = no
available = yes
writable = yes
browseable = yes

该配置文件指定了以下内容:

  • 访问该服务的必需位于sambas用户组里。(禁止无密码访问)
  • 这些用户对共享文件夹里的东西可读可写。
  • 共享文件夹位于/data/share-folder,映射地址为/share
  • 新建的文件和文件夹的权限均为700,即拥有者才可读可写可执行。

Tips:
添加sambas用户组:groupadd sambas
把一个用户加入该用户组:useradd -aG sambas <user-name>

  1. 添加samba密码:

(假设要为一个名为bai的Linux用户开通samba服务)

1
smbpasswd bai
  1. 重启samba服务以应用配置项:
1
service smbd restart

其它一些杂项:

  • smb默认走的是139端口,有些网络里139被ban掉了,可以在/etc/samba/smb.conf中的[global]字段下添加``smb ports = 1399,手动设定服务开放的端口(比如此时设为1399)。
  • windows可以使用telnet <IP> <PORT>来测试指定的端口是否通畅;否则请检查samba服务是否正常运行或是否防火墙有所限制。

客户端访问

Linux客户机

以用户bai和其密码baibai为例,若此时samba服务走的是1399端口、运行在IP192.192.192.192、映射的目录是/share

1
2
mkdir /home/remote-share
sudo mount -t cifs -o username=bai,password=baibai,port=1399 //192.192.192.192/share /home/remote-share

就会把远程的文件夹挂载到/home/remote-share目录下。

取消挂载请执行指令:sudo umount /data/remote-share

但是这个挂载一旦机器重启就会失效,所以还要固化这个过程:

1
vim /etc/fstab

添加一行:

1
//192.192.192.192/share /home/remote-share cifs username=bai,password=baibai,port=1399 0 0

进行挂载测试:

1
mount -a

Windows客户机

要注意的是,Windows默认走139端口且无特殊方法可进行修改;因此,如有必要的话,请利用端口转发等奇技淫巧来实现对不同端口的samba服务进行对接。

打开我的电脑-映射网络驱动器:

1.jpg

配置盘符并用samba账户登录:

2.jpg

其它的一些奇技淫巧

事实上,139由于之前的勒索病毒问题被大规模不分青红皂白的封禁,所以在阿里云等服务商下是走不通的,解决办法在这里提供一些思路:(针对Windows或其它非Linux设备)

  1. 利用Windows的netsh interface portproxy进行端口转发;
  2. 一样还是端口转发,但现在本机跑一个最小的虚拟机或docker镜像。利用itables指令即可,很简单——世界上最小的Linux镜像不过5mb,非常时候干这件事。
  3. 如果你有多台主机,在本地的局域网中开一个Linux系统(桥接机),挂载云端的非139端口的映射目录;在这个桥接机上把这个挂载了云端映射目录再的目录再次通过samba的139标准端口开放。需要注意的是,需要在桥接机上以root用户登录samba服务,才能修改云端的共享文件夹。