• SAMBA学习笔记


    注:文中截图来自鸟哥linux私房菜,链接见文末。
     
    一、SAMBA简介
      SAMBA,原名:Server Message Block(SMB),与NFS、CIFS一样,SAMBA也是用于共享不同主机数据的一种文件系统。NFS用于在Linux系统主机之间共享文件,CIFS用于在windows系统主机之间共享文件,而SAMBA则实现了Linux系统主机与windows系统主机之间的文件共享。
      就像NFS是基于RPC协议一样,SAMBA是基于NetBIOS(Network Basic Input/Output System)协议上开发的。NetBIOS是用于局域网少数计算机进行网络连接的一个通讯协议,无法跨越路由,SAMBA使用NetBIOS over TCP/IP实现跨路由通讯。
      NetBIOS使用NetBIOS name识别不同的主机,在同一个群组中,每个主机的NetBIOS name必须是唯一的。所以SAMBA提供的文件共享服务主要分为两个步骤:
     1. 通过NetBIOS name定位主机;
     2. 根据权限控制资源读写。
      SAMBA通过两个服务进程支持这两个步骤,分别是:
     1. nmb:管理工作组,负责NetBIOS name解析。主要使用UDP协议,开启137,138端口来负责NetBIOS name解析的任务。
     2. smb:管理SAMBA分享的目录、文件等。主要使用TCP协议,开启139,445端口进行数据传输。(445端口非必要)
      SAMBA有两种联机模式:
     1. peer/peer(Workgroup model,对等模式):各个主机地位平等,都可独立运作。不会出现一部计算机关闭,其他计算机就无法工作的情况。主机之间可同时互为client与server,但用户需要记住所有主机的账号与密码,很麻烦,适合小型网域。
     2. domain model(主控模式):主控计算机(Primary Domain Controller,PDC)统一管理当前网域所有主机与用户的账号与密码。无论登录哪一个主机都需要先到PDC进行账号密码判断与授权。
     
    二、SAMBA服务器
    1. 安装
    yum install samba samba-client samba-common
    
    samba:主要提供了SAMBA服务器所需的各项服务程序,如:smb,nmb等。
    samba-client:主要提供了SAMBA客户端所需的工具指令,如:mount.cifs、smbtree等。
    samba-common:提供SAMBA服务器与SAMBA客户端公用的数据,如:smb.conf、testparm等。
    2. 配置
    (1)配置文件
    SAMBA的主要配置文件:/etc/samba/smb.conf
    主要包含两部分配置:
    [global]:全局整体参数配置。
    [分享资源名称]:各个共享资源的参数配置。
    (2)配置示例
    不需要密码的分享配置:
    需要密码的分享配置:
    (3)检验配置语法正确性
    testparm
    
    samba包含了很多默认设置(不在smb.conf文件中),可使用“-v“项查看全部设置:
    testparm -v
    
    3. 启动
    systemctl start smb
    systemctl start nmb
    
    其中smb使用了端口139和445,但445不是必须的,可在smb.conf配置进行关闭:
    smb ports=139
    
    4. SAMBA用户账号与密码管理
      通过SAMBA访问Linux系统上的资源,需要先取得Linux系统上的UID与GID,所以SAMBA的账号应该是Linux系统用户账号的其中一个,但由于Linux系统与SAMBA的密码验证方式及编码格式不同,SAMBA与Linux系统的密码文件并不相同。
    (1)添加Linux系统用户账号并设置密码
    useradd -G users smb1
    passwd smb1
    
    (2)添加samba用户账号
    pdbedit -a -u smb1
    
    (3)查看所有samba账号
    pdbedit -L
    
    (4)修改samba账号密码
    smbpassword smb1
    
    (5)删除samba账号
    pdbedit -x -u smb1
    
    注:管理 TDB 数据库格式建议使用 pdbedit 这个新的玩意儿来处理,smbpasswd 仅剩下修改密码的功能需记忆即可!
    5. 查看SAMBA的状态
    smbstatus
    
    6. 安全
    (1)SELinux
    SELinux默认关闭了很多SAMBA联机的功能,可使用相应命令进行查看与开启。
    #查看samba相关的SELinux规则
    getsebool -a | grep samba
    #开启samba_enable_home_dirs
    setsebool -P samba_enable_home_dirs=1
    
    (2)防火墙
    使用iptables进行管理:
    由于smb及nmb并不支持TCP Wrappers ,所以也只能通过iptables来控制了。
    通过smb.conf设置开放网域:
    (3)文件
    利用Quota限制用户磁盘使用。
     
    三、SAMBA客户端
    1. 安装
    yum install samba samba-client samba-common
    
    2. 查询SAMBA服务器分享的资源信息
    3. 挂载SAMBA服务器分享目录
    4. 查看各个SAMBA服务器的所有分享资源
    四、建议与问题排查
    1. 建议(SAMBA服务器)
    (1)在规划Linux时,/home最好独立出一个partition,而且硬盘空间最好能够大一些。
    (2)/home独立出来的partition可用独立运行quota作业,规范用户的最大磁盘使用量。
    2. 问题排查
    (1)SAMBA服务器遇到问题,查看用户登录日志
    log file=/var/log/samba/log.%m
    %m:客户端主机的NetBIOS name
    若客户端主机没有NetBIOS name,则登录信息会被记录到/var/log/samba/下的log.smbd或log.nmbd。
    (2)权限问题,检查:SAMBA配置的权限、Linux文件系统的权限、SELinux规则。
    (3)修改SAMBA密码的时候同步更新对应Linux用户的密码
  • 相关阅读:
    Java运算符>、>>、>>>三者的区别
    深入浅析react native es6语法
    javascript基础学习(十五)
    javascript基础学习(十四)
    javascript基础学习(十三)
    javascript基础学习(十二)
    javascript基础学习(十一)
    javascript基础学习(十)
    javascript基础学习(九)
    javascript基础学习(八)
  • 原文地址:https://www.cnblogs.com/wujuntian/p/16321544.html
Copyright © 2020-2023  润新知