一、介绍:
samba是基于smb协议的一款开源软件,只需要经过简单的配置就能够实现不同系统之间的文件以及打印机的共享。
注意:1、我的机器全程是关掉SELINUX的,如果你使用了SELINUX,那么就可以全篇忽略了,毕竟差了好多设置呢
2、在samba配置完成后,也是关掉了iptables,因为楼主在配置samba的时候对iptables还并不熟悉,如果不关掉的话就需要添加iptables的端口白名单【tcp139、455 ;udp 137、138】,firewalld同理,即使你开了防火墙,那么配置上也不会有其他出入,所以可以继续参看此篇文章。
二、安装:
可以通过如下命令在线安装samba服务(要说一下就是samba软件的名称就是安装包包名称):
yum install -y samba
安装完成后可以通过如下命令检查samba安装情况:
rpm -qa | grep samba #如果返回如下信息则证明安装没有问题(注意版本号有可能与我不同)
#samba-libs-4.8.3-4.el7.x86_64 #samba-common-tools-4.8.3-4.el7.x86_64 #samba-common-libs-4.8.3-4.el7.x86_64 #samba-4.8.3-4.el7.x86_64 #samba-common-4.8.3-4.el7.noarch #samba-client-libs-4.8.3-4.el7.x86_64
samba配置文件概述,在/etc/samba/目录下如下文件:
#/etc/samba/smb.conf #samba服务的主要配置文件 #smb.conf.example #samba服务主配置文件给的参考配置文件 #/etc/samba/lmhosts #samba服务的域名设定,主要设置IP地址对应的域名,类似linux系统的/etc/hosts #/etc/samba/smbusers #samba服务设置samba虚拟用户的配置文件
三、配置
接下来大概介绍下samba主配置文件/etc/samba/smb.conf文件内容【文件分为两类配置参数,1、全局配置参数;2、区域配置/共享文件配置参数】】:
[global] #全局配置参
workgroup = MYGROUP #samba的工作组名称
server string = Samba Server Version %v #samba的说明信息 log file = /var/log/samba/log.%m #samba日志存放位置 max log size = 50 #samba日志文件大小 security = user #设置用户访问samba服务器的验证方式,共4种
#1、share:用户访问samba server,不需要提供用户名、密码,安全级别较低
#2、user:只能被samba server授权的用户访问,帐号密码在samba server中存在
#3、server:使用独立的远程主机验证来访主机提供的口令,如果认证失败,则使用user级别安全模式作为替代。
#4、domain:使用域控制器来验证 #passdb backend就是用户后台的意思。目前有三种后台:smbpasswd、tdbsam和ldapsam。sam应该是security account manager(安全账户管理)的简写 passdb backend = tdbsam #定义用户后台类型,目前有三种
#1、smbpasswd:使用smbpasswd命令给系统用户设置smb密码
#2、tdbsam:创建数据库文件,并使用pdbedit建立smb独立用户,smbpasswd -a username创建用户,并且设置密码【注意:username必须要在系统中先行创建或者已经存在】
也可以使用pdbedit来创建samba用户:
pdbedit -a username #新建samba用户
pdbedit -x username #删除samba用户
pdbedit -L #列出samba用户
pdbedit -Lv #列出samba用户详细信息
#3、ldapsam:基于ldap服务进行账户验证 load printers = yes #设置是否在启动smb服务同时共享打印机 cups options = raw #允许来自windows的作业 username map = /etc/samba/smbusers #设置虚拟用户文件存放位置,前文有提到过,虚拟用户文件介绍
注:此处赘述下为什么要给smb用户映射虚拟用户吧,假如我们将我们的smb用户【也是系统用户】给了使用人,那么如果他通过暴力破解了我们的用户密码,那么无疑是对系统的一种安全隐患
所以在此我们做一个映射,将我们的smb用户通过映射的方式映射为多个用户,然后将映射出的虚拟用户提供给使用人,从而解决此安全隐患;
登录密码依旧为smb server中给帐号设置的独立密码:假如你添加了系统用户username01,且密码设置为username01,并且通过smbpasswd -a username01将此用户添加到smb server
中,并且对该smb用户设置了smb独立密码为username02,在映射文件中映射的用户分别为user01 user02 user03,那么你只需将user01~user03以及密码username02告知用户即可
此处再说一下虚拟用户映射文件/etc/samba/smbusers配置方法【接上例】:username01 = user01 user02 user03 ;#映射为多个虚拟用户中间用空格分开即可 注:此处再啰嗦下,全局配置参数以及区域配置/共享文件参数之间就是用 【XXXXXXX】 作为分割 [database] #共享名称为database comment= do not arbitrarily modify the database file #提示信息 path=/home/database #设置共享目录 public = no #设置是否所有人都可见 writeable = yes #是否允许写入 guest ok = no #是否允许所有人访问 valid users = smb #指定访问用户 前文中通过smbpasswd添加至smb server中的用户
browseable = yes/no #设置是否允许浏览
read only =yes/no #设置是否只读
write list = username #设置允许访问共享目录的用户,如果有多个用户或者用户组,可以使用“,”隔开
四、连接验证测试分别通过windows以及linux访问smb服务:
1、通过windows访问:以上database为例子(验证用户,其他方式自行配置进行测试),此时关掉smb服务器防火墙,打开运行输入:
\\你samba服务器的ip地址,弹出窗口后输入smb server用户或者映射的虚拟用户,然后输入设置的密码,则可以进入到smb共享目录
2、通过linux访问:以上database为例子(验证用户,其他方式自行配置验证),同样关掉smb服务器防火墙,
在linux客户端安装cifs-utils,并且编辑配置文件用于存放smb服务端的用户名,密码,共享域,在root目录下创建auto.smb文件
存放smb server 的用户名,密码,共享域 配置文件 auto.smb配置方式【文件名可自定义】:
username=username01 #建议使用smb server 映射的虚拟用户
passwd=username02 #smb server 用户的密码
domian=MYGROUP #共享域
并且通过 chmod 600 auth.smb 将权限修改为只有root用户可以读写,然后创建文件夹 XXXXX,用语挂载samba服务端共享的目录,并且通过如下命令将挂载信息写入到fstab中,确保linux客户端每次开机都能够自动挂载远程samba共享目录
#//192.168.49.133/database /home/smbtest/myshare cifs credentials=/root/auth.smb 0 0
#fstab 各项参数请自行找fstab文档
//192.168.49.133/database #samba远程共享目录
/home/smbtest/myshare #本地用于挂载远程共享目录的文件
cifs #文件类型
credentials=/root/auth.smb #我们存放samba服务端用户、密码、共享域文件
最后通过mount -a 进行手动挂载验证,可以查看到smb server共享目录,并且能够读写,以及创建新文件/文件夹
至此完成全部配置以及访问测试。
五、扩展:
扩展:因每次开启服务器的时候都加载这个samba远程共享目录其实不是很现实,并且比较浪费资源,所以请各位看后续帖子,autofs自动挂载samba远程共享目录
【只有在使用的时候才会进行自动挂载,大大减小了开启服务器时候的资源占用压力,以及必要性】
Linux下samba服务配置,以及从不同系统【windows、linux】连接samba服务
原文:https://www.cnblogs.com/brightkite/p/10119754.html