安装

首先安装samba,Ubuntu的话就是

sudo apt install samba

总之先装好

先要确定一下samba的版本,因为自从4.11开始,就默认关闭了smb1的支持了,因为smb1存在安全漏洞,但有些老软件又只支持smb1,因为它真的非常老,所以兼容性很强,记住版本号,后面会用到

samba -V

编辑配置文件

sudo nano /etc/samba/smb.conf

其中#;开头的行都是注释掉的,修改的时候需要注意

smb版本支持的配置

目前市面上几乎全部的系统和软件都能兼容smb1(除了默认禁用的),如果发现有其其怪怪的问题,可以把服务端的smb1打开,虽然说着不太安全
大部分的系统和软件可以兼容到smb2,但有些软件(比如es文件管理器),在有smb2的时候还是会优先使用smb1导致速度很慢
如果你的samba版本是4.11之前的,他会默认只开启smb1,如果是之后的,默认只开启smb2
找到配置文件中的[global],在他下面写下这些配置
正常情况下,兼顾兼容性和速度,开启smb1和smb2

server min protocol = NT1
server max protocol = SMB2

如果希望更安全,可以只开启smb2

server min protocol = SMB2
server max protocol = SMB2

如果你希望他在新系统上速度更快点,那么可以开启到smb3,但注意一个问题,旧版本无法识别这个smb3的配置,他会解析成仅smb1

server min protocol = NT1
server max protocol = SMB3

访问验证配置

举个🌰,在win10下,默认会限制不允许访问那种无需输入用户名密码的匿名共享,那么我们可以换一种思维,将验证失败的都当成匿名访问,那么只要随便输入一下都能进行匿名访问了,不需要修改组策略
依然是找到配置文件中的[global],在他下面写下这些配置

map to guest = bad user
null passwords = no
invalid users = root

最后这行指定了在匿名模式下使用root的权限去访问文件,如果不需要匿名访问,那就不要配置这行,即可正常在win10访问

绑定监听网卡

如果你有多个网卡,内网外网什么的,可以设置让它只监听一个

bind interfaces only = yes
interfaces = eth0

最后这行指定了监听eth0这个网卡

共享目录配置

加到配置最后面,一个共享目录加一个

[data]
   comment = 750G
   path = /data
   browseable = yes
   create mask = 0755
   directory mask = 0755
   valid users = root
   writeable = yes
   guest ok = no

[]里面的内容是共享的名称
comment鼠标放上去显示的描述信息
path共享目录硬盘路径
create mask创建新文件的权限,去掉将保持原来的权限
directory mask创建新文件夹的权限,去掉将保持原来的权限
valid users允许什么用户访问这个目录
writeable是否允许写入
guest ok匿名的时候是否允许访问

访问用户名密码设置

首先用户必须是系统里有的,因为读写文件的时候就是按着系统里这个用户的权限来读写的,密码倒是可以和系统里的密码不一样

sudo smbpasswd -a root

创建一个叫root的smb共享用户,根据提示输入密码即可完成设置

全部配置好了就重启服务吧

sudo /etc/init.d/smbd restart

挂载

smb共享可以作为cifs挂载在linux系统下

# 其中 centos可能需要安装cifs支持 openwrt需要编译时加入
yum install cifs-utils.x86_64

# 挂载  用户名admin密码1234 挂载1.1的file目录到本地的/cifs
mount -t cifs -o username=admin,password=1234 //192.168.1.1/file /cifs