一 SAMBA

   server message block, linux和windows之间文件共享的网络协议,用于部门文件和打印机共享。

它由2个服务组成:SMB,NMB



二 SAMBA安装配置

1.安装  

yum install samba*


2.安装配置防火墙

UDP 137 138

tcp 139 445


3.配置自动启动

systemctl eanble smb.service

systemctl enable nmb.service


重启smb服务

systemctl restart nmb.service

systemctl restart smb.service


4.客户端访问

\\samba server #服务器别名


5.参数解析

配置文件目录  /etc/samba


测试语法:testparm -v


全局参数:[global]

共享参数:[共享名称]


具体参数解析,可以参考smb_example.conf文件。


列举几个比较常用的共享属性:


browseable = yes/no  #是否可浏览

writable = yes/no #是否可写入

available= yes #是否可以使用

admin users = share #共享的管理员

valid users = user  #允许访问的用户或群组 @group

write list= user,group #允许写的用户或组

public = yes/no  # 是否允许public访问

guest ok = yes /no #是否允许 guest访问



三 SAMBA案例

题目:有3个用户zhangsanA,lisiB,wangwuC ,其中zhangsanA和listB 属于群组IT部门,wangwuC

属于sales部门。

在共享服务器samba下面,有文件夹IT-file和sale-file,public-file,CEO-file

请按照下面要求设置权限:

  1. 配置samba服务器,让用户群组listB可以读写文件IT-file,不能查看sale-file,可以读public-file

  2. 配置samba权限,让用户wangwuC可以读写文件sale-file,不能查看IT-file,可以读public-file

3. 所有人都无法看到CEO-file文件夹



四 SAMBA高可用


4.1 CTDB-samba-glusterfs


ctdb

samba

samba-common

samba-winbind-clients


samba 4.2  ctdb

对于大于4.2版本的,需要编译参数:

--with-cluster-support

--with-shared-modules=idmap_rid,idmap_tdb2,idmap_ad



关键配置点:smb.conf

netbios name = something *

clustering = yes

idmap config * : backend = autorid

idmap config * : range = 100000-19999999



4.3 gfs2

mkfs.gfs2 -j3 -p lock_dlm -t csmb:gfs2 /dev/csmd_vg/cmsb_lv


-j  节点数

-p  指定锁协议

-t  指定群集文件名字


4.4 配置ctdb

/etc/sysconfig/ctdb


CTDB_NODES=/etc/ctdb/nodes   #指定文件再群集节点列表的位置,真是IP

CTDB_PUBLIC_ADDRESSES=/etc/ctdb/public_addresses   #指定通过IP访问群集文件列表的IP地址

CTDB_RECOVERY_LOCK="/mnt/ctdb/.ctdb.lock" #共享锁,必须所有节点都可以访问到

CTDB_MANAGES_SAMBA=yes

CTDB_MANAGES_WINBIND=yes


nodes

10.1.1.1

10.1.2.1


public_addreses

192.168.1.201/0 eth1



[global]

guest ok =yes

clustering = yes

netbios name = csmb-server


[csmb]

comment = clustered samba

public = yes

path = /mnt/gfs2/share

writeable = yes

ea support = yes


修改脚本

vi /etc/ctdb/events.d/11.route

#!/bin/sh

. /etc/ctdb/functions

loadconfig ctdb

cmd="$1"

shift

case $cmd in

takeip)

# we ignore errors from this, as the route might be up already when we're grabbing

# a 2nd IP on this interface

/sbin/ip route add $CTDB_PUBLIC_NETWORK via $CTDB_PUBLIC_GATEWAY dev $1 2> /dev/null

;;

esac

exit 0




4.5  net conf同步配置

net conf


4.6 开始服务

systemctl start ctdb.service


systemctl status ctdb.service



4.7 挂载

mount -t cifs //csmb-server/csmb /mnt/sambashare -o user=testmonkey


smbclient //csmb-server/csmb