Linux搭建samba私有云存储服务器

如今,我们需要在硬盘中存储大量的数据,尤其是存储用于机器学习的数据集。通常来讲,如果有一份数据,需要让多台计算机都能够访问,但是某些计算机由于硬盘存储空间不足,不能够拷贝一份副本在本地存放,或者为了节省总体的存储空间占用,或者为了当其中一些内容发生改变时,所有的计算机都能够获取到更新,那么,我们可以通过在其中一台计算机上搭建私有云存储服务器集中存储数据,并通过高速内网(通常使用千兆网络)互联,使得每一台计算机对其的访问都与本地存储无异。

实验环境

服务器端操作系统: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端口,否则可能出现正确配置却无法使用的情况。

  1. 创建任何人都可以无密码访问的共享目录

打开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
  1. 共享一个目录,使用用户名和密码登录后才可以访问

打开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 用户名

样例:

[[email protected]]# 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.me/2019/07/05/linux-install-samba-private-cloud-storage-server/
All articles are under Attribution-NonCommercial-ShareAlike 4.0
打赏
微信
支付宝
微信二维码图片

微信扫描二维码打赏

支付宝二维码图片

支付宝扫描二维码打赏

加入对话

2条评论

电子邮件地址不会被公开。 必填项已用*标注

8 − 7 =