一 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
请按照下面要求设置权限:
配置samba服务器,让用户群组listB可以读写文件IT-file,不能查看sale-file,可以读public-file
配置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