samba 共享目录

1.SAMBA服务概述 协议 监听端口137 架构


samba:Linux系统的一种文件共享程序服务

通常在主机文件共享的应用场景中,由于文件系统的差异化,Windows和Linux的文件系统不兼容,windows进行文件或打印机共享是通过微软自己的SMB/CIFS网络协议来实现的,此两款协议是微软的私有协议。于是Linux和windows无法直接进行文件数据交互。


SMB:service message Block,服务信息块

协议为CIFS:Common Internet File System (通用internet文件系统)

Samba的出现实现了跨系统平台的文件数据交互(也是基于CIFS协议),属于开源程序,特别适用linux/unix、Windows混合平台的企业环境。

NetBIOS:(NETwork Basic Input/Output System)是网络基本输入输出系统,局域网通信机制,在Windows就是基于NetBIOS协议实现网络资源的共享的


2.通信接口

CIFS监听端口137/udp  138/udp   139/tcp   445/tcp

①samba在Linux可以实现和windows等同的netbios协议

②samba可以实现smbd/cifs协议

③samba可以实现winbindd(将Linux加入windows的活动目录,较少使用)


Samba的客户端和服务端实验操作

samba属于C/S架构,有客户端和服务端,在centos系统内,smbclient为客户端,samba为服务端


2.案例一 将Linux作为客户端,windows作为服务端

Linux作为客户端,windows作为服务端

1.)linux安装samba客户端   关闭防火墙

先去配置yum环境,挂载镜像sr0                 

yum  clean all    清空缓存

安装两个文件包 

yum -y install samba-client    yum install cifs-utils(cifs组件)

关闭的防火墙服务

iptables -F

iptables -X

iptables -Z

systemctl stop firewalld.service    ---关闭防火墙

setenforce  0


2.)windows创建共享目录及用户   

例如和windows主机进行文件共享 ---->方式1(命令行 客户端访问)

在windows中新建目录,并设置共享,虚拟机与widnows选择仅主机模式,保证两者能通信


在windows10中选择一个位置作为共享目录,      ----window作为服务器

比如说  在D盘下  创建一个目录      share     ----作为共享目录

去改这个共享目录

 

共享架构和无共享架构区别 文件共享架构_共享架构和无共享架构区别

 

 

 


创建用户

创建新用户share1,用来登录共享目录

 

共享架构和无共享架构区别 文件共享架构_共享架构和无共享架构区别_02

 

 

 

管理其他账号

 

共享架构和无共享架构区别 文件共享架构_服务端_03

 

 

 

在电脑设置中添加其他新用户

 

共享架构和无共享架构区别 文件共享架构_客户端_04

 

 

 


将其他人添加到这台电脑

 

共享架构和无共享架构区别 文件共享架构_服务端_05

 

 

 


单击左边的用户,在中间的用户列表中右键,出现的菜单选择新用户

 

共享架构和无共享架构区别 文件共享架构_共享目录_06

 

 

 


对目录设置共享,使用share1进行登录可以修改share1的权限为读写

 

共享架构和无共享架构区别 文件共享架构_共享目录_07

 

 

 


3)查看windows服务端 可共享的目录

格式为:

smbclient  -L  HOST  -U   USERNAME

-L 要访问主机的IP的   -U 那个用户名称


smbclient -L 192.168.10.1 -U share1 --share1为windows用户10.1网段vmnet1

 

共享架构和无共享架构区别 文件共享架构_服务端_08

 

 

 


4.通过命令行 客户端  访问服务端共享目录,上传下载

命令格式为:

smbclient  //windows-ip/share-DIR    -U   username

要访问Windows 的IP/分享的目录        用户名

注意             // 后面直接跟着/分享命令,,没有空格


例如:

smbclient //192.168.10.1/share -U share1  --访问vmnet1 IP为10.1

1.)操作命令


help  samba客户端帮助命令

lcd  切换目录(linux目录)

ls显示对端共享目录的清单文件

put 将当前客户端的文件上传到对端服务端(windows)

get  将服务端的文件下载到本地Linux文件系统指定的路径

quit 退出当前客户端



2.)linux客户端访问windows服务器目录

smbclient //192.168.10.1/share -U share1  --访问window主机IP即vmnet1的IP/目录

 

共享架构和无共享架构区别 文件共享架构_共享架构和无共享架构区别_09

 

 

 



get  服务端的文件下载到  本地Linux文件系统指定的路径

put   当前linux客户端的文件上传到  对端服务端(windows)

 

共享架构和无共享架构区别 文件共享架构_共享架构和无共享架构区别_10

 

 

 

查看linux,从window下载的text.txt文件

 

共享架构和无共享架构区别 文件共享架构_共享目录_11

 

 

 

查看window  上传的文件anaconda-ks.cfg

 

共享架构和无共享架构区别 文件共享架构_共享目录_12

 

 

 

5.)Linux客户端和windows主机服务端  进行文件共享目录 挂载  

挂载到当前Linux文件系统


命令格式:

mount -t cifs     //windows_IP/SHARE_DIR   /xxx  -o  username=USERNAME

-t被挂载的文件系统  win ip地址 共享目录  挂载点/mnt  -o选项   用户名


例如:

mount -t cifs   //192.168.10.1/share  /mnt  -o   username=share1

mount挂载的文件系统类型

 

共享架构和无共享架构区别 文件共享架构_共享架构和无共享架构区别_13

 

 

 

注意:虽然当前Linux主机使用的是Linux用户,在挂载点内对对端文件操作的身份为对端主机的用户身份。


mount -t cifs //192.168.10.1/share /mnt -o username=share1      ---可查看访问主机共享目录

 

共享架构和无共享架构区别 文件共享架构_共享目录_14

 

 

 


在写到开机自动挂载  这个分享目录---自动挂载实验不成功

vim /etc/fstab   ---可以尝试这个命令

//192.168.10.1/share /mnt  cifs defaults,username=smbuser1,password=123456 0 0                

 

共享架构和无共享架构区别 文件共享架构_共享架构和无共享架构区别_15

 

 

 

路径                  挂载点          文件类型              缺省     检测  备份

 0   0  不检测 不备份    1检测备份   1,2,分别表示磁盘检测的级别  0表示开机不检测硬盘   


3.案例二 linux为服务器,windows为客户机进行文件共享

1)两个服务程序  安装samba服务端  启动查看服务 和端口    

samba两个服务程序

samba服务器提供smbd、nmbd两个服务程序,

smbd负责为客户机提供服务器中   共享资源(目录和文件等)的访问。

nmbd负责提供基于NetBIOS协议的  主机名称解析,

以便为Windows网络中的主机进行查询服务,因为windows只认识NETBIOS协议


1.安装命令:    

yum -y install samba         ---安装samba服务端

yum  -y  install  samba*    ---注意:安装所有有关samba的安装包


 /usr/lib/systemd/system服务脚本位置

/etc/samba/smb.conf  主配置文件  

/etc/samba/smbusers     samba用户映射文件 ,将所有samba用户都映射为权限很少的本地用户


比如说有两个samba用户 :  

tom   和  sun   那么这两个用户在访问samba资源的时候都映射为  nobody   权限很少


2.查看两个程序服务


cd   /usr/lib/systemd/system     


ls -l | egrep "smb|nmb"   查找这两个服务


ls -l smb.service  nmb.service 或者使用 这个查看

显示这两个smb.service    共享资源(目录和文件等)的访问。   

nmb.service    负责提供基于NetBIOS协议的 主机名称解析

 

共享架构和无共享架构区别 文件共享架构_共享架构和无共享架构区别_16

 

 

 


3.启动samba服务

systemctl start smb     ---启动smb服务

systemctl start nmb     ---启动nmb服务


4.查看smb nmb服务端口

netstat -antulp | grep  smb         netstat -antulp | grep  nmb


或者使用命令 netstat -antulp | egrep "smb|nmb"

netstat -antulp | grep -E "smb|nmb"  --  -E正则表达式方法

 

共享架构和无共享架构区别 文件共享架构_共享目录_17

 

 

 

共享架构和无共享架构区别 文件共享架构_共享架构和无共享架构区别_18

 

 


2.)修改smaba组配置文件 更改工作组 监听网卡

cd  /etc/samba          ls   ---查看文件      

mv  smb.conf  smb.conf.bak     ---先把名字后面加上.bak备份(保存备份)

cp  smb.conf.example  smb.conf  --然后复制.example 改名字成.conf  再去配置

 

共享架构和无共享架构区别 文件共享架构_共享架构和无共享架构区别_19

 

 

 

vim   smb.conf    ---修改这个配置文件

#       [global]                    ----在这全局配置下改Network内容

# ----------------------- Network-Related Options -----------      

       #workgroup = MYGROUP 

       workgroup = WORKGROUP         ---改成WORKFROUP

interfaces = lo ens33 192.168.10.2/24  ---监听的网卡和地址以及白名单

     hosts allow = 127. 192.168.10.     ---127主机和10. 这个网段

 

共享架构和无共享架构区别 文件共享架构_共享架构和无共享架构区别_20

 

 

 



3.关闭防火墙 添加用户,设置密码 验证

1.创建samba共享用户


iptables -F

iptables -X

iptables -Z

systemctl stop firewalld.service    ---关闭防火墙

setenforce  0

useradd smbuser1     ---添加smbuser1  用户

smbpasswd -a smbuser1   ---给smb用户设置密码


配置samba用户密码(由于samba的自有密码机制,需使用smbpasswd命令进行创建)


-a USERNAME:添加系统用户为samba用户,将密码添加到smb特定用户自有密码中

-d:禁用用户

-e:启用用户

-x:删除用户

 

共享架构和无共享架构区别 文件共享架构_服务端_21

 

 

 



在windows客户机进行验证查看(默认进入的为samba指定程序用户的家目录)

开始-运行,输入:\\samba服务器的IP    

我的主机服务器IP为   \\192.168.10.2

 

共享架构和无共享架构区别 文件共享架构_服务端_22

 

 

 


然后输入用户名和密码我设定用户名字为

smbuser1  为我创建用户的家目录

 

共享架构和无共享架构区别 文件共享架构_共享架构和无共享架构区别_23

 

 

 


然后看是否成功,在linux服务器上创建一个文件  woaini

看window是否能看到

 

共享架构和无共享架构区别 文件共享架构_客户端_24

 

 

 

4.)对samba用户共享 进行自定义 vim/etc/samba/smb.conf (解读)

思路:去修改smb.conf 配置文件 记得改之前备份

cd  /etc/samba          ls         ---查看文件

mv  smb.conf  smb.conf.bak       ---先把名字后面加上.bak备份(保存备份)

cp  smb.conf.example  smb.conf   --然后复制文件.example 改名字成.conf  

vim   smb.conf                    ---修改这个配置文件


1.smb.conf解读文件


定义主机名称 Ip work name


84         #workgroup = MYGROUP          ---把这个注释掉下面复制修改,备份


86         workgroup = WORKGROUP           ----改Windows工作组,

88         server string = Samba Server Version %v

90        netbios name = MYSERVER             -----定义主机名称

92         interfaces = lo ens33 192.168.10.2/24  ---监听的网卡和地址以及白名单

93         hosts allow = 127. 192.168.10.         ----127主机和10. 这个网段

94

95 # --------------------------- Logging Options ----------

监听的网卡和地址以及白名单

 interfaces = lo ens33 192.168.10.2/24   ---我的主机ip网卡名称 和ip地址

 hosts allow = 127.  192.168.10.  --如果要写全则为192168.10.0/255.255.25.0

允许访问的客户端127  指定的网段

 

共享架构和无共享架构区别 文件共享架构_共享目录_25

 

 

 



samba的日志、日志格式、最大日志容量


103         # log files split per-machine:

104         log file = /var/log/samba/log.%m   ---日志格式

105         # maximum size of 50KB per log file, then rotate:

106         max log size = 50       ---最大日志量为50


认证方式用户

119         security = user                ---认证方式是用户

120         passdb backend = tdbsam     ---密码


共享目录[ ]     --可看到的目录


278 [homes]    -----[ ] 中括号里面的homes可被客户端读取,其余内容看不到

279         comment = Home Directories  对共享目录的注释、说明

280         browseable = no     是否在网上邻居中可见,为所有人可浏览

281         writable = yes         是否可写,与read only相反,    注意

282        valid users = %S                (注意,需要结合目录本身的权限)

283        valid users = MYDOMAIN\%S


285 [printers]                        只能读取printers ,其余内容不能读取

286         comment = All Printers

287         path = /var/spool/samba  linux共享目录在服务器中对应的真实路径

288         browseable = no        是否可浏览

289         guest ok = no   是否允许匿名访问,当security=share有生效,public用来指定该共享是否允许guest账户访问,两者的作用是相同的

290         writable = no     是否可写

291         printable = yes      是否可打印


samba客户端访问必须通过用户认证,加密密码文件的位置


5.samba服务器 添加一个共享目录  重启服务查看

 

共享架构和无共享架构区别 文件共享架构_共享目录_26

 

 

 

共享架构和无共享架构区别 文件共享架构_共享目录_27

 

 

---->   >>>>> centos-7

默认Linux作为服务端,browseable为yes状态


cd  /etc/samba          ls   ---查看文件

mv  smb.conf  smb.conf.bak     ---先把名字后面加上.bak备份(保存备份)

cp  smb.conf.example  smb.conf  --然后复制.example 改名字成.conf


vim   smb.conf    ---修改这个配置文件

在最后一行加入这7行   

[share]

        comment = Share Stuff       ---说明

        path = /share/samba     ----路径

        public = yes      ----是否让其他人

        writable = yes           ----写的权限

        browseable = yes        

 

共享架构和无共享架构区别 文件共享架构_服务端_28

 

 

 


重启服务,然后创建真实目录/share/samba

systemctl restart nmb    

systemctl restart smb   ---重启这两个服务程序

mkdir -p /share/samba  ---创建目录

cd /share/samba/   ---到这个目录下查看并创建文件

 

共享架构和无共享架构区别 文件共享架构_服务端_29

 

 

 

共享架构和无共享架构区别 文件共享架构_客户端_30

 

 


6.Acl控制文件访问权限

使用acl机制来控制文件权限,通常在生产环境比较安全,用的较多


rpm -qa | grep acl  ---查看acl的rpm包


格式

setfacl   -m    u:smbuser1:rwx     /share/samba/ ---设置文件的访问控制列表

设置acl   设置     用户   有rwx权限    文件


测试配置文件是否有语法错误,并显示最终生效的配置。使用testparm命令即可


setfacl -m u:smbuser1:rwx /share/samba/    --给smbuser1用户增加读写执行的权限

 

共享架构和无共享架构区别 文件共享架构_服务端_31

 

 

 

共享架构和无共享架构区别 文件共享架构_客户端_32

 

 



7客户端访问.登录  linux服务器下访问

linux在线访问:

smbclient -L //192.168.10.1 -U smbuser1samba服务器的ip),查看文件共享资源 在客户端


登录:

smbclient -U smbuser1 //192.168.10.2/share(共享目录的名称,不是目录绝对路径)



linux服务器下访问

客户机先ping看能否通服务器 ping 192.168.10.2   --服务器ip

然后   客户端  执行 smbclient -L 192.168.10.2 -U smbuser1

 

共享架构和无共享架构区别 文件共享架构_客户端_33

 

 

 

Domain=[CENTOS3] OS=[Windows 6.1] Server=[Samba 4.6.2]

        Sharename       Type      Comment

        ---------       ----      -------

        Share(共享资源)   Disk      Share Stuff   (我们写的说明)

        IPC$            IPC       IPC Service (Samba Server Version 4.6.2)

        smbuser1        Disk      Home Directories

(家目录)


8.客户机永久挂载

挂载:

mount -t cifs //192.168.10.2/share/mnt -o username=smbuser1,password=123 /mnt

 

共享架构和无共享架构区别 文件共享架构_服务端_34

 

 

 

mount查看

 

共享架构和无共享架构区别 文件共享架构_共享架构和无共享架构区别_35

 

 

 

1.)永久挂载格式

//server/share/mount/pointcifs defaults,username=[username],password=[password] 0 0                                ------- 注意用户名,逗号隔开password


vim  /etc/fstab


如:

//192.168.10.1/public /mnt cifs defaults,username=smbuser1,password=123 0 0


//192.168.10.2/share /mnt cifs defaults,username=smbuser1,password=123456 0 0                   ---注意用户名,逗号隔开password

 

共享架构和无共享架构区别 文件共享架构_共享架构和无共享架构区别_36

 

 

 

共享架构和无共享架构区别 文件共享架构_客户端_37

 

 



2.)永久挂载


vim /etc/rc.local    把挂载命令写的文件中


mount -t cifs //192.168.10.2/share /mnt -o username=smbuser1,password=123456


chmod  777  rc.local去修改属性才能实现

 

共享架构和无共享架构区别 文件共享架构_共享目录_38

 

 

 

共享架构和无共享架构区别 文件共享架构_共享目录_39

 

 



生活是一种感受也是一种积累