使用Samba实现文件共享

SMB服务消息块协议,指在解决局域网内的文件或打印机等资源的共享问题,这也使得在多个主机之间共享文件变得越来越简单.到了1991年,当时还在读大学的Tridgwell为了解决Linux系统与Windows系统的文件共享问题,基于SMB协议,开发出了SMBServer服务程序,后来由于名称冲突,改名为Samba,而如今Samba服务已经成为了,Linux系统与Windows系统之间数据传输的最佳选择.

Samba 服务概述

Samba是SMB的一种实现方法,主要用来实现Linux系统的文件和打印服务.Linux用户通过配置使用Samba服务器可以实现与Windows用户的资源共享.守护进程smbd和nmbd是Samba的核心,在全部时间内运行.nmbd程序使得通过企图计算机可以浏览Linux服务器.

SMB (Server Messages Block 信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务.SMB协议是客户机/服务器型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源.通过设置 “NetBIOS over TCP/IP” 使得Samba不但能与局域网络主机分享资源,还能与全世界的电脑分享资源.

smb: 实现资源共享、权限验证 -> TCP 139 445
nmb: 实现计算机名解析 -> UDP 137

Samba和FTP的区别

Samba可以实现跨平台的文件传输,并且支持在线修改,这一点是它和FTP服务器的明显区别.

Linux 系统之间的资源共享,我们使用的是NFS协议.
Windows 系统之间的资源共享,我们使用的是NetBIOS协议.
Linux 和 Windows 之间资源共享我们就要使用SMB协议了.CIFS协议.

Samba的作用

1.共享文件与打印机等资源的服务
2.支持跨平台访问的身份验证和权限设置,支持SSL
3.解析NetBIOS名字:Samba通过nmbd服务可以搭建NBNS(NetBIOS Name Service)服务器,提供名称解析,将 计算机的NetBIOS名解析为IP地址,实现主机之间的访问定位(windows独有).

匿名验证Samba配置

匿名Samba的主要作用是,在局域网内编辑共享文件,比如你有一个word文件需要让大家填写,此时我们就可以使用Samb服务将Word文档匿名分享出去,让大家填写文档

配置服务端

1.首先通过yum,来安装samba服务程序,恰巧samba服务名也是samba

[root@localhost ~]# yum install -y samba samba-client
Loaded plugins: product-id, search-disabled-repos, subscription-manager
This system is not registered with an entitlement server. You can use subscription-manager.
Package samba-4.7.1-6.el7.x86_64 already installed and latest version
Package samba-client-4.7.1-6.el7.x86_64 already installed and latest version
Nothing to do

2.然后创建一个共享目录,这个目录主要用来存储一些文件,后期要共享出去

[root@localhost ~]# mkdir /smb_file
[root@localhost ~]#
[root@localhost ~]# chmod 755 -R /smb_file/
[root@localhost ~]#

3.编辑Samba主配置文件,在配置文件最下面创建匿名共享区域,如果有多个匿名区域可以继续往下写配置

[root@localhost ~]# vim /etc/samba/smb.conf

  6 [global]
  7         workgroup = SAMBA
  8         security = user
  9         map to guest=Bad User   #添加此项,开启免密码认证

 .....
 38
 39 [smb_file]                       #共享目录显示的名称
 40         comment=hello guest      #描述信息(可以自定义)
 41         path=/smb_file           #共享的目录
 42         browseable=yes           #共享目录是否对所有人可见
 43         guest ok=yes             #允许匿名用户访问
 44         writable=yes             #匿名用户可写
 45         public=yes               #所有人可见

4.重启SMB服务,并设置开机自启动

[root@localhost ~]# systemctl restart smb
[root@localhost ~]# systemctl enable smb

配置Linux客户端

1.首先想要使用Samba资源,需要在Linxu客户端安装一个Samba的客户端工具,下面就开始安装吧

[root@localhost ~]# yum install -y samba-client
Loaded plugins: product-id, search-disabled-repos, subscription-manager
This system is not registered with an entitlement server. You can use subscription-manager.
Package samba-client-4.7.1-6.el7.x86_64 already installed and latest version
Nothing to do

2.匿名用户访问,我们可以直接使用下面的命令无需输入密码直接扫描资源,并使用

[root@localhost ~]# smbclient -L //服务器IP	             #查看smaba共享目录

Enter SAMBA root s password:

        Sharename       Type      Comment
        ---------       ----      -------
        print$          Disk      Printer Drivers
        smb_file        Disk      hello guest
        IPC$            IPC       IPC Service (Samba 4.7.1)
Reconnecting with SMB1 for workgroup listing.

        Server               Comment
        ---------            -------

        Workgroup            Master
        ---------            -------

[root@localhost ~]# smbclient //服务器IP/共享名			#查看共享文件

Enter SAMBA root s password:
Try "help" to get a list of possible commands.
smb: \> ls
  .                                  DR        0  Mon Nov  5 04:53:30 2018
  ..                                 DR        0  Mon Nov  5 04:45:11 2018
                17811456 blocks of size 1024. 16582792 blocks available
smb: \>

配置Windows客户端

运行CMD(Win+R) > 输入:\\服务器IP\	共享资源名			#访问目录

C:\Users\LyShark>net use * /del               #清理windows目录缓存
你有以下的远程连接:

                    \\192.168.1.20\smb_file
继续运行会取消连接。

你想继续此操作吗? (Y/N) [N]: y
命令成功完成。

密码验证Samba配置

基于密码验证的Samba的常用作用是,在局域网内,实现加密访问,只有知道相应密码的人才能访问指定资源

配置服务端

1.首先通过yum,来安装samba服务程序,恰巧samba服务名也是samba

[root@localhost ~]# yum install -y samba samba-client
Loaded plugins: product-id, search-disabled-repos, subscription-manager
This system is not registered with an entitlement server. You can use subscription-manager.
Package samba-4.7.1-6.el7.x86_64 already installed and latest version
Package samba-client-4.7.1-6.el7.x86_64 already installed and latest version
Nothing to do

2.然后创建一个共享目录,这个目录主要用来存储一些文件,后期要共享出去

[root@localhost ~]# mkdir /smb_file
[root@localhost ~]#
[root@localhost ~]# chmod 755 -R /smb_file/
[root@localhost ~]#

3.编辑Samba主配置文件,在配置文件最下面创建共享区域,如果有多个区域可以继续往下写配置

[root@localhost ~]# vim /etc/samba/smb.conf

 39 [smb_file]                       #共享目录显示的名称
 40         comment=hello admin      #描述信息(可以自定义)
 41         path=/smb_file           #共享的目录
 42         browseable=yes           #共享目录是否对所有人可见
 43         guest ok=no              #允许匿名用户访问
 44         writable=yes             #可写

4.通过命令管理,创建一个系统用户,并转换为Samba用户

[root@localhost ~]# useradd -M -s /sbin/nologin admin      #创建一个系统用户
[root@localhost ~]# smbpasswd -a admin                     #将系统用户转化成Samba用户
-----------------------------------------------------------------
[参数说明]

smbpasswd [选项] 账户名称

  -a        #添加账户并设置密码
  -x        #删除SMB账户
  -d        #禁用SMB账户
  -e        #启用SMB账户
-----------------------------------------------------------------

[root@localhost ~]# useradd -M -s /sbin/nologin guest      #创建一个系统用户
[root@localhost ~]# pdbedit -a guest                       #将系统用户转化成Samba用户
new password:
retype new password:
Unix username:        guest
NT username:
Account Flags:        [U          ]
User SID:             S-1-5-21-2500030998-3215874083-1041928306-1001
Primary Group SID:    S-1-5-21-2500030998-3215874083-1041928306-513
Full Name:
Home Directory:       \\localhost\guest
HomeDir Drive:
Logon Script:
Profile Path:         \\localhost\guest\profile
Domain:               LOCALHOST
Account desc:
Workstations:
Munged dial:
Logon time:           0
Logoff time:          Wed, 06 Feb 2036 10:06:39 EST
Kickoff time:         Wed, 06 Feb 2036 10:06:39 EST
Password last set:    Mon, 05 Nov 2018 06:23:37 EST
Password can change:  Mon, 05 Nov 2018 06:23:37 EST
Password must change: never
Last bad password   : 0
Bad password count  : 0
Logon hours         : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF


[root@localhost ~]# pdbedit -L                             #列出所有Samba用户
admin:1001:
guest:1002:

5.重启SMB服务,并设置开机自启动

[root@localhost ~]# systemctl restart smb
[root@localhost ~]# systemctl enable smb

配置Linux客户端

1.首先想要使用Samba资源,需要在Linxu客户端安装一个Samba的客户端工具,下面就开始安装吧

[root@localhost ~]# yum install -y samba-client
Loaded plugins: product-id, search-disabled-repos, subscription-manager
This system is not registered with an entitlement server. You can use subscription-manager.
Package samba-client-4.7.1-6.el7.x86_64 already installed and latest version
Nothing to do

2.用户访问,我们可以直接使用下面的命令输入密码扫描资源,并使用

[root@localhost ~]# smbclient -U 用户名 -L //服务器IP               #查看共享目录
Enter SAMBA dmin s password:

        Sharename       Type      Comment
        ---------       ----      -------
        print$          Disk      Printer Drivers
        smb_file        Disk      hello admin
        IPC$            IPC       IPC Service (Samba 4.7.1)
        admin           Disk      Home Directories
Reconnecting with SMB1 for workgroup listing.

        Server               Comment
        ---------            -------

        Workgroup            Master
        ---------            -------

[root@localhost ~]# smbclient -U 用户名 //服务器IP/共享文件名      #查看共享文件
Enter SAMBA dmins password:
Try "help" to get a list of possible commands.
smb: \> ls
  .                                   D        0  Mon Nov  5 06:30:02 2018
  ..                                 DR        0  Mon Nov  5 06:17:37 2018
  lyshark                             N      988  Mon Nov  5 06:23:28 2018

                17811456 blocks of size 1024. 16584148 blocks available

Linux挂载Samba

1.将远程的smb_file共享目录,挂载到本地的/mnt下,我们可以执行以下命令

[文件格式]  [/smb_file共享目录][挂载到/mnt] [username=smb用户名][password=smb密码]

[root@localhost ~]# mount -t cifs //192.168.1.20/smb_file /mnt -o username=admin,password=123123
[root@localhost ~]#
[root@localhost ~]# df -h
Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/rhel-root     17G  1.2G   16G   7% /
//192.168.1.20/smb_file   17G  1.2G   16G   7% /mnt

Samba ACL权限控制

允许单个IP拒绝所有

[common]

comment=Common Share 
hosts allow =  IP地址
hosts deny =  IP地址

允许单个网段,拒绝所有

[common]

path =/common 
hosts allow =127.0.0.0/24  example
hosts deny =127.0.0.0/24  example

Samba 给用户取别名

1.修改主配置文件

vim /etc/samba/smbusers

用户名=别名1 别名2

lyshark= wang rui

2.主配置文件加入以下内容

vim /etc/samba/smb.conf
username map = /etc/samba/smbusers
一. Samba 简介 SambaSMB是其缩写) 是一个网络服务器,用于Linux和Windows共享文件之用;Samba 即可以用于Windows和Linux之间的共享文件,也一样用于LinuxLinux之间的共享文件;不过对于LinuxLinux之间共享文件有更好的网络文件系统NFS,NFS也是需要架设服务器的; 大家知道在Windows 网络中的每台机器即可以是文件共享服务器,也可以同是客户机;Samba 也一样能行,比如一台Linux的机器,如果架了Samba Server 后,它能充当共享服务器,同时也能做为客户机来访问其它网络中的Windows共享文件系统,或其它Linux的Sabmba 服务器; 我们在Windows网络中,看到共享文件功能知道,我们直接就可以把共享文件夹当做本地硬盘来使用。在Linux的中,就是通过Samba的向网络中的机器提供共享文件系统,也可以把网络中其它机器的共享挂载在本地机上使用;这在一定意义上说和FTP是不一样的。 二. Samba的几个套件,安装及简单配置 sambasamba-client, samba-common 一句 sudo apt-get install samba samba-client 就能全部装上 启动samba也很简单: sudo /etc/init.d/samba start 设置samba的密码, 可以先添加samba用户, 必须是系统用户。 smbpasswd -a yourname 三. 互访 1)windows访问ubuntu windows访问ubuntu很简单, 先在ubuntu上设置共享目录即可, 鼠标右键点目录,选择sharing options, 够选share this folder,需要的话也可以够选下面的allow write 这时在windows的网络邻居中的网络中查找就能找到共享目录了,通过//host也行 2)ubuntu访问windows 第一种:在ubuntu的网络中直接浏览访问 位置->网络,点击界面中windows网络->workgroup,在workgroup组中就可以看到windows计算机名,双击会弹出输入用户名和密码的对话框,将我们上面设置smb的用户名和密码输入就可以进行访问。 第二种:用ubuntu 系统自带的连接到服务器功能访问 位置->连接到服务器,在服务类型中选择“windows共享”,在服务器中输入windows计算机的ip地址或计算机名,点击连接,这样在系统桌面中就会显示一个连接到windows 计算机的文件卷,里面就是windows计算机的共享目录了。 同样在访问的时候要输入smb的用户名和密码。 第三种:用mount’挂载windows的共享目录到本地磁盘 首先要在ubuntu系统中建立一个挂载点,在这里我们建立的挂在点为 /mnt/wind 同样在保证网络连接正常,且windows中有共享目录的前提下,进行一下操作 以windows的ip为192.168.0.1,共享文件夹为share为例 命令如下: mount -t smbfs –o username=wangyh,password=123456 //192.168.0.1/share /mnt/wind 有是这样在访问的时候会出现中文乱码的问题,这样我们可以按下面命令来执行,可以解决这个问题 mount -o smbfs -o iocharset=uft8,codepage=cp936,clmask=777,fmask=777,userneme=wangyh,password=123456 //192.168.0.1/share /mnt/wind 注解:usename和password都为smb的用户和密码,如果要详细了解mount命令,使用man mount在终端查看详细用法 第四种:使用smbclient 命令 一般来讲先列出所有共享目录,命令如下: smbclient –L //192.168.0.1/ -U yourname 输入smb的密码后,将看到共享目录列表。 假设进入共享目录share,命令如下: smbclient //192.168.0.1/share -U yourname 之后将看到一个smb:> 已经进入了smb模式,有些像ftp,敲help可以查看相关命令,get,put可以下载和上传文件。 五. 小结 以上几步,对于简单使用ubuntu和windows的文件共享于互访已经足够,更详细的资料可以参考:http://linux.vbird.org/linux_server/0370samba.php#server_pkg
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

微软技术分享

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值