一文教你如何在Linux系统上搭建samba文件共享服务器
目录
1、检查Linux是否安装了samba组件
2、使用源码安装samba
3、配置samba动态库路径
4、配置samba的配置文件smb.conf,添加用户
5、新建共享文件目录,共享该目录
6、修改配置文件后,重启samba程序
7、linux命令的几个小技巧
Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。
SMB协议是客户机/服务器型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源。通过设置“NetBIOS over TCP/IP”使得Samba不但能与局域网络主机分享资源,还能与全世界的电脑分享资源。
本文主要讲述如何使用Samba软件在Linux系统上搭建局域网中可以访问的文件共享服务器。
1、检查Linux是否安装了samba组件
事先我们已经安装了虚拟机,在虚拟机中安装了CentOS版本的Linux系统,我们接下来在该系统中搭建samba文件共享服务器。
使用如下的命令,查看一下系统中是否已安装了samba:
rpm -qa|grep 'samba'
然后使用命令查看一下samba服务状态:
service smb status
如上图所示,找不到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时,会报错,提示找不到一些头文件:
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的官方网站上只能下载最新的版本和最近的版本,找不到老版本的下载链接,即找不到3.6.9的版本,找来一个靠近这个版本的3.5.22版本,下载下来编译一下,看看编译是否有问题。
先将压缩包传到Linux系统中,然后执行下面的命令将压缩包解压出来:
tar -zxvf samba-3.5.22.tar.gz
先执行configure,再执行make编译,然后执行make install安装:
一切都比较顺利。注意,执行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上登录测试一下,结果没法访问:
有可能系统防火墙阻止了用户的访问,所以尝试使用service iptables stop命令关闭防火墙,关闭后就能正常访问了,如下所示:
那看到的这些目录对应着配置文件中的哪些配置呢?
5、新建共享文件目录,共享该目录
远程登录后,看到了home路径下的内容,看到了共享打印机:
home路径和打印机对应配置文件中的如下字段:
其中,打印机我们是不需要共享的,可以在配置文件中将打印机的配置都注释掉。
后来在linux中新建了一个文件夹:
mkdir ShareFiles
chmod 777 ShareFiles
并在配置文件中添加了该文件夹,要将该文件夹共享出来,结果看不到新增的文件夹。经排查得知,必须将配置文件中对应的设置选项browseable改为yes:
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路径下能找到:
另外,网络组件也做成了系统服务,修改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+命令行号”,直接执行这个命令,不用再拷贝命令:
一文教你如何在Linux系统上搭建samba文件共享服务器相关推荐
- 如何在linux系统上配置必要的服务器环境
1检查这台linux主机是否有yum,如果没有,就要去安装yum具体到相应网站去下载.我们这里使用vsftp,ftp这两个软件来负责上传,下载相关文件.使用apache的服务器版本httpd来发布自己 ...
- 在ubuntu16.04上搭建samba文件共享服务器
需求: 有两个用户abo和abu; 有三个文件夹: /samba_workspace/abo/ : 用户abo可访问,拥有读写权限 /samba_workspace/abu/ : 用户abu可访问,拥 ...
- 在Linux系统上配置Samba客户端,访问Samba远程目录
1. 前言 本文主要讲解如何在Linux系统上配置Samba客户端,访问Samba远程目录. 2. 安装smbclient Linux用户可以从命令行访问samba共享,使用文件管理器或挂载samba ...
- Redis进阶实践之二如何在Linux系统上安装安装Redis
2019独角兽企业重金招聘Python工程师标准>>> Redis进阶实践之二如何在Linux系统上安装安装Redis 一.引言 上一篇文章写了"如何安装VMware Pr ...
- 如何在Linux系统上自动执行任务
How to automate tasks on a Linux system 如何在Linux系统上自动执行任务 https://www.linux.org/threads/how-to-autom ...
- 如何在Linux系统上监测系统温度?(亲测可用)
转载自:http://os.51cto.com/art/201311/417208.htm 按理说,在大多数情况下,你用不着为电脑的运行温度而操心.除了制造瑕疵外,电脑硬件在设计时确保温度不会超过最高 ...
- linux文件向磁带备份,如何在Linux系统上进行快速磁带备份
如何在Linux系统上进行快速磁带备份 发布时间:2006-09-08 00:28:08来源:红联作者:Myiozzdoc 使用mt-st 工具,在Linux系统上进行快速文件备份. 在CD.DVD以 ...
- linux重装eclipse_如何在Linux系统上安装Eclipse
如何在Linux系统上安装Eclipse 作为Java程序员,需要在Linux系统上安装Eclipse,很多人不知要如何安装,在安装Eclipse前,还需安装JDK,下面小编就给大家介绍下Linux如 ...
- linux 显示目录文件数,如何在Linux系统上显示当前及子目录中的文件数量
在本指南中,我们将介绍如何在 Linux 系统上显示当前工作目录或任何目录及其子目录中的文件数量. 我们将使用 find 命令,它用于搜索目录层次结构中的文件,以及 wc 命令,它会打印每个文件或来自 ...
- linux检测软件温度,如何在Linux系统上监测系统温度?(亲测可用)
转载自:http://os.51cto.com/art/201311/417208.htm 按理说,在大多数情况下,你用不着为电脑的运行温度而操心.除了制造瑕疵外,电脑硬件在设计时确保温度不会超过最高 ...
最新文章
- 用电脑更新手机ios系统_手机系统频繁提示更新,到底要不要更新?
- mysql 数据库导入导出方法总结
- 验证dropdownlist必选
- java 文件的编码 问题
- Tableau2019版本安装步骤
- Spark的测量系统MetricsSystem
- IT项目范围管理案例分析——柳工错在哪里?
- 手机日历便签怎么设置日历开始于周几?
- Inverting Visual Representations with Convolutional Networks论文理解
- 数据库开发工程师岗位职责and技能要求
- .net 对网络文件下载
- requires INJECT_EVENTS permission
- 被Win10自带杀毒软件自动误删除的exe从这里找
- unity 获取两个向量夹角
- 你一定要知道的71个做菜技巧
- Dell Systems Management Tools download
- 数据库作业16:第七章: 数据库设计
- C#EntityFramework(EF基础)
- 【论文翻译】Deep Residual Learning for Image Recognition
- 如何理解java程序一次编写,处处运行?
热门文章
- matlab兔子问题,【matlab】狼追击兔子问题的建模
- 解决Linux系统不能上网问题
- 东北林业大学计算机科学与技术考研,东北林业大学计算机科学与技术2019年考研加试科目计算机网络专业课大纲...
- 为什么需要Code Review?
- 1.从命令行读入一个字符串,表示一个年份,输出该年的世界杯冠军是哪支球队。如果该年没有举办世界杯,则输出:没有举办世界杯。2. 读入一支球队的名字,输出该球队夺冠的年份列表。
- 【业务安全02】业务数据安全
- Java:实现动态规划的4个经典题型,你都会吗?拒绝做优秀的码农
- 小高考三门计算机能报大专吗,江苏小高考没过能上大学吗
- 计算机代码查重软件,文件查重程序
- 半波耦合器的设计——RSOFT