数据共享
windows中最常用的是网上邻居,网上邻居使用的文件系统是CIFS(通用互联网文件系统)协议进行数据共享
linux中最常用的是NFS服务
samba与NetBIOS协议
IBM开发的NetBIOS协议是为了局域网内少数计算机进行通信的协议
Samba基于NetBIOS协议开发
安装
yum install -y samba
samba: 主服务包
samba-client: 客户端
samba-common: 通用工具
samba4-libs: 库
samba-winbind: windows域映射
samba-winbind-clients:域映射客户端
samba的守护进程
smbd:提供对服务器中文件、打印资源的共享访问 139 445
nmbd:提供基于NetBIOS主机名称的解析 137 138
服务启动
systemctl start smb nmb
systemctl enable smb nmb
配置文件:
/etc/samba/smb.conf
/etc/samba/lmhosts #对应NetBIOS名与主机名的ip文件
/etc/samba/smbpasswd #密码保存文件,默认不存在
/etc/samba/smbusers #用户别名,需要配置文件中username map 选项支持
testparm #检测配置文件是否正确
配置文件结构
vim /etc/samba/smb.conf
[global]:全局设置
[homes]:用户目录共享设置
[printers]:打印机共享设置
[global]
workgroup = SAMBA #所在工作组名称
security = user #安全级别【user|server|domain】
[share] share#共享名
comment = SAMBAtest #描述信息
path = /home/virtualroot/ #共享路径
browseable = yes #是否可见
read only = no #所有人只读
writable = yes #所有人可写
write list = user123 #拥有写权限的用户列表
valid users = user123 #指定可以访问的用户
guest ok = yes #允许匿名访问,等同public
hosts allow = 192.168.200.1 #允许192.168.200.1访问
host deny = 192.168.200. #禁止192.168.200.0网段访问
host deny = ALL #不允许所有人访问,常用通配符还有“*”“?”“LOCAL”
#客户端访问控制还支持域名和主机名
常见变量:
%V: samba版本号
%S: 任意用户可以登陆
%m: client的NetBIOS主机名
%L: server的NetBIOS主机名
%u: 当前登陆的用户名
%g: 当前登陆的用户组名
添加samba用户
useradd -s /sbin/nologin user123
smbpasswd -a user123 #samba共用系统用户,使用独立密码
pdbedit -a -u user123 #效果同上
smbpasswd -x user123 #删除samba用户
pdbedit -x -u user123 #效果同上
pdbedit -L #查看samba用户
mkdir /home/virtualroot
chown user123:user123 /home/virtualroot/
samba共享目录权限
系统权限对共享目录生效
samba权限也对共享目录生效
实际工作环境中,可能共享目录较多,用户众多,权限交叉。使用ACL控制权限,会更轻松
systemctl restart smb nmb
Linux客户端访问
yum install -y samba-client
smbclient -L 192.168.200.101 -U user123 #查看server共享资源
smbclient //192.168.200.101/share -U user123 #访问共享目录
客户端挂载到本地使用
由于samba属于CIFS类型,所以需要安装CIFS包
yum install cifs-utils -y
mkdir /home/smb
mount -t cifs -o username=user123 //192.168.200.101/share/ /home/smb/
自动挂载
vim /etc/fstab
//192.168.200.101/share /home/smb cifs defaults,username=user123,password=123 0 0
mount -a #根据/etc/fstab文件自动挂载
mount
//192.168.200.101/share on /home/smb type cifs (rw,relatime,vers=1.0,cache=strict,username=user123,domain=01,uid=0,noforceuid,gid=0,noforcegid,addr=192.168.200.101,unix,posixpaths,serverino,mapposix,acl,rsize=1048576,wsize=65536,echo_interval=60,actimeo=1)