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服务