使用Samba在Linux服务器上搭建共享文件服务的方法

最近我们的小团队需要在服务器上共分出一个共享文件夹用于大家存放公共的资源文档, 大家想啊,这肯定很简单呀,在Windows下面只要创建相关的windows account,共享某个文件夹,把读/写权限给我们创建的account的,就完成了共享,但在Linux下面就没有这么美好了,网上查阅资源资料多指向通过Samba完成共享任务,但一些blog只介绍了怎么做,但没有为什么这么 做,搭建工作且不太顺利,对Linux算不上熟悉,走了很多弯路,所以通过这篇blog深入理解其中的每一步。

Samba的简介

Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。这些是废话….. 来看点有意思的。作者Tridgwell申请使用SMBServer ( Server Message Block 的简写 ) 注册这个软件的商标, 因为SMB 是没有意义的文字而没有办法注册。然后他就翻字典,看到SAMBA一遍正好包含SMB几个字母 ,这这个词也是我们熟知的拉丁舞蹈的名称,然后就有了三八这个名字🙄。(自百科)

搭建Samba共享目录, 如果需要使用用户名/密码的形式访问共享目录,我们需要先创建Linux的user,然后通过smbpasswd创建samba用户(用户名需要一致),原文在这里:

To provide authentication on a standalone host, you have to create the accounts locally on the operating system and additionally in the Samba database. By default, Samba uses the tdbsam back end and stores the database in the /usr/local/samba/private/passdb.tdb file. Optionally set a different location in the smb.conf file using the passdb backend parameter. See the smb.conf 5 man page for details(from https://wiki.samba.org/index.php/Setting_up_Samba_as_a_Standalone_Server).

搭建需要用户名验证的共享目录

1. 创建共享目录的用户,  我们这里使用来组(group)来演示

groupadd smbgrp
useradd fielshare -s /sbin/nologin -g smbgrp -p <password>
#创建同名的smb用户, 这里的密码和local用户的密码是完全独立的,我们最后用的通过smbpasswd创建的用户
smbpasswd -a fielshare

2. 创建需要共享的工作目录,设置好文件夹的权限

mkdir -p /srv/samba/secure
chmod -R 0770 /srv/samba/secure
chown -R root:smbgrp /srv/samba/secure

搭建Samba共享目录, 如果需要使用用户名/密码的形式访问共享目录,我们需要先创建Linux的user,然后通过smbpasswd创建samba用户(用户名需要一致),原文在这里:

3. 修改安全上文

chcon -t samba_share_t /srv/samba/secure

这条命令是SELinux(详见Security-Enhanced Linux)下面的命令, 作用提把/srv/samba/securel切换到samba的上下文中。

4. 修改配置文件smb.conf

修改配置文件之前 ,我们先做好备份工作,以防不测。

cp /etc/samba/smb.conf /etc/samba/smb.conf.orig

在这里我们有以下事情需要做:

1.在[global] section下修改workgroup为WORKGROUP (就是我的电脑=>属性=> 计算机名看到的工作级的名字)

2.设置[global] 下的netbios name, 这个可以是任意,就是我们在我的芳邻下看到的计算机名称
3. 确定 [global] 下security设置为user
4.添加共享目录的配置

#为暴露在我的芳邻里点进去看到的文件夹名称
[share]
  comment = Secure File Server Share
  # 为需要共享的目录
  path = /srv/samba/secure
  # 可访问的用户,多用户用空格隔开, 以@开头为用户组
  valid users = @smbgrp
  # 关闭匿名访问,设置为no
  guest ok = no
  writable = yes
  browsable = yes

整个smb.conf文件如下:

# See smb.conf.example for a more detailed config file or
# read the smb.conf manpage.
# Run 'testparm' to verify the config is correct after
# you modified it.
[global]
  workgroup = WORKGROUP
  netbios name = centos
  security = user
  passdb backend = tdbsam
  printing = cups
  printcap name = cups
  load printers = no
  cups options = raw
[printers]
  comment = All Printers
  path = /var/tmp
  printable = Yes
  create mask = 0600
  browseable = No
[print$]
  comment = Printer Drivers
  path = /var/lib/samba/drivers
  write list = @printadmin root
  force group = @printadmin
  create mask = 0664
  directory mask = 0775
 [share]
  comment = secure file share
  path = /srv/samba/secure
  valid users = @smbgrp
  guest ok = no
  writable = yes
  browsable = yes
  browseable = yes

  注意smb.conf默认会有[home]节点,如果不是不想得一个和用户名同名的文件夹,请删除它。

  完成编辑, 保存配置文件,

  执行testparm后会得到下面相似的结果,就是说配置文件没有问题

[root@localhost software]# testparm
Load smb config files from /etc/samba/smb.conf
rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)
Processing section "[printers]"
Processing section "[print$]"
Processing section "[share]"
Loaded services file OK.
Server role: ROLE_STANDALONE
Press enter to see a dump of your service definitions
# Global parameters
[global]
 load printers = No
 netbios name = CENTOS-SHARE
 printcap name = cups
 security = USER
 idmap config * : backend = tdb
 cups options = raw
[printers]
 browseable = No
 comment = All Printers
 create mask = 0600
 path = /var/tmp
 printable = Yes
[print$]
 comment = Printer Drivers
 create mask = 0664
 directory mask = 0775
 force group = @printadmin
 path = /var/lib/samba/drivers
 write list = @printadmin root
[share]
 comment = secure file share
 path = /home/share
 read only = No
 valid users = @smbgrp
[root@localhost software]#

5. 重启samba服务, 打开我的电脑进行测试

systemctl restart smb.service
systemctl restart nmb.service

由于测试机和Linux主机不在同一个网络,我的芳邻里面找不到我配置的芳邻 CENTOS-SHARE, 这里我通过IP直接访问

6. 别忘了添加防火墙,不然你是看不到你的芳邻的

firewall-cmd --permanent --zone=public --add-service=samba
firewall-cmd --reload

总结

这里只演示了使用了用户名的验证模式来共享文件夹,主要是针对Windows的,对这一块不熟悉的同学可以自行尝试匿名共享。在设置过程中,我接触到以前没有接触到东西SELinux,这一块还是有很多的东西的。对于SAMBA的使用介绍网上有不少文章的,写这遍博客的目的也算是多个视角来告诉大家如何使用。

(0)

相关推荐

  • Ubuntu16.04搭建NFS 文件共享服务器的方法

    NFS 即 网络文件系统 (Network File System),是一种 分布式 文件系统协议,该协议允许客户端主机可以像访问本地文件系统一样通过网络访问服务器端文件,即可以将远程服务器文件直接 mount ( 挂载 )到本地的文件目录结构中进行访问. 一.软件安装 服务器端需要安装 nfs-kernel-server 软件包: $ sudo apt-get update $ sudo apt-get install nfs-kernel-server 二.服务器配置 默认情况下,NFS 服

  • Linux中搭建完整的samba服务器全攻略(centos版)

    前言 smb是一个协议名,它能被用于Web连接和客户端与服务器之间的信息沟通.SMB最初是IBM的贝瑞·费根鲍姆(Barry Feigenbaum)研制的,其目的是将DOS操作系统中的本地文件接口"中断13"改造为网络文件系统. smb服务简介 后来微软对这个发展进行了重大更改,这个更改后的版本也是最常见的版本.微软将SMB协议与它和3Com一起发展的网络管理程序结合在一起,并在Windows for Workgroups和后来的Windows版本中不断加入新的功能. SMB一开始的设

  • Linux中samba服务器的搭建教程

    使用的vmware12虚拟机安装的centos6.8和物理机上的windows10,实现在windows10 上访问CentOs上的samba服务. 一.先查看系统中是否安装有samba服务相关的软件包 查看到我的linux中没有安装samba相关的软件包,接下来进行安装几个相关的软件包: samba-3.6.9-151.el6.x86_64 //服务器端软件,主要提供samba服务器的守护程序,共享文档,日志的轮替 samba-common-3.6.9-151.el6.x86_64 //主要提

  • 服务器共享文件夹设置软件、文件共享服务器软件和共享文件夹加密工具的选择

    当前,很多企业都在局域网搭建了文件服务器,用于共享文件供局域网用户访问使用,并且很多共享文件都是单位积累的无形资产和商业机密,如何在允许员工访问服务器共享文件的同时还能保证服务器的安全呢?防止员工复制共享文件.将共享文件另存为本地以及不小心或恶意删除共享文件呢?总结起来,可以通过以下途径来实现:     方法一.通过操作系统的文件权限设置功能来分配不同用户访问共享文件的不同访问权限. 具体方法如下: 1. 打开"我的电脑"->"工具"->"文件

  • CentOS 7中搭建NFS文件共享存储服务的完整步骤

    前言 NFS(Network File System)意为网络文件系统,它最大的功能就是可以通过网络,让不同的机器不同的操作系统可以共享彼此的文件.简单的讲就是可以挂载远程主机的共享目录到本地,就像操作本地磁盘一样,非常方便的操作远程文件. 本文将给大家讲解如何在CentOS7上安装和配置NFS服务器. 下面话不多说了,来一起看看详细的介绍吧 准备 我们需要两台CentOS7机器,我们用虚拟机做测试,分别做NFS服务器和客户端,配置如下: NFS服务器ip:192.168.11.31. 客户端i

  • linux下samba服务器安装配置方法

    linux中samba服务器的安装及其配置,供大家参考,具体内容如下 第一步:下载samba 命令:apt-get install samba apt-get install cifs-utils apt-get install samba-common [注]可以使用镜像源来安装,这样速度比较快一点.不用也完全没问题.如果要用镜像源需修改文件:/etc/apt/sources.list,换为镜像源地址即可 可能遇到的问题: 这是因为DNS服务器错误,需要修改文件:/etc/resolv.con

  • 使用Samba在Linux服务器上搭建共享文件服务的方法

    最近我们的小团队需要在服务器上共分出一个共享文件夹用于大家存放公共的资源文档, 大家想啊,这肯定很简单呀,在Windows下面只要创建相关的windows account,共享某个文件夹,把读/写权限给我们创建的account的,就完成了共享,但在Linux下面就没有这么美好了,网上查阅资源资料多指向通过Samba完成共享任务,但一些blog只介绍了怎么做,但没有为什么这么 做,搭建工作且不太顺利,对Linux算不上熟悉,走了很多弯路,所以通过这篇blog深入理解其中的每一步. Samba的简介

  • 查看linux服务器上mysql配置文件路径的方法

    在类NUIX的系统中,配置文件的位置一般在/etc/my.cnf 或者 /etc/MySQL/my.cnf 我们见过有些人尝试修改配置文件但是不生效,因为他们修改的并不是服务器读取的文件.例如Debian下,/etc/mysql/my.cnf才是MySQL读取的配置文件,而不是/etc/my.cnf. 如果不知道当前使用的配置文件路径,可以尝试下面的操作: 对于服务器上只有一个MySQL实例的典型安装,这个命令很有用 以上就是小编为大家带来的查看linux服务器上mysql配置文件路径的方法全部

  • 查看linux服务器上jdk的安装路径方法

    查看linux服务器上jdk的安装路径方法 如何在一台Linux服务器上查找JDK的安装路径呢? 有那些方法可以查找定位JDK的安装路径?是否有一些局限性呢? 下面总结了一下如何查找JDK安装路径的方法. 1:echo $JAVA_HOME 使用$JAVA_HOME的话能定位JDK的安装路径的前提是配置了环境变量$JAVA_HOME,否则如下所示,根本定位不到JDK的安装路径 [root@localhost ~]# java -version java version "1.7.0_65&quo

  • .Net Core WebApi部署在Linux服务器上的方法

    鸽了好久,终于有个时间继续写了,继上一篇之后,又写(水)了一篇,有什么不足之处请大家指出,多谢各位了. 下面有两个需要用到的软件,putty和pscp,我已经上传到博客园了,下载请点击这里. 一.准备服务器 首先和之前一样,先去腾讯云整了个云服务器,选择CentOS的镜像. 然后跟之前一样完成购买,得到公网的IP地址. 接着我们复制下来公网的IP地址,我这里使用了putty进行远程登录. 输入root用户名和你之前设置的密码进行登录. 然后,我们就可以安装.Net Core的运行环境了. 二.安

  • 在Linux服务器上部署vue项目

    案例一 vue-cli构建vue3项目,将项目上传到Linux服务器,服务器安装node,并启动vue项目 首先本地有一个vue项目,启动后可正常访问 本地打包后,也可直接访问 若打包后的index.html页面显示空白,需在项目的根路径下新建vue.config.js,再重新打包,参考 Linux服务器安装nodejs,参考 # 下载node压缩包,在哪条路径下执行该命令,就会下载到哪条路径下 wget https://npm.taobao.org/mirrors/node/v12.16.1/

  • 在linux服务器上安装Jenkins

    Jenkins是用java编写的开源持续集成工具,目前被国内外各公司广泛使用.本章教大家如何在linux服务器上安装Jenkins. 一.获得一台linux服务器 要在linux下安装git,首先你得先有一台linux服务器,作为小白,手头的机器肯定都是windows的,搞个虚拟机安装对我这种小白简直是折磨人:这里使用最简单的方式获得一台linux服务器,就是从阿里云上租一台.镜像选择CentOS7.3 64位. 二.安装jdk Jenkins的运行需要依赖jdk,所以在安装Jenkins之前我

  • Windwos下使用winscp和批处理实现通过SSH端口上传文件到Linux服务器上

    Windwos下使用winscp和批处理实现通过SSH端口上传文件到Linux服务器上 今天同事想在windows上使用winscp上传文件到linux服务器上,又想偷懒想使用批处理来进行上传,还好只固定上传一个php文件,多了还真不好搞. 1.下载winscp 大家可以去网上自己找,我把winscp安装在c:下的 2.把要执行的命令保存到文件winscp.bat里,这个winscp.bat可以自己创建,我是放在d:下的. winscp.bat脚本内容: 复制代码 代码如下: option co

  • 在Linux服务器上安装 memcached的基本操作

    一.memcached的安装 1.下载 memcached-1.4.33.tar.gz.libevent-2.0.22-stable.tar.gz 安装 memcached 依赖 libevent 2.安装 libevent a.解压 [root@iZ28b4kreuaZ webserver]# tar zxvf libevent-2.0.22-stable.tar.gz b.安装在 /usr/local/下 进入解压目录下:[root@iZ28b4kreuaZ libevent-2.0.22-

  • linux上搭建solr的实现方法(用jetty部署)

    环境搭建:centos7及solr7版本 描述:最新版本的solr内置了jetty容器,可以支持jetty部署,从而不需要发布到tomcat下面 首先同样先在/usr/local/mypackage上传最新的solr.tar 解压tgz包 进入bin目录 ./solr start -force;默认8983端口 设置防火墙开启8983端口开放远程访问 访问 http://192.168.0.150:8983/solr/#/ 以上这篇linux上搭建solr的实现方法(用jetty部署)就是小编分

  • Tomcat在Linux服务器上的BIO、NIO、APR模式设置方法

    一.BIO.NIO.AIO 先了解四个概念: 同步 : 自己亲自出马持银行卡到银行取钱(使用同步IO时,Java自己处理IO读写). 异步 : 委托一小弟拿银行卡到银行取钱,然后给你(使用异步IO时,Java将IO读写委托给OS处理,需要将数据缓冲区地址和大小传给OS(银行卡和密码),OS需要支持异步IO操作API). 阻塞 : ATM排队取款,你只能等待(使用阻塞IO时,Java调用会一直阻塞到读写完成才返回). 非阻塞 : 柜台取款,取个号,然后坐在椅子上做其它事,等号广播会通知你办理,没到

随机推荐