SAMBA

Posted tanshouke

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SAMBA相关的知识,希望对你有一定的参考价值。

 

博主本人平和谦逊,热爱学习,读者阅读过程中发现错误的地方,请帮忙指出,感激不尽


 

SMB简介

FTP文件传输服务确实可以让主机之间的文件传输变得简单方便,但是FTP协议的本质是传输文件,而非共享文件因此要想通过客户端直接在服务器上修改文件内容还是一件比较麻烦的事情。

1987年,微软公司和英特尔公司共同制定了SMB(Server Messages Block,服务器消息块)协议,旨在解决局域网内的文件或打印机等资源的共享问题,这也使得在多个主机之间共享文件变得越来越简单。到了1991年,当时还在读大学的Tridgwell为了解决Linux系统与Windows系统之间的文件共享问题,基于SMB协议开发出了SMBServer服务程序。这是一款开源的文件共享软件,经过简单配置就能够实现Linux系统与Windows系统之间的文件共享工作。当时,Tridgwell想把这款软件的名字SMBServer注册成为商标,但却被商标局以SMB是没有意义的字符而拒绝了申请。后来Tridgwell不断翻看词典,突然看到一个拉丁舞蹈的名字—Samba,而且这个热情洋溢的舞蹈名字中又恰好包含了“SMB”,于是Samba服务程序的名字由此诞生(见图12-1)。Samba服务程序现在已经成为在Linux系统与Windows系统之间共享文件的最佳选择。

Samba服务程序中的参数以及作用

[global]

 

#全局参数。

 

workgroup = MYGROUP

#工作组名称

 

server string = Samba Server Version %v

#服务器介绍信息,参数%v为显示SMB版本号

 

log file = /var/log/samba/log.%m

#定义日志文件的存放位置与名称,参数%m为来访的主机名

 

max log size = 50

#定义日志文件的最大容量为50KB

 

security = user

#安全验证的方式,总共有4种

 

#share:来访主机无需验证口令;比较方便,但安全性很差

 

#user:需验证来访主机提供的口令后才可以访问;提升了安全性

 

#server:使用独立的远程主机验证来访主机提供的口令(集中管理账户)

 

#domain:使用域控制器进行身份验证

 

passdb backend = tdbsam

#定义用户后台的类型,共有3种

 

#smbpasswd:使用smbpasswd命令为系统用户设置Samba服务程序的密码

 

#tdbsam:创建数据库文件并使用pdbedit命令建立Samba服务程序的用户

 

#ldapsam:基于LDAP服务进行账户验证

 

load printers = yes

#设置在Samba服务启动时是否共享打印机设备

 

cups options = raw

#打印机的选项

[homes]

 

#共享参数

 

comment = Home Directories

#描述信息

 

browseable = no

#指定共享信息是否在“网上邻居”中可见

 

writable = yes

#定义是否可以执行写入操作,与“read only”相反

[printers]

 

#打印机共享参数

 

comment = All Printers

 

 

path = /var/spool/samba

#共享文件的实际路径(重要)。

 

browseable = no

 

 

guest ok = no

#是否所有人可见,等同于"public"参数。

 

writable = no

 

 

printable = yes

 

pdbedit命令用于管理SMB服务程序的账户信息数据库,格式为“pdbedit [选项] 账户”。在第一次把账户信息写入到数据库时需要使用-a参数,以后在执行修改密码、删除账户等操作时就不再需要该参数了。pdbedit命令中使用的参数以及作用如下表所示

用于pdbedit命令的参数以及作用

参数

作用

-a 用户名

建立Samba用户

-x 用户名

删除Samba用户

-L

列出用户列表

-Lv

列出用户详细信息的列表

1.1.服务器安装软件

yum install samba samba-client -y

1.2.备份

cp -a smb.conf  smb.conf.bak

1.3.去注释

cat smb.conf.bak |grep -v ^# | grep -v ^;>smb.conf

1.4.服务器配置

vim /etc/samba/smb.conf
修改如下:
[global]
        workgroup = workgroup
....
[samba_test]
        comment = welcome to the sambaservier
        path = /tansk_practice_samba
        writable = yes
        public = oes
        browseable = yes

1.5.创建共享文件

mkdir  /tansk_practice_samba/ -p
chmod 777 /tansk_practice_samba/

1.6.创建smb用户

useradd tansk
echo 123456|passwd --stdin tansk
smbpasswd -a tansk
pdbedit -Lv tansk

1.7.启动服务

chkconfig smb on
chkconfig nmb on 
service nmb restart 
service smb restart

1.8.防火墙规则

iptables -I INPUT 1 -p udp --dport 137:138 -j ACCEPT
iptables -I INPUT 1 -p tcp --dport 139 -j ACCEPT      
iptables -I INPUT 1 -p tcp --dport 445 -j ACCEPT  
service iptables save
service iptables restart

2客户机设置

2.1.安装服务

yum install -y samba-client autofs

2.2.Linux测试验证

smbclient -L //192.168.247.59 -U tansk

2.3.Linux登录smb

smbclient  //192.168.247.59/samba_test -U tansk 

2.4.Windows登录验证

技术图片

 

 

 技术图片

 

 

 

2.5.如果报错如下,则需要关闭SELINUX

技术图片

 

 

 

3.设置自动挂载(两种方法只能选择一种进行)

3.1.方法一(fstab

yum -y install cifs-utils
mkdir -p /cc

创建密码文件:
mkdir /secure/ -p  
vim /secure/sherlock.passwd
输入:
username=tansk
password=123456
挂载验证:
mount -t cifs  -o credentials=/secure/sherlock.passwd  //192.168.247.59/samba_test /cc 
cd /cc
ls

设置自动挂载(fstab

vim /etc/fstab 
输入:
//192.168.247.59/samba_test /cc cifs    defaults,credentials=/secure/sherlock.passwd 0 0
mount -a
cd /cc
ls

3.2.设置方法二autofs

cp -a /etc/auto.misc /etc/auto.aa 
vim /etc/auto.master
输入:
/cc     /etc/auto.aa
vim /etc/auto.aa 
输入:
smb      -fstype=cifs,credentials=/secure/sherlock.passwd  ://192.168.247.59/samba_test
启动服务验证:
service autofs restart
cd /cc/smb/
ls

 

以上是关于SAMBA的主要内容,如果未能解决你的问题,请参考以下文章

CVE-2017-7494复现 Samba远程代码执行

虚拟机装linux使用samba共享,本地看代码会卡。

Android - 在代码中挂载 Samba 共享

CentOS 7下安装samba

Samba CVE-2017-7494验证实验

如何使用 C# 从 Ubuntu/Samba 读取共享文件?