samba服务应用

samba服务应用_第1张图片
samba

Samba,是种用来让UNIX系列的操作系统与微软Windows操作系统的SMB/CIFS(Server Message Block/Common Internet File System)网络协议做链接的自由软件。第三版不仅可访问及分享SMB的文件夹及打印机,本身还可以集成入Windows Server的网域,扮演为网域控制站(Domain Controller)以及加入Active Directory成员。简而言之,此软件在Windows与UNIX系列OS之间搭起一座桥梁,让两者的资源可互通有无。


samba的两个服务

安装samba yum -y install samba 以下安装包会作为依赖被安装

samba-common.noarch 0:4.2.3-10.el7
samba-common-libs.x86_64 0:4.2.3-10.el7 samba-common-tools.x86_64 0:4.2.3-10.el7 samba-libs.x86_64 0:4.2.3-10.el7```

安装samba后执行命令rpm -ql samba会发现有两个服务程序如下图

samba的两个服务应用
服务名 作用
nmbd 主要利用UDP 137138端口负责名称解析的服务
smbd 主要功能就是用来管理samba主机分享的目录 文件和打印机等 主要利用TCP协定来传输资料,使用端口为139445

让我们先用一个示例快速了解samba具体是如何使用的吧!(准备两台CentOS7.2的主机,一台做server(172.18.20.96)另一台做client(172.18.20.69)),步骤如下:
Server端操作
1. 关闭防火墙与SELinux
setenforce 0;
service  iptables   stop (CentOS6 CentOS7)
chkconfig iptables off (CentOS6)
systemctl stop firewalld
systemctl disable firewalld # 没有关闭在客户端连接的时候可能会提示失
败信息如"没有到主机的路由"之类的```
  1. 在服务器安装Samba软件
    yum -y install samba
  1. 在server创建samb共享目录
    mkdir /common
    chmod 777 /common
    echo "This is a test file in common dir named smb.txt" > /common/smb.txt
  1. 配置samba的配置文件(/etc/samba/smb.conf)
    vim /etc/samba/smb.conf 在最后"Share Definitions"处添加samba
    服务器的共享目录,设置如下几行
    [common]
    comment = Common Share
    path = /common #第3步创建的共享路径
    browseable = yes #所有人可见
    guest ok = no #拒绝匿名访问
    writeable = yes #支持写入数据

testparm命令可测试配置文件语法

  1. 在server端创建访问帐号
    useradd -s /sbin/nologin uangianlap
    smbpasswd -a uangianlap # 这个工具由samba-common-tools提供.这里也可以使用pdbedit这个工具来创建samba用户且更方便好用,具体用法后面介绍
    New SMB password: # 提示输入密码 假设密码为123456吧
    Retype new SMB password:
    Added user smbuser.
  1. 在server端启动samba服务(完毕做个检查是个好习惯)
    systemctl start smb.service; [systemctl enable smb.service]
    systemctl status smb.service
    ss -lntu # 查看samba服务监听的139 445 [137 138]等端口是否开启
###### Client端操作
  1. client端访问samba服务
    yum -y install samba-client # 安装samba客户端工具
    smbclient -L //172.18.20.96 # 查看server主机共享信息,仅查看不需要密码,直接回车即可
    smbclient -U uangianlap //172.18.20.96/common
    Enter smbuser's password: # 输入samba帐户密码,就是123456啦
    错误:smbclient: relocation error: /lib64/libsamba-credentials.so.0: symbol GSS_KRB5_CRED_NO_CI_FLAGS_X, version gssapi_krb5_2_MIT not defined in file libgssapi_krb5.so.2 with link time reference. 解决办法:安装krb5
    yum install krb5-devel krb5-libs pam_krb5 krb5-workstation
    上面的访问形式为命令行交互式,我们还可以用挂载的方式实现如本地文件系统一样的使用体验,方法如下:
    mkdir /com
    mount -t cifs //172.18.20.96/common /com -o username=uangianlap,password=123456 # 临时挂载,注意:挂载操作中的用户,与-o选项中指定的用户直接产生映射关系(客户端以root挂载,那么其对应server端就是uangianlap);访问挂载,是以-o选项指定的用户身份运行,与本地用户以ID产生映射;
    echo "//172.18.20.96/common /com cifs defaults,username=uangianlap,password=123456 0 0">> /etc/fstab #开机即挂载

**smbpasswd命令的用法:**
> ***smbpasswd [options] USERNAME***
> *options:*
>> -a 添加帐户并设置密码
>> -x 删除SMB帐户
>> -d 禁用SMB帐户
>> -e 启用SMB帐户

**更好用的pdbedit使用**
> ***pdbedit [options] USERNAME***
> -L: 列出samba服务中的所有用户
> -a: 添加用户samba用户
      -u USERNAME(具体添加的哪个用户)
> -x: 删除
      -u USERNAME(同上)
> -t: 从标准输入接收密码

##### Samba配置文件指令详解
**[global]**
>**workgroup** = *MYGROUP*   # 定义工作组
**server string** = Samba Server Version %v   # 服务器提示字串,默认显示samba版本,建议修改默认值以防止针对版本的网络攻击
**interfaces** = lo eth0 192.168.12.2/24 192.168.13.2/24 # 监听指定网络接口
**host allow** = 127.  192.168.12.  192.168.13.5  EXCEPT 192.168.13.13 # 指定仅允许哪些主机有权访问Samba服务器资源
**log file** = /var/log/samba/log.%m   # 定义日志文件 %m会被替换为客户端的主机名
**max log size** = 50    # 定义日志单个文件最大容量为50Kb,可以调大点 如50MB等
***security*** = user   # 安全模式为user,表示需要通过用户名与密码验证访问者的身份          
**passdb backend** = tdbsam   # 账户与密码的存储方式, smbpasswd代表使用老的明文格式存储帐户及密码 tdbsam代表基于TDB的密文格式存储
***deadtime*** = 10   # 客户端在10分钟内没有打开任何Samba资源,服务器将自动关闭会话,在大量的并发访问环境中,这样的设置 可以提高 服务器性能.
***display charset*** = UTF8   # 设置显示使用的字符集为UTF8
***设置最大连接数*** = 0    # 0代表无限制,超过此限制的连接请求服务器将拒绝连接
**guest account** = nobody    # 设置匿名帐号为nobody
**load printers** = yes   # 是否共享打印机
**cups options** =  raw    # 打印属性

**[homes]**
>**comment** = Home Directories    # 共享的描述信息
**browseable** = no    # 共享的目录是 否可以被浏览
**wriable** = yes    # 共享的目录是否可以进行写操作

**[printers]**    
>**path = /var/spool/samba**    # 打印机共享池
**browseable** = no
**guest ok** = no
**printable** = yes
**writeable**  = no

**[common]**                   
>**comment** = Common share
**path** = /common
**valid users** = tom jerry    # 白名单
**invalid users** = xx xx xx    # 黑名单(与白名单冲突的话,黑名单优先生效)
**writable** = yes
**browseable** = yes   # 共享目录是否对所有的人可见
**write list** = uangianlap   # 拥有写权限帐户或组列表 @组名 or +组名
**admin users** = uangianlap   # 该共享的管理员,具有完全权限

你可能感兴趣的:(samba服务应用)