Samba服务器概念与原理
一.引子
Samba这个名字用我们中文来理解其实是有点不符合我们的认知习惯的,samba是在Linux和UNIX系统上实现SMB(Server Message Block,服务信息块)协议的一个免费软件,是用来共享文件的。并且不单是在单独的系统里面共享,可以在unix,linux,windows里面互相共享数据。还是非常方便的。还是那句话,服务是根据需求诞生的。就像我们在拼多多里面分享链接到微信,然后发现分享不出去,那用户体验就很差劲了。
二.samba原理及基本概念
1.GIFS与SAMBA
CIFS 通用互联文件系统 微软开发
WINS 服务:将域内主机名直接映射为Internet域名(计算机的主机名 <> IP 互相转换)
netbios 网络基本输入输出系统
SAMBA:SMB 服务信息块 给应用程序提供网络访问文件的接口 SUN公司开发
smb:smb 协议的实现软件
nmb:主机名 <> IP localhost.localdomain IP(主机名和网络IP相互映射)
2.SMB服务详解
SMB(Server Message Block,服务信息块)协议可以看作是局域网上的共享文件/打印机的一种协议,它可以为网络内部的其它Windows和Linux机器提供文件系统、打印服务或是其他一些信息。
SMB的工作原理是让NetBIOS(Win95网络邻居通信协议)与SMB这两种协议运行在TCP/IP的通信协议上,且使用NetBIOS nameserver让用户的Linux机器可以在Windows的网络里被看到,所以就可以和Win95/NT主机在网络上相互沟通,共享文件与服务了。
目前Microsoft正在开发一种新的文件和打印共享协议–CIFS(Common Internet FilesSystem,通用互联文件协议),该协议支持TCP/IP和DNS等协议,能在www上支持文件和打印共享。在CIFS下服务器实际上是DNS名,由主机名和域名组成。这种变化是从NetBIOS命令结构中分离出来的。目前CIFS还没有得到广泛的应用。现在在Linux和Win95/NT之间的文件共享注意还是 SMB和NFS。
3、Samba的记录文件
Samba为smbd、nmbd和访问Samba的客户提供了下列记录文件,分别记录有关smbd、nmbd运行信息和每个客户的访问信息:
记录smbd 信息
/var/log/samba/log.smb
记录nmbd信息
/var/log/samba/log.nmb
记录客户访问信息
/var/log/samba/log.%m
主配置文件
/etc/samba/smb.conf
workgroup:所在工作组
工作组:将一组计算机 逻辑上整合起来 进行分散式管理 10 wangyang 123
工作域:将一组计算机 逻辑上整合起来 进行集中化管理 域控 wangyang 123
server string:服务器描述信息
Security:安全级别,可用值如下
share user server domain
log file:日志文件位置,“%m”变量表示客户机地址
%v:版本号 %m:客户端主机名 %N:客户端域名
%s:客户端用户名 $i:客户端IP %t:客户端的访问时间
max log file:日志文件的最大容量,单位为KB
passwd backend:设置共享账户文件的类型
常见共享目录配置项含义:
comment:对共享目录的注释、说明信息
path:共享目录在服务器中对应的实际路径
browseable:该共享目录在“网上邻居”中是否可见
guest ok:是否允许所有人访问,等效于“public”
writable:是否可写,与 read only 的作用相反
valid users : 设置哪些用户可以访问
printable : 是否加载打印功能
4、启用Samba服务器
Samba的运行包含两个后台守护进程:smbd和nmbd,它们是Samba的核心,在全部时间内运行。nmbd程序使得通过计算机可以浏览Linux服务器。Smbd守护进程在SMB软件包到达网上时对它们进行处理,并且为使用或共享它的资源与Linux进行协调。如果指定的是一个文件,该资源就是一个文件;而一个打印机请求就要求访问一台打印机。实际上,在请求访问打印机时,Smbd把要打印的信息存储到打印机队列中;在请求访问一个文件时,Smbd把数据发到内核,最后将它存到磁盘上。
你可以从inetd选择启动它们,但这种方法会使Samba变慢。建议使用下面命令可以启动这两个进程:
/etc/rc.d/init.d/smb start
/usr/sbin/samba start
如果想要在系统启动时自动启动samba,可以使用/usr/sbin/turboservice命令,选中其中的"SMB (Windows)File Services"。
三.samba共享实验搭建(匿名共享,用户认证,权限设置,IP限制,目录挂载,桌面运维)
(一)匿名共享实验搭建:(在Windows控制面板-程序开启SMB服务)
1.安装软件包:
yum -y install samba
2. cd /etc/samba/
vim smb.conf
全局配置区域:
[global]
workgroup = WORKGROUP工作组
server string =Samba Server Version
指定网卡监听IP:
日志放置区域:
log file = ///
允许匿名访问:
共享文件设置:
service smb start
3.创建目录:
mkdir /share
cd /share
date > index.html
echo “123456” >> 1.txt
4.启动服务:
service smb start
5.换Windows/linux查看:
\192.168.26.11(只读)(windows)
smbclient -L //192.168.26.12()linux
samba 相对于 FTP 服务器的杀手锏 :samba 支持在线修改文件
非图形化需要安装samba:smbclient samba -utils
6.下载文件:
smbclient //192.168.26.11/public
在线修改文件需要在配置文件中修改权限
(二)用户认证
用户认证
1、创建系统用户 可以不创建系统用户密码 passwd zhangsan
2、把 系统用户 转换为 samba 用户
yum -y install smb
1.vim /etc/samba/smb.conf
2.创建用户和目录:
useradd zhangsan
passwd zhangsan
mkdir /zhangsan
echo “456456” > 1.txt
3.设置权限:
在配置文件中设置允许写入
chown zhangsan:zhangsan /zhangsan/
4.将张三转为SMB用户: 必须是已存在的用户
pdbedit -a zhangsan
5.查看用户:
pdbedit -L
删除用户:
pdbedit -x
6.启动服务:
service smb start
7.换12虚拟机查看:
smbclient -U zhangsan -L //192.168.26.13
下载:
smbclient -U zhangsan //192.168.21.11/public
(三)Samba用户设置:
1.安装软件包:
yum -y install samba
2.mkdir /share
echo “123456” >> 2.txt
3.vim /etc/samba/smb.conf
4.启动服务:
service smb start
5.useradd zhangsan
pdbedit -a zhangsan
6.换12虚拟机:
smbclient -U zhangsan -L //192.168.26.12
smbclient -U zhangsan //192.168.21.11/public
(四)Samba权限设置:
要求:
leader01 /leader 允许 leader01 rwx ,允许 yunwei01、kaifa01 rx
yunwei01 /yunwei 允许 leader01、yunwei01 rwx,允许 yunwei02 rx
kaifa01 /kaifa 允许 kaifa01、leader01 rxw,允许 kaifa02 rx
1.yum -y install samba
2.vim /etc/samba/smb.conf
建立架构()
3.创建用户:
useradd le01
useradd yunwei01
useradd yunwei02
useradd kaifa01
useradd kaifa02
4.改为smb用户:
pdbedit -a le01
pdbedit -a yunwei01
pdbedit -a yunwei02
pdbedit -a kaifa01
pdbedit -a kaifa02
5.创建目录:
mkdir /{le,yunwei,kaifa}
chmod 777 /le/ /kaifa/ /yunwei/
cd /le/
echo “123” >1.txt
cd /kaifa/
echo “456” > 2.txt
cd /yunwei/
echo “789” > 3.txt
4.启动服务:
service smb start
5.换Windows/网络测试12虚拟机测试:
smbclient -U kaifa01 //192.168.21.11/le 可以查看
smbclient -U kaifa01 //192.168.21.11/yunwei 无法查看
smbclient -U yunwei01 //192.168.21.11/yunwei 可以查看
smbclient -U yunwei01 //192.168.21.11/kaifa 无法查看
smbclient -U yunwei02 //192.168.21.11/yunwei 可以查看
smbclient -U yunwei02 //192.168.21.11/le 无法查看
(五)IP限制
修改配置文件:在主配置文件的 global 区域内声明
hosts allow = 192.168.1. 申明允许网段
hosts allow = 192.168.1.1 申明允许 IP
hosts deny = 192.168.1. 申明拒绝网段
hosts deny = 192.168.1.1 申明拒绝 IP
1.vim /etc/samba/smb.conf
拒绝IP
host deny = 192.168.21.12 192.168.26.13
2.smbclient -U le01 -L //192.168.21.11(12,13虚拟机无法登陆)
(六)挂载:(将11虚拟机文件挂载到12虚拟机上)
1.创建挂载目录:
mkdir /le
2.挂载:
mount -t cifs -o username=le01,password=123123 //192.168.21.11/le /le
前一个le共享目录,最后一个le是挂载目录
3.12无法修改文件内容修改文件内容:
412可以在目录中创建文件
(七)启动桌面运维:(不建议使用,说实话,Linux运维工程师就是因为命令行才占优势难替代)
1.安装软件包:
samba-swat.tar.gz
2.cd samba-swat
yum -y install *
3.cd /etc/xinetd.d/
vim swat
4.启动服务:
service xinetd start
5.netstat -antp | grep :901
6.登录浏览器:192.168.21.11:901
相对与上一篇的FTP服务,SAMBA还是有非常明显的优势的。简单实现多系统之间互联,多个系统之间相互共享文件,妈妈再也抓不到我在学习的时候看视频和小说了。懂的都懂。文件传输内容基本到此也就结束了。当然不用担心,笔者会继续更新,地球不爆炸,笔者不放假。(大家浏览不易,感谢三连)