• SAMBA


    1、用途:

    文件共享:可以在Linux/Windows之间,类似于windows之间的网上邻居,可以直接访问文件并修改。

    • a服务器全局设置smb.conf  [global]主机信息部分,以global为依据
    • b规划准备共享的目录参数smb.conf  [....]共享的信息,以个别的目录名称为依据
    • c建立所需要的文件系统
    • d建立samba账户
    • e启动服务smbd、nmdb

    2、创建用户:

    用tdbsam方式建立samba用户数据库,可以使用smbpasswd -a 来建立samba用户,不过要建立的用户必须是系统中存在的用户,不过我们可以不用smbpasswd,用pdbedit命令来完成操作,它的参数很多这里列出几个常用的:

    • pdbedit -a -u username 添加一个用户 -r修改 -x删除
    • pdbedit -L (username) 查看samba用户
    • smbpasswd username 修改用户密码

    3、在Linux上测试

    smbclient -L //192.168.1.144 -U username

    [root@CentOS6 adduser]# smbclient -L //127.0.0.1 -U user1
    Enter user1's password: 
    Domain=[SAMBA3-SHARE] OS=[Unix] Server=[Samba 3.6.23-42.el6_9]
    
        Sharename       Type      Comment
        ---------       ----      -------
        homes           Disk      Home Directories
        IPC$            IPC       IPC Service (Samba Server Version 3.6.23-42.el6_9)
        user1           Disk      Home Directories
    Domain=[SAMBA3-SHARE] OS=[Unix] Server=[Samba 3.6.23-42.el6_9]
    
        Server               Comment
        ---------            -------
        CENTOS6-SMB          Samba Server Version 3.6.23-42.el6_9
    
        Workgroup            Master
        ---------            -------
        SAMBA3-SHARE         CENTOS6-SMB

     linux挂载smb

    sudo mount -o username=colorv,password=123456 //192.168.0.239/data2 /mnt/smb-data2/

    4、协议、端口、进程

    1)没有使用类似TCP/IP之类的传输协议,因此不需要IP设置的。采用NetBIOS协议:主机在NetBIOS协议当中的定义为使用“NetBIOS Nmae“,每台主机必须要有不同的NetBIOS Name才行。

    2)(windows网上邻居:允许你登陆,开放资源给你)samba通过两个服务来控制这两个步骤:

    nmbd:该daemon用来管理工作组、NetBIOS Name等的解析。用到UDP137、UDP138端口负责名称解析任务。['di:mən]守护进程

    smdb:该daemon用来管理samba主机共享个的目录、文件、打印机等。用到TCP139、tcp445(445不一定使用)传输数据

    3)开放以上端口、启动以上两个服务

    5、局域网连接方式

    1)Peer/Peer(Workgroup, 对等模式)

    各台电脑都是平等的,互相访问资源,此时需要知道对方电脑的用户名密码。

    2)Domain model(主控模式)

    由一台服务器,大家去访问服务器。

    (samba可以实现于上术两种模式)

    6、samba配置文件

    /etc/samba/smb.conf

    1)#和;都是注释

    2)[global]

    工作组、主机的NetBIOS名称、字符编码的显示、日志文件的设置、是否使用密码、密码验证机制等

    workgroup = 工作组的名称:注意,工作组要相同

    netbios name = 主机的NetBIOS名称,每部主句都不同

    server string = 主机的简易说明

    display charset = 本服务器上面的显示编码,一般与unix charset相同

    unix charset = 在linux服务器上面所使用的编码, /etc/sysconfig/i18n

    dos charset = windows客户端的编码,gb2312写为cp936,(CMD:chcp命令查看)

    log file = 日志文件存储位置,可使用变量处理

    max log size = 日志文件最大能达到多少Kbytes,

    security = share、user、domain(安全程度:不需要密码、使用samba服务器本身的密码数据库,用户必须存在于linux账户、使用外部服务器密码,也就是samba是客户端之意,此时需要提供password server = IP参数)

    encrypt passwords = Yes 密码要加密,为默认

    passdb back = 数据库格式,默认为tdbsam(/var/lib/samba/private/passwd.tdb)

    # 跟防火墙的议题有关的设定
            hosts allow = 127. 192.168.100.254 192.168.100.10 192.168.1.

    3)[共享资源名称]

    目录权限、谁可以浏览该目录、读写等

    comment = 目录说明

    path = 共享目录

    browseable = 是否让所有用户看到这个项目

    writalbe =   (read only =)

    create mode = 文件权限

    directory mode = 目录权限(不要与系统目录权限冲突)

    writelist = 用户或 @组,这个选项可以指定能够进入到此资源名称的特定用户

    注:变量功能,eg 

    • %S
    [home]
        valid users = %S    #允许的登陆着:表示任何可登陆的用户都能够登陆的意思,如果是user1,homes就会自动变为[user1]  
    • %m:代表client端的netbios主机名  logfile = /var/log/samba/log.%m
    • %M
    • %L
    • %H
    • %U
    • %g
    • %h
    • %I
    • %T

    7、例子:

    1)无密码

    [root@www samba]# vim smb.conf
    # 1. 先设定好服务器整体环境方面的参数
    [global]
            # 与主机名有关的设定信息
            workgroup     = vbirdhouse
            netbios name  = vbirdserver
            server string = This is vbird's samba server
    
            # 与语系方面有关的设定项目喔,为何如此设定请参考前面的说明
            unix charset    = utf8
            display charset = utf8
            dos charset     = cp950
    
            # 与登录文件有关的设定项目,注意变量 (%m)
            log file = /var/log/samba/log.%m
            max log size = 50
    
            # 这里才是与密码有关的设定项目哩!
            security = share
    
            # 修改一下打印机的加载方式,不要加载啦!
            load printers	= no
    
    # 2. 分享的资源设定方面:主要得将旧的批注,新的加入!
    #    先取消 [homes], [printers] 的项目,然后针对 /tmp 的设定,可浏览且可写入喔
    [temp]                                     <==分享资源名称
            comment    = Temporary file space  <==简单的解释此资源
            path       = /tmp                  <==实际 Linux 分享的目录
            writable   = yes                   <==是否可写入?在此例为是的
            browseable = yes                   <==能不能被浏览到资源名称
            guest ok   = yes                   <==单纯分享时,让用户随意登入的设定值

    testparm (-v)检查配置文件,若有中括号表示有问题(这个不台清楚了)

    开启服务、开机自启、查看端口(端口是自动开放吗,这个问题好幼稚吗)

    本机测试,见上边(//127.0.0.1)

    linux挂载:mount -t cifs //127.0.0.1/temp /mnt,然后df能看到

    2)密码user

    [root@www ~]# vim /etc/samba/smb.conf
    [global]
            workgroup       = vbirdhouse
            netbios name    = vbirdserver
            server string   = This is vbird's samba server
            unix charset    = utf8
            display charset = utf8
            dos charset     = cp950
            log file        = /var/log/samba/log.%m
            max log size    = 50
            load printers    = no
    
            # 与密码有关的设定项目,包括密码档案所在格式喔!
            security = user          <==这行就是重点啦!改成 user 层级
            passdb backend = tdbsam  <==使用的是 TDB 数据库格式!
    
    # 2. 分享的资源设定方面:删除 temp  加入 homes 与 project
    [homes]                                   <==分享的资源名称  homes是最特殊的资源目录名称!
            comment        = Home Directories
            browseable     = no               <==除了使用者自己外,不可被其他人浏览
            writable       = yes              <==挂载后可擦写此分享
            create mode    = 0664             <==建立档案的权限为 664
            directory mode = 0775             <==建立目录的权限为 775
    
    [project]                                 <==就是那三位使用者的共享资源
            comment    = smbuser's project
            path       = /home/project        <==实际的 Linux 上面的目录位置
            browseable = yes                  <==可被其他人所浏览到资源名称(非内容)
            writable   = yes                  <==可以被写入
            write list = @users               <==写入者有哪些人的意思:@用户组
    
    # 2. 每次改完 smb.conf 你都需要重新检查一下语法正确否!
    [root@www ~]# testparm

    注意共享目录的用户组,权限等设置!

    添加samba账户(先linux账户)

    可能需要修改selinux:setsebool -P samba_enable_home_dirs=1

    8、以samba为例子,介绍selinux

    1)找出与samba有关的selinuxguize:getsebool -a | grep samba

    [root@www ~]# getsebool -a | grep samba
    samba_domain_controller --> off  <==PDC 时可能会用到
    samba_enable_home_dirs --> off   <==开放用户使用家目录
    samba_export_all_ro --> off      <==允许只读文件系统的功能
    samba_export_all_rw --> off      <==允许读写文件系统的功能
    samba_share_fusefs --> off
    samba_share_nfs --> off
    use_samba_home_dirs --> off      <==类似用户家目录的开放!
    virt_use_samba --> off

    2)设置:setseboll -P samba_enable_home_dirs=1解决无法挂载等问题

    对共享目录使用 chcon -t samba_share_t  /home/project

    如果共享的目录不只是samba,还包含ftp等,那就可能需要使用public_content_t这个大家都能够读取的类型才行。

    其他:

    iptable

    利用 Quota 限制用户磁盘使用

    Linux 上挂载 Samba(Windows & macOS 共享文件夹)的正确姿势

     sudo mount -t cifs -o username=colorv,password=123456  //192.168.0.239/data2 smb-dir/

  • 相关阅读:
    未来可以预测吗?
    电脑浏览器不能连接百度或者其他的网站,提示“此网站无法提供安全连接”的解决方法
    6.CFileDialog的文件过滤器lpszFilter写法 windows编程
    5.返回值IDCANCEL和CommDlgExtendedError函数 windows编程
    2.C++标准库函数:getline函数 定界流输入截取函数 windows编程
    4.使用CFileDialog打开文件对话框,获得文件路径 windows编程
    1.windows编程入门MessageBox使用 windows编程
    3.C++逐行读取txt文件数据,利用getline windows编程
    8.一个超级直观的windows消息队列运行图 windows编程
    7.CFileDialog的5个读取文件信息的函数 windows编程
  • 原文地址:https://www.cnblogs.com/daduryi/p/6613363.html
Copyright © 2020-2023  润新知