Linux搭建samba服务

Linux搭建samba服务

基于Armbian系统(基于Debian)搭建,其他Linux发行版可能会有些不同,搭建方法基本类似。

一、安装Samba

apt -y install samba

二、修改samba的配置文件

samba的配置文件位于/etc/samba/smb.conf

默认的smb.conf文件中有很多注释(#开头),可以用 cat /etc/samba/smb.conf | grep -v "#" 命令过滤掉#开头的行,方便查看


1、配置匿名访问的smb共享

可以先备份下原本的smb配置文件cp /etc/samba/smb.conf /etc/samba/smb.conf.bak,然后将编辑smb.conf文件,将文件内容修改为:

#======================= Global Settings =======================
[global]
	workgroup = WORKGROUP
	server string = Samba Server Version %v
	security = user
	passdb backend = tdbsam
	load printers = yes
	cups options = raw
	map to guest = Bad User

#======================= Share Definitions =======================
[public]
	comment = public
	path = /opt/myShare/public
	browseable = yes
	public = yes
	writable = yes

由于我只是用来smb共享文件,所以将原本smb.conf中的[homes]、[printers]等配置都删除了

修改好smb.conf文件后,用testparm命令测试配置是否正确。没有错误后,输入systemctl restart smbd.service重启smb服务。

这里要注意[global]设置中的map to guest = Bad User配置,是匿名访问的关键

注意点:

①、上述共享的/opt/myShare/public目录要设置777权限,不然默认权限下,就算设置了writable = yes,也是没有权限写入的

chmod 777 /opt/myShare/public

②、网上有部分教程将[global]设置中的security = user设置为 security = share,说share是指 用户不需要账户及密码即可登录samba服务器,但是我实测下来,testparm会报错

rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)
WARNING: Ignoring invalid value 'share' for parameter 'security'
Load smb config files from /etc/samba/smb.conf
rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)
WARNING: Ignoring invalid value 'share' for parameter 'security'
Error loading services.

③、这样设置后,匿名用户创建的文件在linux中会显示

为了解决这个问题,可以在[global]设置中增加guest account配置

#======================= Global Settings =======================
[global]
	workgroup = WORKGROUP
	server string = Samba Server Version %v
	security = user
	passdb backend = tdbsam
	load printers = yes
	cups options = raw
	map to guest = Bad User
	guest account = sky

将匿名用户映射为sky用户(sky用户是自己创建的,创建方法见下面的配置加密访问的smb共享),此时匿名用户新建的文件在linux中就会显示


2、配置加密访问的smb共享

既然是加密访问,首先就要创建用户并设置密码

①、先创建linux用户

useradd -s /sbin/nologin sky

②、再创建samba用户,根据提示设置好密码即可

pdbedit -a -u sky

③、验证账号是否添加成功

pdbedit -L  #列出所有的账号

用户就创建好了

在上述smb.conf配置文件中增加[share]共享目录,注意加密的要将public设置为no

#======================= Share Definitions =======================
[share]
	comment = share
	path = /opt/myShare/share
	browseable = yes
	public = no
	writable = yes

修改好smb.conf文件后,同样用testparm命令测试配置是否正确。没有错误后,输入systemctl restart smbd.service重启smb服务

此时,在windows上访问该smb服务时,只需要输入刚才添加的用户和对应的密码即可访问share目录,如果发现不能写入文件,别忘记了和之前匿名的方式一样需要将共享的/opt/myShare/share目录设置777权限

chmod 777 /opt/myShare/share

另外,如果将browseable参数设置为browseable = no,那么在windows映射网络驱动器时,输入\\192.168.123.88 点击浏览的时候是看不到share文件夹的,但是可以直接输入全路径添加,就是浏览的时候看不到了

三、扩展:samba分享移动硬盘或U盘里的文件

1、挂载移动硬盘

mount /dev/sdb1 /media/smbshare/

2、设置samba共享,在smb.conf文件中增加

#======================= Share Definitions =======================
[USB_Device]
	comment = USB_Device
	path = /media/smbshare
	browseable = yes
	public = no
	writable = yes

重启smb服务后即可

注意点:

移动硬盘或U盘被挂载使用samba共享并且正在使用时,umount会提示target is busy.

此时要想umount,先将samba服务停用,输入systemctl stop smbd.service停止smb服务,再输入umount /media/smbshare即可成功卸载磁盘,然后再输入systemctl start smbd.service启动smb服务

posted @ 2020-09-06 21:22  复制粘贴一把梭  阅读(1042)  评论(0编辑  收藏  举报