samba源代码安装以及环境配置

这是一篇我在2011年7月21日写的一篇文档,当时我在深圳一家公司实习,实习的内容与samba相关,那时靠着自己上网找资料学习samba的源代码安装和配置,当时参考了很多网上的博文都没有看到一篇很完整的博文。很多博文作为案例使用的samba版本居然是2.x.x的,与我使用的3.5.9版本存在很多特性差异。但是参考这些博文都没有能够让我的samba顺利的运行起来,最后结合samba源码包中自带的一些文档才最终解决samba的安装问题。所以,就写了这篇文档进行总结。今天不小心翻到这篇文档,于是将其放上来,希望能对有需要的朋友起到一点作用。

一、获取源代码包并进行解压

从samba的官方网站可以下载最新的samba源代码包。下面我们以samba-3.5.9.tar.gz的源代码包作为案例进行解析。本例中,我们将源代码包放在目录/home/samba下,然后执行下面的命令进行解压缩。

# tar –xzvf samba-3.5.9.tar.gz 

二、配置configure

对源代码包进行解压缩后,进入目录

# cd /home/samba/samba-3.5.9/source3

然后执行下面的命令进行配置。

# ./configure

可能在刚开始时,该目录下没有configure文件,此时可先执行下面的命令

# ./autogen-sh

此时要求系统安装了autoconf、automake等工具。

在运行上面的配置命令之前,我们可以通过命令

# ./configure –-help

来查看配置命令的一些选项。

三、生成与安装make && make install

在环境配置命令./configure成功执行后,可以运行命令

# make

来生成二进制可执行文件,这可能需要两到三分钟。成功生成可执行文件后,可以通过下面命令

#make install

来进行安装。系统默认的安装路径是/usr/local/samba

四、配置动态链接库路径

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

# vi /etc/ld.so.conf

打开ld.so.conf文件,并在该文件中加入下面这一行内容。

/usr/local/samba/lib

然后执行命令

# ldconfig

来更新动态链接库缓冲。

五、samba配置文件smb.conf

samba在运行过程中需要用到配置文件smb.conf。smb.conf配置文件是samba最重要的配置文件,该文件定义了samba的安全机制、文件共享和打印共享的目录和参数以及其他一些系统配置功能。

配置文件smb.conf的默认路径是/usr/local/samba/lib/smb.conf,我们可以在运行smbd进程时,通过-s选项来执行特定的smb.conf文件(具体说明见下一节),一般不推荐使用-s选项,因为其配置工具,如smbclient、testparm等默认都是读取/usr/local/samba/lib/smb.conf文件。下面我们以一个简单的配置文件进行说明,其路径为/etc/samba/smb.conf。

复制代码
[global]
workgroup = MYGROUP
server string = Samba Server %v
security = user
log file = /var/log/samba/%m.log
passdb backend = smbpasswd
smb passwd file = /etc/samba/smbpasswd
[root]
path = /
valid users = root
writeable = yes
[public]
path = /data
guest ok = yes
read only = yes
复制代码

上面配置文件定义了root和public两个文件共享服务。关于上面这个配置文件的具体细节,我们这里不做详细的论述。这里主要说明的一点:在samba 3.0.23版本以前验证用户密码的默认backend是smbpasswd,而3.0.23版本之后的默认backend是tdbsam。我们可以通过参数passdb backend来选择特定的backend。在使用smbpasswd时默认读取的密码文件时/usr/local/samba/private/smbpasswd,我们可以通过smb passwd file来指定特定的密码文件。

在配置完smb.conf文件后,我们可以运行testparm(目录/usr/local/samba/lib下)命令来对smb.conf文件进行语法检查,其会检测出哪些参数名无法识别等问题。

六、启动samba

samba有两个主要的进程smbd和nmbd。smbd进程提供了文件和打印服务,而nmbd则提供了NetBIOS名称服务和浏览支持,帮助SMB客户定位服务器,处理所有基于UDP的协议。

配置smb.conf文件后,在开始运行samba的服务进程之前。我们需要先做一些准备工作。运行smbpasswd命令(在目录/usr/local/samba/bin下)

# ./smbpasswd –a root

向smb.conf文件中指定的/etc/samba/smbpasswd文件中添加root用户以及密码信息。关于smbpasswd文件的详细内容介绍见相关文档。

然后运行命令

# service iptables stop

关闭防火墙,因为防火墙可能会阻止用户访问该机器。下面是运行samba的服务进程smbd和nmbd

# /usr/local/samba/sbin/smbd –D –s /etc/samba/smb.conf
# /usr/local/samba/sbin/nmbd –D –s /etc/samba/smb.conf

上面的-D选项指定smbd和nmbd以守护进程的方式启动,并且通过-s选项指定了特定的配置文件/etc/samba/smb.conf。以守护进程方式启动smbd和nmbd的优势是响应速度快,但是要关闭的话只能kill掉。当然我们可以通过脚本来执行这些操作,这里就不提供脚本了。

七、smbclient进行测试检查

在启动samba之后,我们可以在本机使用smbclient(目录/usr/local/samba/bin下)来进行测试。下面命令

# cd /usr/local/samba/bin
# ./smbclient –L //127.0.0.1

可以列出本samba服务器所提供的服务列表,本例运行结果如下:

复制代码
[root@localhost bin]# ./smbclient –L //127.0.0.1
Enter root’s password:
Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.5.9]

Sharename Type Comment
--------- ------- -------
IPC$ IPC IPC Service (Samba Server 3.5.9)
public Disk
root Disk

Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.5.9]

Server Comment
----------- -------
LOCALHOST Samba Server 3.5.9

Workgroup Master
------------ -------
MYGROUP LOCALHOST
复制代码

 

当然也可以通过smbclient来访问samba服务器提供的服务,其命令格式如下:

# ./smbclient “//serverAdderss/aservice” –U username

其中serverAddress是要访问的samba服务器的IP地址,aservice指定samba服务器上提供的某个服务名称,选项-U username指定要以哪个用户名来访问samba服务器。例如

[root@localhost bin]# ./smbclient “//127.0.0.1/root” –U root
Enter root’s password: ; 这里输入samba用户root的密码
Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.5.9]
smb: \> ; 访问成功,输入相关命令进行操作

上面个smb: \>表明了访问成功,此时我们可以输入一些命令来在samba服务器上进行操作,比如ls、mkdir等。q或quit命令执行退出,并断开连接。

八、在Windows客户端访问samba服务器

在Windows客户端,可以在网上邻居中通过新建网上邻居来访问,或者在【开始】——【运行】中输入\\192.168.1.34\root来访问samba服务器192.168.1.34上面提供的root服务。

posted on   lienhua34  阅读(17954)  评论(0编辑  收藏  举报

编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端

导航

< 2012年3月 >
26 27 28 29 1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
1 2 3 4 5 6 7
点击右上角即可分享
微信分享提示