zoukankan      html  css  js  c++  java
  • samba

    一、概念

    1.SMB

    SMB 是一个协议 (Server Messages Block) Samba是一个它的使用软件,默认是一种在局域网上共享文件系统和打印机的一种通信协议,它为局域网内的不同操作系统的计算机之间提供文件及打印机等资源的共享服务。SMB协议是客户机/服务器型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源。通过设置“NetBIOS over TCP/IP”使得Samba能够在广域网上使用。

    说明:

      (1)FTP不仅能在局域网工作,还能在广域网上工作。  而SMB默认情况下,只能工作在局域网~

      (2)FTP只能共享文件,不能共享打印机。          而SMB不仅能共享文件,还可以共享打印设备~

      (3)早期打印机无法直接工作在Linux或Windows上,必须要通过线缆物理直连到打印机,你的电脑才能使用打印机。不能通过局域网直接访问使用打印机!

        补充:现在打印机当作一个主机,给他连上网线配上IP;自己的电脑只要装上驱动,就能使用打印机了~

     

    2.FTP和SMB

      FTP

        优点:文件传输、应用层协议、可跨平台

        缺点:只能实现文件传输、无法实现文件系统挂载、无法直接修改服务器端文件

      SMB

        优点:使用SMB/CIFS协议、同样可跨平台、可以实现文件系统挂载可以直接修改服务器端文件

        缺点:文件传输没有FTP快,且主要用在局域网内的文件共享

      Example:将A主机的存储空间映射到B主机上

        (1)使用B主机的人把电影存在"本地"上班偷偷看,殊不知电影其实是存在A主机上,使用A的老板已经发现你在划水了~~

        (2)使用B主机的人不需要主动用FTP来上传文件了,保存到B主机"本地"其实是保存到A主机上,对于不懂技术的人很省事

        (3)不需要把文件拿出来,修改完,再上传覆盖,因为修改B主机"本地"其实就可以相当于修改A主机了~

    3.CIFS和SMB

      CIFS :Common Internet File System

      SMB: Server Messages Block

      先有SMB协议,经过Microsoft对技术文档的归纳总结,才有CIFS协议,CIFS协议可以使程序访问远程Internet计算机上的文件并要求此计算机提供服务。客户程序请求远在服务器上的服务器程序为他提供服务,服务器获得请求并返回相应。总而言之,CIFS协议是公开的或开放的SMB协议版本,并有Microsoft使用;SMB协议是局域网上用于服务器文件访问和打印的协议。然而,FTP普及率吊打它俩~.~!

    4.NFS

    在Unix Like 上面可以分享档案数据的 file system 是 NFS,那么在 Windows 上面使用的『网络邻居』所使用的档案系统则称为Common Internet File System, CIFS 

       

    二、Samba基本实验

    1.Samba软件相关信息

      1.1.  协议:

          SMB/CIFS

      1.2.  服务:

          smb是服务名    实现资源共享、权限验证      

           TCP:139端口、445端口(TCP端口对应的服务是smbd服务,其作用是提供服务器中文件、打印资源的共享访问)

      1.3.  配置文件目录:

          /etc/samba/  

         主配置文件:

          /etc/samba/smb.conf  

       别名配置文件:

          /etc/smaba/smbusers  

      1.4.  如何在在Windows查看、打开或关闭SMB/CIFS协议?

      1.5.  公司内网可以发现主机,并共享文件

    2.登录验证模式(又叫做安全级别)

    1  share  匿名验证    和ftp不同的是,samba不仅不需要密码,还不需要账号
    
    2  user   本地用户验证  默认的登录验证模式(安全级别)
    
    3  alias  别名用户验证  虚拟用户,减少对Linux用户管理的负担

    扩展:tdbsam是一种本地用户验证,它使用一个数据库文件来验证账户和密码,数据库文件叫passdb.tdb。可以通过pdbedit -a向数据库中添加新用户,不过要建立的samba新用户必须先是本地用户(即赋予本地用户以samba权限)

       (1)pdbedit -a username  赋予linux本地用户以samba权限,同时设置独立的samba密码(该密码存于/etc/samba/passdb.tdb)

       (2)pdbedit -X username    删除samaba账户。这个账户就变成了1个普通的Linux账户了

       (3)pdbedit -L        列出samba用户列表,读取passdb.tdb数据库文件

    对比:FTP  密码来自/etc/shadow         账号来自/etc/passwd  linux账户+linux密码

         SMB  密码来自/etc/samba/passdb.tdb  账号来自/etc/passwd  linux账户+samba密码

    3.Windows登陆Linux smb服务器

    [root@localhost network-scripts]# yum -y install samba
    [root@localhost network-scripts]# systemctl start smb
    [root@localhost network-scripts]# systemctl status smb
    ● smb.service - Samba SMB Daemon
    Loaded: loaded (/usr/lib/systemd/system/smb.service; disabled; vendor preset: disabled)
    Active: active (running) since Sun 2020-05-03 12:12:05 CST; 6s ago
    
    [root@localhost network-scripts]# useradd -s /sbin/nologin zhangsan
    [root@localhost network-scripts]# passwd zhangsan
    Changing password for user zhangsan.
    New password: 123456
    BAD PASSWORD: The password is shorter than 8 characters
    Retype new password:123456
    
    [root@localhost network-scripts]# pdbedit -a zhangsan
    new password:111
    retype new password:111
    Unix username: zhangsan
    NT username: 
    Account Flags: [U ]
    User SID: S-1-5-21-4156730158-4116294462-2038935887-1000
    Primary Group SID: S-1-5-21-4156730158-4116294462-2038935887-513
    Full Name: 
    Home Directory: \localhostzhangsan
    HomeDir Drive: 
    Logon Script: 
    Profile Path: \localhostzhangsanprofile
    Domain: LOCALHOST
    Account desc: 
    Workstations: 
    Munged dial: 
    Logon time: 0
    Logoff time: Wed, 06 Feb 2036 23:06:39 CST
    Kickoff time: Wed, 06 Feb 2036 23:06:39 CST
    Password last set: Sun, 03 May 2020 12:14:13 CST
    Password can change: Sun, 03 May 2020 12:14:13 CST
    Password must change: never
    Last bad password : 0
    Bad password count : 0
    Logon hours : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

    Windows端要开启smb服务,才能连接到smb服务器

    4.Windows挂载Linux smb服务器

    可以新建、修改、删除文件!

    三、Samba配置

    1.常见配置参数

    [global]  用于定义Samaba服务器的总体特性,配置对全局范围生效
        
    server string = smb server version %v #对samba服务器的描述,%v代表版本号
    workgroup = DEBIAN_FANS  #samba服务器属于哪个工作组名或域名
    hosts allow = 192.168.0. #指定那些主机可以访问
    hosts deny =  192.168.8. #指定那些主机不可以访问
    bind interface only = yes                    # 如果设置成是,samba只对这几个网络接口服务
    interfaces = 192.168.0.100/255.255.255.0     #设置samba将对哪些网络接口进行服务。
    username map = /etc/samba/smbusers #用户别名文件。
    socket address = 192.168.0.10                #强制samba只在该端口监听
    include = /etc/samba/smb.conf.another        #包括另外的samba配置文件
    show add printer wizard= yes   # 当用户添加打印机时,显示安装向导.
    load printers = yes
    log file = /var/log/samba/%m.log             #日志文件,%m表示主机名
    max log size = 50                            #日志文件的大小,单位kb,0表示不限制单个日志文件的大小
    log level = 3                                #日志级别 0 表示没有,3 一般比较合理
    security = user                  #安全级别,默认为本地user,还有匿名share、别名alias
    passdb backend = tdbsam             #使用 linux账户+samba密码 的验证模式
    load printers = yes/no              #是否允许samba加载打印机和共享
    [homes]  用于定义用户宿主目录的共享属性
    
    [homes]                      #共享名(不能被修改,泛指用户对应的家目录)
    comment = Home  Dir          #共享描述
    browseable = no              #共享是否可看(可以看到其他用户的家目录,browseable与public 效果等同)
    writable = yes               #共享是否可写(配置文件+文件系统 共同决定是否可写)
    valid users = %S,name,@group #可登陆用户(允许访问该共享的用户,逗号隔开)
    read only = no
    create mode = 0777
    directory mode = 0775
            
    [printers]  设置打印机的共享属性
    path = /var/spool/samba   #共享设备路径
    guest ok = yes         #是否允许匿名访问
    browseable = yes        
    printable = yes         #是否可以打印
    read only = yes        #只可读
    [自定义]
    
    [自定义]         #共享名(不是共享出来的目录名)
    comment = 
    path =      #共享路径(路径要自己检查一下是否存在)
    public= yes
    browseable = yes
    writeable = yes
       
    [配置文件检查工具]
    testparm  检查配置文件的语法是否正确:Loaded services file OK.
    -v        显示samba支持的所有选项
    [root@localhost user1]# testparm -v Load smb config files from /etc/samba/smb.conf Loaded services file OK. Server role: ROLE_STANDALONE Press enter to see a dump of your service definitions  按回车键,可以看具体的配置信息

    2.访问控制

     3.启动管理

    [root@localhost user1]# systemctl enable smb
    [root@localhost user1]# systemctl start smb
    [root@localhost user1]# systemctl status smb

    4.客户端登陆

    4.1 Linux端:

    [root@localhost user1]# yum -y install samba-client        #安装samba客户端

    smbclient -U 用户名 -L //服务器地址

    [root@localhost user1]# smbclient -U zhangsan -L //10.0.0.50  #查看服务器共享
    Enter SAMBAzhangsan's password: 
    
        Sharename       Type      Comment
        ---------       ----      -------
        print$          Disk      Printer Drivers
        IPC$            IPC       IPC Service (Samba 4.10.4)
        zhangsan        Disk      Home Directories  
    Reconnecting with SMB1 for workgroup listing.
    
        Server               Comment
        ---------            -------
    
        Workgroup            Master

    smbclient -U 用户名  //服务器地址/共享名

    [root@localhost user1]# smbclient -U zhangsan //10.0.0.50/zhangsan    #登陆服务器共享
    Enter SAMBAzhangsan's password: 
    Try "help" to get a list of possible commands.
    smb: > 

    4.2 Windows端:

    Win+R ——> \服务器地址用户名

    Win+R ——> cmd ——> net use * /del ——>清空缓存

    四、Samba部署实验

     1.本地验证(登陆、上传/下载、删除、覆盖)

    [root@localhost zhangsan]# vim /etc/samba/smb.conf
            comment = share dir
            path = /atguigu
    public = Yes
            writable = Yes
            browseable = Yes
    [root@localhost zhangsan]# mkdir /atguigu
    [root@localhost zhangsan]# systemctl restart smb
    [root@localhost user1]# smbclient -U zhangsan -L  //10.0.0.50
    Enter SAMBAzhangsan's password: 
    
        Sharename       Type      Comment
        ---------       ----      -------
        atguigu         Disk      share dir
        print$          Disk      Printer Drivers
        IPC$            IPC       IPC Service (Samba 4.10.4)
        zhangsan        Disk      Home Directories
    Reconnecting with SMB1 for workgroup listing.
    
        Server               Comment
        ---------            -------
    
        Workgroup            Master
        ---------            -------

    服务端:

    [root@localhost ~]# ls -ld /atguigu        #配置文件和文件系统共同决定写权限!
    drwxr-xr-x 2 root root 6 May  6 23:29 /atguigu
    [root@localhost ~]# chmod o+w /atguigu      #可以上传、删除自己和别人的文件、覆盖自己的文件(不能覆盖别人的文件)
    [root@localhost ~]# ls -ld /atguigu/
    drwxr-xrwx 2 root root 6 May  6 23:29 /atguigu/

    客户端:

    [root@localhost user1]# smbclient -U zhangsan //10.0.0.50/atguigu
    Enter SAMBAzhangsan's password: 
    Current directory is \10.0.0.50atguigu
    smb: > ls  
      .                                   D        0  Wed May  6 23:44:16 2020
      ..                                  D        0  Wed May  6 23:29:38 2020
      guiguserver                         N       16  Wed May  6 23:44:16 2020
    
            27245572 blocks of size 1024. 23557296 blocks available
    smb: > get guiguserver 
    getting file guiguserver of size 16 as guiguserver (0.1 KiloBytes/sec) (average 0.1 KiloBytes/sec)
    
    smb: > !pwd
    /home/user1
    smb: > !ls
    client    Desktop  Documents  Downloads  guiguserver  io    Music  Pictures  Public  Templates  Videos
    smb: > put client 
    putting file client as client (0.2 kb/s) (average 0.2 kb/s)

    2.访问控制

    2.1用户登录限制

    服务端:

    [root@localhost atguigu]# vim /etc/samba/smb.conf
    [atguigu]
            comment = share dir
            path = /atguigu
            public = Yes
            writable = Yes
            browseable = Yes
            valid users = zhangsan
    [root@localhost atguigu]# systemctl restart smb

    客户端:

    [root@localhost user1]# smbclient -U lisi //10.0.0.50/atguigu
    Enter SAMBAlisi's password: 
    tree connect failed: NT_STATUS_ACCESS_DENIED
    [root@localhost user1]# smbclient -U zhangsan //10.0.0.50/atguigu
    Enter SAMBAzhangsan's password: 
    Try "help" to get a list of possible commands.
    smb: > 

    2.2用户写权限限制

    服务端:

    [root@localhost atguigu]# vim /etc/samba/smb.conf
    [atguigu]
            comment = share dir
            path = /atguigu
            public = Yes
            writable = Yes
            browseable = Yes
    ;       valid users = zhangsan
            read only = yes
            write list = zhangsan            #只允许zhangsan有写权限
    [root@localhost atguigu]# systemctl restart smb

    客户端:

    [root@localhost user1]# smbclient -U lisi //10.0.0.50/atguigu
    Enter SAMBAlisi's password: 
    Try "help" to get a list of possible commands.
    smb: > ls
      .                                   D        0  Wed May  6 23:52:54 2020
      ..                                  D        0  Wed May  6 23:29:38 2020
      guiguserver                         N       16  Wed May  6 23:44:16 2020
      lisiclient                          A       11  Wed May  6 23:52:37 2020
      client                              A       29  Wed May  6 23:54:52 2020
    
            27245572 blocks of size 1024. 23557024 blocks available
    smb: > rm client 
    NT_STATUS_ACCESS_DENIED deleting remote file client
    
    [root@localhost user1]# smbclient -U zhangsan //10.0.0.50/atguigu
    Enter SAMBAzhangsan's password: 
    Try "help" to get a list of possible commands.
    smb: > rm client 
    smb: > ls
      .                                   D        0  Thu May  7 00:36:21 2020
      ..                                  D        0  Wed May  6 23:29:38 2020
      guiguserver                         N       16  Wed May  6 23:44:16 2020
      lisiclient                          A       11  Wed May  6 23:52:37 2020
    
            27245572 blocks of size 1024. 23557028 blocks available

    2.3文件上传默认权限

    服务端:

    [root@localhost atguigu]# vim /etc/samba/smb.conf
    [atguigu]
            comment = share dir
            path = /atguigu
            public = Yes
            writable = Yes
            browseable = Yes
    ;       valid users = zhangsan
            read only = yes
            write list = zhangsan            #只允许zhangsan有写权限
            creat mask = 0644
    [root@localhost atguigu]# systemctl restart smb

    客户端:

    [root@localhost user1]# smbclient -U zhangsan //10.0.0.50/atguigu
    Enter SAMBAzhangsan's password: 
    Try "help" to get a list of possible commands.
    smb: > put client 
    putting file client as client (1.1 kb/s) (average 1.1 kb/s)
    smb: > put io
    putting file io as io (4.2 kb/s) (average 1.8 kb/s)

    服务端:

    [root@localhost atguigu]# ll
    total 8
    -rw-r--r-- 1 zhangsan zhangsan 29 May  7 00:42 client
    -rw-r--r-- 1 zhangsan zhangsan 34 May  7 00:43 io

    3.用户别名(虚拟用户)

    服务端:

    [root@localhost atguigu]# vim /etc/samba/smb.conf
    [global]
            workgroup = SAMBA
            security = user
    
            passdb backend = tdbsam
    
            printing = cups
            printcap name = cups
            load printers = yes
            cups options = raw
    
            username map = /etc/samba/smbusers
    [root@localhost samba]# vim smbusers
    zhangsan = zs
    [root@localhost atguigu]# systemctl restart smb

    客户端:

    [root@localhost user1]# smbclient -U zs //10.0.0.50/atguigu
    Enter SAMBAzs's password: 
    Try "help" to get a list of possible commands.
    smb: > 

    4.映射网络驱动器

    4.1Linux客户端:

      1.临时挂载

      mount   -t   文件类型   -o   username=xxx,password=xxx   //服务端地址/共享名   客户端挂载点

    [root@localhost user1]# mkdir /mnt/sharedir                  #先创建、检查挂载点
    [root@localhost user1]# mount -t cifs -o username=zhangsan,password=123 //10.0.0.50/atguigu /mnt/sharedir/
    [root@localhost user1]# df -h
    Filesystem             Size  Used Avail Use% Mounted on
    /dev/mapper/rhel-root   26G  3.6G   23G  14% /
    devtmpfs               1.4G     0  1.4G   0% /dev
    tmpfs                  1.4G     0  1.4G   0% /dev/shm
    tmpfs                  1.4G   11M  1.4G   1% /run
    tmpfs                  1.4G     0  1.4G   0% /sys/fs/cgroup
    /dev/sda1             1014M  170M  845M  17% /boot
    tmpfs                  283M  4.0K  283M   1% /run/user/42
    tmpfs                  283M   32K  283M   1% /run/user/1000
    /dev/sr0               4.4G  4.4G     0 100% /run/media/user1/RHEL-7.5 Server.x86_64
    //10.0.0.50/atguigu     26G  3.6G   23G  14% /mnt/sharedir

      2.永久挂载:/etc/fstab

    [root@localhost user1]# mkdir /mnt/sharedir                  #先创建、检查挂载点
    [root@localhost user1]# vim /etc/fstab 
    /dev/mapper/rhel-root   /                       xfs     defaults        0 0
    UUID=4582ad72-805b-4be8-9ffc-5135a287918e /boot                   xfs     defaults        0 0
    /dev/mapper/rhel-swap   swap                    swap    defaults        0 0
    //10.0.0.50/atguigu     /mnt/sharedir           cifs    defaults,username=zhangsan,password=123 0 0
    [root@localhost user1]# mount -a
    [root@localhost user1]# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/rhel-root 26G 3.6G 23G 14% / devtmpfs 1.4G 0 1.4G 0% /dev tmpfs 1.4G 0 1.4G 0% /dev/shm tmpfs 1.4G 11M 1.4G 1% /run tmpfs 1.4G 0 1.4G 0% /sys/fs/cgroup /dev/sda1 1014M 170M 845M 17% /boot tmpfs 283M 4.0K 283M 1% /run/user/42 tmpfs 283M 32K 283M 1% /run/user/1000 /dev/sr0 4.4G 4.4G 0 100% /run/media/user1/RHEL-7.5 Server.x86_64 //10.0.0.50/atguigu 26G 3.6G 23G 14% /mnt/sharedir
    [root@localhost mnt]# cd /mnt/sharedir/ [root@localhost sharedir]# vim client.txt    #在客户端创建文件,等会儿到服务端检查有没有。
    this is a client's file

    服务端:可以实时检查到创建的文件

    [root@localhost atguigu]# cd /atguigu/    #这是atguigu共享名的共享路径
    [root@localhost atguigu]# cat client.txt 
    this is a client's file
    [root@localhost atguigu]# rm client.txt rm: remove regular file ‘client.txt’? y

    4.2Windows客户端:

     注意使用反斜杠\

    ctrl + w     往回删除一个单词,光标放在最末尾

    ctrl + u      删除光标以前的字符 

    ctrl + k      删除光标以后的字符 

    ctrl + a      移动光标至的字符头

    ctrl + e      移动光标至的字符尾

    ctrl + l       清屏

    1.

      interfaces = 192.168.0.100/255.255.255.0     #设置samba将对哪些网络接口进行服务。

  • 相关阅读:
    Twitter OA prepare: Rational Sum
    Java: Best Way to read a file
    Summary: gcd最大公约数、lcm最小公倍数算法
    Twitter OA prepare: Flipping a bit
    Twitter OA prepare: Equilibrium index of an array
    echo -e 参数
    openwrt 添加luci选项
    基于TLS的EAP 认证方法
    linux命令 dirname
    freeradius 错误: error:140890C7:SSL routines:ssl3_get_client_certificate:peer did not return a certificate
  • 原文地址:https://www.cnblogs.com/ytdyz/p/12726422.html
Copyright © 2011-2022 走看看