首页 > 编程知识 正文

linux连接samba(linux samba服务)

时间:2023-05-03 09:10:42 阅读:78065 作者:2072

无论是在Linux操作系统之间,还是在Windows操作系统之间,都有文件共享解决方案。 例如,可以在Linux之间通过NFS共享文件,但在Windows之前可以通过基于CIFS的协议共享文件。 但是,Windows和Linux之间如何进行文件共享呢? 这是Samba出现的。 Samba最初被称为SMB,由于注册商标的问题,变更为Samba。

什么是Samba

首先谈谈Samba的历史吧。 了解这段历史,你会对Samba有更深的了解。

1991年Andrew Tridgell博士班的研究生有这样的烦恼。 他拥有3台运行DOS的电脑、DEC公司的数字Unix系统和Sun的Unix系统。 当时,缉毒公司开发了一种叫做PATHWORKS的软件。 虽然此软件可用于共享两个操作系统(DEC的Unix和电脑的DOS )的归档数据,但令人遗憾的是,Tridgell无法从该软件实现数据共享的目的

这时,Tridgell说:“咦! 既然这两个系统可以互相沟通,Sun要这么辛苦不是很勉强吗? 我们是否应该找到这两个系统的工作原理,使其能够在名为Sun的机器上共享归档数据? ’、为了解决这些问题,他自己写了一个program,检测DOS和DEC的Unix系统进行数据共享发送时使用的通信协议的信息,取出这些重要信息,根据上述找到的通信协议进行servermmix

既然写了软件,想想总是需要注册商标吧。 因此,Tridgell申请了SMBserver(servermessageblock的缩写)这个名字作为他写的软件的商标,但很遗憾SMB是没有意义的文字,所以没能注册。 那样的话,可以在词典中找到相关单词并注册为商标吗? 翻了很久,呵呵! 这个SAMBA正好包含了SMB,是热情有力的拉丁舞的名字。 否则,请把这个名字作为商标。 这成为了我们今天使用的SAMBA的名字的由来! (注:上述内容来自jqddx私房菜)

既然您了解了什么是

Samba的安装

samba,让我们来看看如何在Linux操作系统上安装该软件。 安装方法因版本而异。

Ubuntu系统

可以用apt工具安装。 具体情况如下:

sudo apt-get install samba

中心系统

在CentOS上,可以使用yum工具运行以下命令进行安装:

yum安装- y samba samba-client

Samba的配置实例

Samba的配置文件为/etc/samba/smb.conf,通过修改此配置文件满足了我们的各种需求。 打开此配置文件时,许多内容为#或; 我注意到了。 看看未评论的部分:

全局#全局参数

工作组=samba #工作组名称

security=user #安全认证的方式共有4种()

passdb backend=tdbsam #是一种定义用户后台的类型,共有三种

打印=cups

printcap name=cups

load printers=yes #设置启动Samba服务时是否共享打印机设备

cups options=raw #打印机选项

[homes] #共享参数

注释=home directories #说明信息

valid users=%S,%D%w%S

browseable=No #指定共享信息是否显示在“网络邻居”中

read only=No #定义是否为只读,与" writable "相反

inherit ACLs=是

[打印机]

comment=All Printers

path=/var/tmp #共享文件的实际路径(重要)。

printable=是

创建掩码=0600

browseable=No

[打印$ ]

comment=打印机驱动程序

path=/var/lib/samba/drivers

写入列表=根

创建掩码=0664

目录掩码=0775

主要有[global]、[homes]、[printers]三个部分,具体含义本文暂不介绍,以下先做实例。 此实例相对简单,它共享本地目录(/tmp/public )并允许匿名

名访问(任何人,不需要用户和密码)。

配置方法比较简单,只需要在上述配置文件的内容即可,其它地方不需要进行修改。对于CentOS 6.x的系统,配置示例如下:

[global] workgroup = MYGROUP server string = Samba Server Version %v security = user passdb backend = tdbsam load printers = yes cups options = raw [public] comment = Public Stuff path = /tmp/public public = yes guest ok = yes writable = yes security = share browseable = yes

但对于CentOS 7系统,配置上略有不同(不同点参考注释),具体如下:

[global] workgroup = WORKGROUP # security = share ##这里区别1 passdb backend = tdbsam share modes = yes ##这里区别2 printing = cups printcap name = cups load printers = yes cups options = raw [share] comment = Share all path = /tmp/public browseable = yes public = yes writable = no security = share ##这里区别3

完成上述配置的修改后,还需要做如下几件事情:

创建目录并修改权限

mkdir /tmp/public chmod 777 /tmp/public touch /tmp/public/itworld123

禁用SELinux和防火墙

systemctl disable firewalld.service setenforce 0

重启Samba服务,使配置生效

systemctl start smb

注意: 请严格安装步骤安装,否则可能会有问题,如有问题请参考下面内容

客户端访问

Windows客户端访问

具体访问方式与访问Windows共享文件类似,在资源管理器输入IP地址(\192.168.1.100)即可。

Linux客户端访问

对于匿名访问,通过mount即可进行挂载访问,具体命令如下:

mount.cifs -o guest //192.168.1.100/public /mnt/cifs

配置项详解

global段

该段定义全局的配置,workgroup用来定义工作组,相信如果您安装过windows的系统,你会对这个workgroup不陌生。一般情况下,需要我们把这里的MYGROUP改成WORKGROUP(windows默认的工作组名字)。

security = user

这里指定samba的安全等级。 关于安全等级有四种:

share:用户不需要账户及密码即可登录samba服务器user:由提供服务的samba服务器负责检查账户及密码(默认)server:检查账户及密码的工作由另一台windows或samba服务器负责domain:指定windows域控制服务器来验证用户的账户及密码。

passdb backend = tdbsam

passdb backend(用户后台),samba有三种用户后台:smbpasswd, tdbsam和ldapsam.

smbpasswd:该方式是使用smb工具smbpasswd给系统用户(真实用户或者虚拟用户)设置一个Samba密码,客户端就用此密码访问Samba资源。smbpasswd在/etc/samba中,有时需要手工创建该文件。tdbsam:使用数据库文件创建用户数据库。数据库文件叫passdb.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 = MYSERVER # 设置出现在网上邻居中的主机名hosts allow = 127. 192.168.12. 192.168.13. # 用来设置允许的主机,如果在前面加 ”;” 则表示允许所有主机log file = /var/log/samba/%m.log #定义samba的日志,这里的%m是上面的netbios namemax log size = 50 # 指定日志的最大容量,单位是K

homes

该部分内容共享用户自己的家目录,也就是说,当用户登录到samba服务器上时实际上是进入到了该用户的家目录,用户登陆后,共享名不是homes而是用户自己的标识符,对于单纯的文件共享的环境来说,这部分可以注视掉。

printers

该部分内容设置打印机共享。

问题汇总

无法正常登录(挂载)

有的时候我们配置完成后,无法将服务端的文件系统挂载到客户端。此种情况通常服务器端的防火墙没有关闭,或者没有将端口加入规则中。如果是进行学习,可以简单的关闭防火墙:

systemctl disable firewalld.service

查看目录权限不够

虽然可以正常登录,但访问目录文件列表时提示权限不足,提示信息如下。

ls: 正在读取目录/mnt/cifs/: 权限不够

这种情况通常是SELinux的问题,简单的方法是关闭SELinux,当然也可以设置目录的SELinux属性。下面是关闭的方法,简单粗暴。

setenforce 0

可以读数据,但不可写

这种情况通常是目录位置的问题,如果共享的目录在根目录等情况,会有写权限的问题,可以按照本例的位置创建共享目录进行测试验证。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。