用Samba搭建企业文件共享服务
前言
为了tomcat集群部署的时,上传的文件不需要其他操作就可以集中管理,我们通过网络共享硬盘的方式来做,技术有NFS、Samba。用samba是考虑到可以和Windows系统进行文件共享、还有自身提供了安全认证方式。网络共享硬盘适合20-200台机器的小型项目用。
简介
Samba 是 SMB/CIFS 网络协议的重新实现, 它作为 NFS 的补充使得在 Linux 和 Windows 系统中进行文件共享、打印机共享更容易实现。
环境准备
序号 | 系统 | ip | 备注 |
---|---|---|---|
A | Centos 6.4 | 192.168.1.100 | Samba服务器 |
B | Centos 6.4 | 192.168.1.101 | 挂载机器 |
C | Windows 10 | 192.168.1.102 | 挂载机器 |
安装
在A服务器上安装Samba,安装方式有rpm、源码包、yum,此处采用yum方式安装
1 | # yum install samba |
配置
服务启动
1 | # service smb start |
设置开机启动项
1 | # chkconfig smb on |
配置Samba
Smb服务的配置文件为/etc/samba/smb.conf,首先备份此配置文件,然后开始修改配置
网络相关配置
1 | workgroup = WORKGROUP |
workgroup = Samba Server 所要加入的工作组或者域
server string = Samba Server 的注释,可以是任何字符串,也可以不填。宏%v表示显示Samba的版本号
netbios name = Samba Server的NetBIOS名称
interfaces = Samba Server监听哪些网卡,可以写网卡名,也可以写该网卡的IP地址
hosts allow = 表示允许连接到Samba Server的客户端,多个参数以空格隔开
日志配置
1 | log file = /var/log/samba/log.%m |
log file = 日志文件位置,在文件名后加个宏%m(主机名),表示对每台访问Samba Server的机器都单独记录一个日志文件。如果pc1、pc2访问过Samba Server,就会在/var/log/samba目录下留下log.pc1和log.pc2两个日志文件。
maxlog size = 设置Samba Server日志文件的最大容量,单位为kB,0代表不限制。
安全配置
1 | security = user |
security = 设置用户访问Samba Server的验证方式,一共有四种验证方式。
- share:用户访问SambaServer不需要提供用户名和口令, 安全性能较低。
- user:Samba Server共享目录只能被授权的用户访问,由Samba Server负责检查账号和密码的正确性。账号和密码要在本Samba Server中建立。
- server:依靠其他WindowsNT/2000或Samba Server来验证用户的账号和密码,是一种代理验证。此种安全模式下,系统管理员可以把所有的Windows用户和口令集中到一个NT系统上,使用Windows NT进行Samba认证, 远程服务器可以自动认证全部用户和口令,如果认证失败,Samba将使用用户级安全模式作为替代的方式。
- domain:域安全级别,使用主域控制器(PDC)来完成认证。
passdbbackend = passdb backend就是用户后台的意思。目前有三种后台:smbpasswd、tdbsam和ldapsam。sam应该是security account manager(安全账户管理)的简写。
- smbpasswd:该方式是使用smb自己的工具smbpasswd来给系统用户(真实
用户或者虚拟用户)设置一个Samba密码,客户端就用这个密码来访问Samba的资源。smbpasswd文件默认在/etc/samba目录下,不过有时候要手工建立该文件。 - tdbsam:该方式则是使用一个数据库文件来建立用户数据库。数据库文件叫passdb.tdb,默认在/etc/samba目录下。passdb.tdb用户数据库可以使用smbpasswd –a来建立Samba用户,不过要建立的Samba用户必须先是系统用户。我们也可以使用pdbedit命令来建立Samba账户。pdbedit命令的参数很多,我们列出几个主要的。
pdbedit –a username:新建Samba账户。
pdbedit –x username:删除Samba账户。
pdbedit –L:列出Samba用户列表,读取passdb.tdb数据库文件。
pdbedit –Lv:列出Samba用户列表的详细信息。
pdbedit –c “[D]” –u username:暂停该Samba用户的账号。
pdbedit –c “[]” –u username:恢复该Samba用户的账号。 - ldapsam:该方式则是基于LDAP的账户管理方式来验证用户。首先要建立LDAP服务,然后设置“passdb backend = ldapsam:ldap://LDAP Server”
共享设置
1 | [test] |
comment = comment是对该共享的描述,可以是任意字符串。
path = 共享目录路径
browseable = browseable用来指定该共享是否(yes/no)可以浏览。
writable = 用来指定该共享路径是否(yes/no)可写。
valid users = 用来指定允许访问该共享资源的用户。
例如:valid users = bobyuan,@bob,@tech (多个用户或者组中间用逗号隔开,如果要加入一个组就用“@+组名”表示。)
配置文件正确性检查
1 | # testparm -v |
重启服务
1 | # service smb restart |
测试
先在C服务上测试
- 在File Explorer 中输入\192.168.1.100\test 回车
- 输入共享文件服务的用户名密码,即可看到是否成功
B服务器上测试
首先要安装Smbclient
1
2# yum install samba-client
访问文件服务器
1
2
3# smbclient //192.168.1.100/test -U root
Password:
smb: \>
输入密码后出现最后一行说明成功了
挂载
C服务器挂载
- 打开This pc -> Computer -> Map Network Drive
- 输入\192.168.1.100\test 点击确定
- 输入用户名密码
B服务器挂载
安装cifs-utils
1
# yum install cifs-utils
直接手动挂载
1
# mount -t cifs -o username=<username>,password=<password> //192.168.1.100/test /mnt/dir
写到/etc/fstab文件自动挂载
1
//192.168.1.100/test /mnt/dir cifs defaults,credentials=/etc/samba/pwd 0 0
/mnt/dir 为挂载点
/etc/samba/pwd 文件里面保存的是用户名和密码,并授予400权限,格式如下
1 | username=root |
执行
1 | # mount -a |
- 测试是否成功
查看/mut/dir 文件夹是否有文件
配置SELinux
如果selinux开启的话,注意配置,出现的情况是可以访问但无法操作的情况
#getsebool -a|grep samba
#setsebool -P samba_export_all_rw on