如今,我们需要在硬盘中存储大量的数据,尤其是存储用于机器学习的数据集。通常来讲,如果有一份数据,需要让多台计算机都能够访问,但是某些计算机由于硬盘存储空间不足,不能够拷贝一份副本在本地存放,或者为了节省总体的存储空间占用,或者为了当其中一些内容发生改变时,所有的计算机都能够获取到更新,那么,我们可以通过在其中一台计算机上搭建私有云存储服务器集中存储数据,并通过高速内网(通常使用千兆网络)互联,使得每一台计算机对其的访问都与本地存储无异。
实验环境
服务器端操作系统:Fedora 27 Server
服务器端使用yum安装软件包:samba、samba-client
Samba配置文件介绍
在linux系统上开启samba服务器时,需要使用配置文件。samba的配置文件smb.conf默认存放在“/etc/samba/smb.conf”,配置文件使用“#”作为注释一行的符号。默认的主要内容有:
[global] workgroup = MYGROUP server string = Samba Server Version %v security = user passdb backend = tdbsam load printers = yes cups options = raw [homes] comment = Home Directories browseable = no writable = yes [printers] comment = All Printers path = /var/spool/samba browseable = no guest ok = no writable = no printable = yes
global用于定义全局的相关配置。其中,”workgroup”用来定义工作组,一般情况下,需要我们把这里的”MYGROUP”改成”WORKGROUP”(windows默认的工作组名字)。security用于指定samba的安全等级。关于安全等级有四种:
- share:用户不需要账户及密码即可登录samba服务器,即任何人都可以访问该存储目录,为了安全,在非私有网络中不建议使用。
- user:由提供服务的samba服务器负责检查账户及密码(默认)
- server:检查账户及密码的工作由另一台windows或samba服务器负责
- domain:指定windows域控制服务器来验证用户的账户及密码。
passdb 用于指定用户后台,samba有三种用户后台:
- smbpasswd:该方式是使用smb工具smbpasswd给系统用户(真实用户或者虚拟用户)设置一个Samba 密码,客户端就用此密码访问Samba资源。smbpasswd在/etc/samba中,有时需要手工创建该文件。
- tdbsam:使用数据库文件创建用户数据库。数据库文件叫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” load printers 和 cups options 两个参数用来设置打印机相关。
另外,参数netbios name用于设置出现在“网上邻居”中的主机名;参数hosts allow用来设置允许的主机,可使用ip地址,如果在前面加”;”则表示允许所有主机;参数log file用于定义samba的日志文件存放路径;参数max log size用于指定日志的最大容量,单位是KB。
homes这部分内容共享用户自己的home目录,也就是说,当用户登录到samba服务器上时实际上是进入到了该用户的家目录,用户登陆后,共享名不是homes而是用户自己的标识符,对于单纯的文件共享的环境来说,这部分可以注视掉。
printers部分则用于设置打印机共享。
Samba实践
首先请检查服务器的防火墙如(selinux)是否关闭,或者或者是否放通445和139端口,否则可能出现正确配置却无法使用的情况。
- 创建任何人都可以无密码访问的共享目录
打开samba的配置文件/etc/samba/smb.conf,在[global]部分把”MY GROUP”改成”WORKGROUP”,把” security = user” 修改为 “security = share”, 然后在文件的最末尾处加入以下内容:
[share] comment = share all path = /tmp/samba browseable = yes public = yes writable = no #只读,设置为yes则可读可写
然后需要创建目录并设置权限
mkdir /tmp/samba chmod 777 /tmp/samba
重新启动samba服务
systemctl restart smb
- 共享一个目录,使用用户名和密码登录后才可以访问
打开samba的配置文件/etc/samba/smb.conf,[global] 部分内容设置为如下:
[global] workgroup = WORKGROUP server string = Samba Server Version %v security = user passdb backend = tdbsam load printers = yes cups options = raw
然后加入以下内容:
[myshare] comment = share for users path = /samba browseable = yes writable = yes public = no
保存配置文件,创建目录:
mkdir /samba chmod 777 /samba
然后添加用户。因为在[globa]中” passdb backend = tdbsam”,所以要使用” pdbedit” 来增加用户,注意添加的用户必须在系统中存在。
useradd user1 pdbedit -a user1 # 添加user1账号,并定义其密码
测试使用
1. windows
windows端直接添加映射网络驱动器,输入:\\IP地址\myshare\,并输入刚才设置的用户名密码即可。
2. linux
2.1 使用smbclient
格式:
smbclient //IP/共享名 -U 用户名
样例:
[root@localhost]# smbclient //10.0.4.67/myshare/ -U user1 Password: Domain=[LOCALHOST] OS=[Unix] Server=[Samba 3.0.33-3.29.el5_6.2] smb: >
出现如上所示的界面。可以打一个”?”列出所有可以使用的命令。常用的有cd, ls, rm, pwd, tar, mkdir, chown, get, put等等,使用help + 命令可以打印该命令如何使用,其中get是下载,put是上传。
2.2 使用mount挂载
对于需要使用linux系统的服务器来说,使用挂载这一方法是最好的,使用起来犹如本地挂载一块新硬盘到某个目录一样。
样例:
mount -t cifs //10.0.4.67/myshare /mnt -o username=user1,password=123456
参考资料
https://wiki.jikexueyuan.com/project/linux/samba.html
版权声明本博客的文章除特别说明外均为原创,本人版权所有。欢迎转载,转载请注明作者及来源链接,谢谢。本文地址: https://blog.ailemon.net/2019/07/05/linux-install-samba-private-cloud-storage-server/ All articles are under Attribution-NonCommercial-ShareAlike 4.0 |
“Linux搭建samba私有云存储服务器”上的2条回复
挺好的哈。不错不错~
非技术的路过。