SMB (Service  Message Block,服务信息块):局域网上共享文件夹/打印机的一种协议。既可以用在TCP/IP之上,亦可以在其他网络协议之上。

提供两种服务:文件共享服务  smbd

              名称解析服务  nmbd

进程:winbindd  将linux加入到windows 域中,使用windows域中的资源。

软件包:samba(服务器端),samba-client(客户端),samba-common(额外组件)

samba-swat  基于web接口,提供samba服务器配置管理。

samba-client  samba-common  默认已经安装

主配置文件:/etc/samba/smb.conf

启动脚本:/etc/init.d/smb

语法检查工具:testparm

端口:137 (向别人提供服务 服务器端) 提供netbios服务

      138 (接受别人服务 客户端)     提供netbios服务

      139  (文件传输)  445(文件传输)

主配置文件相关参数:

[global]

        workgroup = MYGROUP          //** 工作组

        server string = Samba Server Version %v  //** 说明信息

        interfaces = lo eth0 192.168.12.2/24 192.168.13.2/24   //**定义监听接口

        hosts allow = 127. 192.168.12. 192.168.13.    //** ACL 白名单

        log file = /var/log/samba/%m.log  //** 定义日志

        security = user    //** 安全级别 默认 user 

安全等级:share  不用账号和密码可以直接登录,最不安全。

           user   需要输入有效地账号和密码,通过验证后才能使用服务器的共享资源。

          server  与user等级,也需要输入有效地账号和密码,但密码的验证会由另一

               台SMB服务器负责,必须指定口令服务器,即“password server”选项。

[homes]

        comment = Home Directories     //**注释信息

        browseable = no               //** 是否可被浏览

        writable = yes                 //** 是否可写

;       valid users = %S               //** 哪些用户可以使用此类共享

;       valid users = MYDOMAIN\%S   

[printers]

      printable = yes         //** 标识一个打印设备

下面就来共享一个目录:

[root@mail samba]# mkdir /share

编辑/etc/samba/smb.conf 添加一个共享目录

[tools]

  comment = Public Software

  path = /share

  browseable = yes

  writable = yes

  public = yes         //**允许所有人访问

保存退出。

添加samba用户:

smbpasswd    -a  添加一个用户

             -d  禁用一个用户

             -e  启用用户

             -x  删除用户

PS:Samba要求来访问的用户必须是系统账号,但是密码必须是samba提供的密码。

[root@mail samba]# setenforce 0

为用户添加写权限:

[root@mail samba]# setfacl -m u:lucy:rwx /share

只允许某些用户有写权限:

编辑主配置文件

[tools]

  comment = Public Software

  path = /share

  browseable = yes

  write list = lucy     //** 如果允许一组用户有写权限  则 write list = @develop

  public = yes

为组添加/share目录的写权限:

[root@mail samba]# setfacl -m g:develop:rwx /share/

在SElinux开启的情况下允许用户有写权限:

首先改变目录的标签:

[root@mail samba]# chcon -R -t samba_share_t /share

[root@mail samba]# ls -dZ /share

drwxrwxr-x+ root root root:object_r:samba_share_t      /share

开放samba家目录的访问权限:

[root@mail samba]# setsebool -P use_samba_home_dirs 1

[root@mail samba]# setsebool -P samba_enable_home_dirs 1

利用smbclient访问共享资源:

列出目标主机上所有可以访问的共享资源

[root@mail samba]# smbclient -L //192.168.0.39

[root@mail samba]# smbclient -L //192.168.0.39 -U lucy%lucy    //** 以某个用户身份来查看

访问共享目录:

[root@mail samba]# smbclient  //192.168.0.39/tools  -U lucy

将远端共享目录挂载到本地主机目录下

[root@mail ~]# mount -t cifs //192.168.0.39/share /samba -o username=lucy

设置开机设置自动挂载

编辑/etc/fstab

//192.168.0.181/tools      /mnt       cifs        credentials=/etc/samba/cred   0  0

credentials=/etc/samba/cred    //** 验证信息存放位置

建立cred文件:

uername=lucy

password=lucy

实现samba的访问控制功能

编辑主配置文件:

    hosts allow = 127. 192.168.0.      line 81

设置iptables规则:

[root@mail ~]# iptables -t filter -A INPUT -s 192.168.0.1 -d 192.168.0.39 -p tcp -m multiport --dports 139,445 -j ACCEPT

[root@mail ~]# iptables -t filter -A INPUT -s 192.168.0.1 -d 192.168.0.39 -p udp -m multiport --dports 137,138 -j ACCEPT

[root@mail ~]# iptables -A INPUT -s 0.0.0.0/0.0.0.0 -d 192.168.0.39 -p tcp -m multiport --dports 139,445 -j REJECT

[root@mail ~]# iptables -A INPUT -s 0.0.0.0/0.0.0.0 -d 192.168.0.39 -p udp -m multiport --dports 137,138 -j REJECT