构建samba文件共享服务器_家庭文件服务器搭建方案

构建samba文件共享服务器_家庭文件服务器搭建方案本文主要讲述如何使用Samba软件在Linux系统上搭建局域网中可以访问的文件共享服务器。

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

目录

1、检查Linux是否安装了samba组件

2、使用源码安装samba

3、配置samba动态库路径

4、配置samba的配置文件smb.conf,添加用户

5、新建共享文件目录,共享该目录

6、修改配置文件后,重启samba程序

7、linux命令的几个小技巧


       Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。SMBServer Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务

       SMB协议是客户机/服务器型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源。通过设置“NetBIOS over TCP/IP”使得Samba不但能与局域网络主机分享资源,还能与全世界的电脑分享资源。

        本文主要讲述如何使用Samba软件在Linux系统上搭建局域网中可以访问的文件共享服务器。

1、检查Linux是否安装了samba组件

       事先我们已经安装了虚拟机,在虚拟机中安装了CentOS版本的Linux系统,我们接下来在该系统中搭建samba文件共享服务器。

       使用如下的命令,查看一下系统中是否已安装了samba:

rpm -qa|grep 'samba'

构建samba文件共享服务器_家庭文件服务器搭建方案

然后使用命令查看一下samba服务状态:

service smb status

构建samba文件共享服务器_家庭文件服务器搭建方案

如上图所示,找不到samba相关服务,可能samba没有添加到服务里去。安装完整的samba后,应该包含下面的几个程序:

构建samba文件共享服务器_家庭文件服务器搭建方案

上面可以看出,系统服务端的软件没有,所以先将已安装的samba组件卸载掉:

rpm -e samba-common-3.6.9-151.el6.i686  --nodeps

卸载后,重新使用samba源代码进行安装。

2、使用源码安装samba

      拿来一个比较新的4.1.14版本的samba源码,执行.configure时报错,因为该文件没有可执行属性,使用bash就可以执行了。也可以修改configure文件的属性,即添加可执行属性。但是在执行configure还没执行make时,会报错,提示找不到一些头文件:

构建samba文件共享服务器_家庭文件服务器搭建方案

cat /home/samba-4.1.14/samba-4.1.14/bin/config.log
[1/2] Compiling test.c
../test.c:2:20: error: Python.h: No such file or directory
['/usr/bin/gcc', '-MD', '-fno-strict-aliasing', '-I/usr/local/include', '-I/usr/include/python2.6', '-D_SAMBA_BUILD_=4', '-DHAVE_CONFIG_H=1', '-D_GNU_SOURCE=1', '-D_XOPEN_SOURCE_EXTENDED=1', '../test.c', '-c', '-o', 'default/test_1.o']
command returned 'Build failed:  -> task failed (err #1): \n\t{task: cc test.c -> test_1.o}'Could not find the python development headers

configure时,会check一下编译时需要的头文件等,因为这个samba源码的版本比较新,和当前虚拟机中的Linux系统CentOS6.4版本不一致,所以会缺少很多东西。可以根据错误提示,安装缺少的库,但这样比较麻烦,要根据配置检验情况逐个排查缺少的库,还不如找个对应的samba版本来编译。
       于是搜索一下,看看别人在CentOS 6.4上使用什么版本samba搭建的。有人使用的是samba-3.6.9:

构建samba文件共享服务器_家庭文件服务器搭建方案

于是以“samba下载”为关键字,找到samba的官方页面:

构建samba文件共享服务器_家庭文件服务器搭建方案

构建samba文件共享服务器_家庭文件服务器搭建方案

但samba的官方网站上只能下载最新的版本和最近的版本,找不到老版本的下载链接,即找不到3.6.9的版本,找来一个靠近这个版本的3.5.22版本,下载下来编译一下,看看编译是否有问题。
       先将压缩包传到Linux系统中,然后执行下面的命令将压缩包解压出来:

tar -zxvf samba-3.5.22.tar.gz

先执行configure,再执行make编译,然后执行make install安装:

构建samba文件共享服务器_家庭文件服务器搭建方案

构建samba文件共享服务器_家庭文件服务器搭建方案

构建samba文件共享服务器_家庭文件服务器搭建方案

 一切都比较顺利。注意,执行configure时要指定后面install的安装路径:

./configure  --prefix=/usr/local/samba-3.5.22/

3、配置samba动态库路径

        安装完成后,我们需要配置动态链接库路径,因为运行samba的smbd和nmbd需要到目录/usr/local/samba/lib下的动态链接库文件。但是该目录不是系统默认的动态链接库文件搜索路径,于是我们需要将该目录添加到系统文件ld.so.conf中。执行下面的命令:

echo "/usr/local/samba-3.5.22/lib" >> /etc/ld.so.conf

然后执行ldconfig来更新动态链接库缓冲。

4、配置samba的配置文件smb.conf,添加用户

        将源码路径中的配置文件拷贝到安装路径的etc目录下:

cp /home/samba-3.5.22/packaging/LSB/smb.conf /usr/local/samba-3.5.22/etc/smb.conf

然后在系统中添加用户:

useradd -s /sbin/nologin -G user-group user1

然后调用samba下的工具,将用户写到smb.conf配置文件中:

/usr/local/samba-3.5.22/bin/pdbedit -a -u user1

但该命令执行错误,提示找不到/usr/local/samba-3.5.22/lib/smb.conf文件,所以我们配置文件拷贝的路径错了,应该将配置文件拷贝到/usr/local/samba-3.5.22/lib/路径中。切换到samba安装/usr/local/samba-3.5.22/sbin中,执行smbd程序,将samba程序运行起来。

       在PC上登录测试一下,结果没法访问:

构建samba文件共享服务器_家庭文件服务器搭建方案

有可能系统防火墙阻止了用户的访问,所以尝试使用service iptables stop命令关闭防火墙,关闭后就能正常访问了,如下所示:

构建samba文件共享服务器_家庭文件服务器搭建方案

那看到的这些目录对应着配置文件中的哪些配置呢?

5、新建共享文件目录,共享该目录

        远程登录后,看到了home路径下的内容,看到了共享打印机:
 

构建samba文件共享服务器_家庭文件服务器搭建方案

home路径和打印机对应配置文件中的如下字段:

构建samba文件共享服务器_家庭文件服务器搭建方案

其中,打印机我们是不需要共享的,可以在配置文件中将打印机的配置都注释掉。
       后来在linux中新建了一个文件夹:

mkdir ShareFiles
chmod 777 ShareFiles

并在配置文件中添加了该文件夹,要将该文件夹共享出来,结果看不到新增的文件夹。经排查得知,必须将配置文件中对应的设置选项browseable改为yes

构建samba文件共享服务器_家庭文件服务器搭建方案

6、修改配置文件后,重启samba程序

       可以先用ps aux|grep smb查看samba程序的进程,然后使用pkill smb杀掉所有进程,然后再使用ps aux|grep smb查看进程是否杀干净。然后切换到samba安装/usr/local/samba-3.5.22/sbin中,执行./smbd命令,将samba程序运行起来。

7、linux命令的几个小技巧

1)使用vi编辑文件时,按下i键进入编辑状态,编辑完后按下ESC键退出编译,按下shift+:进入退出模式,按下x键保存。执行vi命令后,按下大写的G键,直接跑到文件尾部,按下小写的o键进入编辑状态。
2)在samba安装好后,直接运行service smb status查看服务的状态,提示无法识别的服务,因为没有将samba添加到服务中。服务主要存放在/etc/init.d路径下,比如上面用到的关闭防火墙的service iptables stop命令,在/etc/init.d路径下能找到:

构建samba文件共享服务器_家庭文件服务器搭建方案

        另外,网络组件也做成了系统服务,修改resolv.conf配置文件,添加域名服务器,然后重启网络服务:service network restart。修改网卡参数,重启网络服务:

cat /etc/sysconfig/network-scripts/ifcfg-eth0
vi /etc/sysconfig/network-scripts/ifcfg-eth0
service network restart

3)执行之前输入的命令,可以先history查看一下命令列表,然后使用“i+命令行号”,直接执行这个命令,不用再拷贝命令:

构建samba文件共享服务器_家庭文件服务器搭建方案

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/189870.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • hashmap底层实现原理和源码分析(python底层源码)

    HashMap是Java开发中常用的集合,那么从我们创建一个空集合到,put添加、get获取元素经历了那些步骤呢?说明:以下源码基于JDK1.7,32位0.HashMap底层的数据结构是数组加链表的形式,存储结构如下图:1.创建一个新的HashMap集合的构造函数://初始默认数组的大小staticfinalintDEFAULT_INITIAL_CAPACITY=1<<…

    2022年4月16日
    48
  • 计算机组成原理(哈工大)学习笔记

    计算机组成原理(哈工大)学习笔记文章目录计算机组成原理一 计算机系统概论 1 1 计算机系统简介一 计算机的软硬件概念二 计算机系统的层次结构三 计算机体系结构和计算机组成 1 2 计算机的基本组成 1 3 计算机硬件的主要技术指标一 机器字长二 运算速度三 存储容量三 系统总线总线的基本概念总线的分类总线的特性和性能指标总线控制 重点 四 存储器 1 概述一 存储器分类二 存储器的层次结构 2 主存储器 1 概述 2 半导体存储芯片简介 3 随机存取存储器 RAM 4 只读存储器 ROM 5 存储器与 CPU 的连接 6 存储器的校验 7 提高访存速度的措施 3

    2025年6月22日
    5
  • python 打包exe文件[通俗易懂]

    上一篇说了我自己做了一个定时截屏的工具,我想如果我可以打包成exe文件,那我就可以单独放在桌面运行,不用进入程序启动运行就可以完成截屏工作了。安装模块1、pyinstaller这里建议最好使用命令安装,手动下载安装有很多其他的模块不存在,我就一开始是手动安装,安装一次缺一个模块,然后补一个,然后又少一个,命令行安装就没这个问题了pipinstallpyinstaller2、pyQt…

    2022年4月14日
    42
  • idea2021.5.5激活码[在线序列号]

    idea2021.5.5激活码[在线序列号],https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月18日
    100
  • springsecurity自定义密码验证_数字图形验证码怎么填

    springsecurity自定义密码验证_数字图形验证码怎么填SpringSecurity添加图形验证码认证功能第一步:图形验证码接口1.使用第三方的验证码生成工具Kaptchahttps://github.com/penggle/kaptcha@ConfigurationpublicclassKaptchaImageCodeConfig{@BeanpublicDefaultKaptchagetDefaultKaptcha(){DefaultKaptchadefaultKaptcha=newDefa

    2025年11月25日
    3
  • setCompoundDrawables与setCompoundDrawablesWithIntrinsicBounds的区别

    setCompoundDrawables与setCompoundDrawablesWithIntrinsicBounds的区别

    2021年9月3日
    79

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号