一 了解文件共享服务
早期网络想要在不同主机之间共享文件大多要用 FTP 协议来传输,但 FTP 协议仅能做到传输文件却不能直接修改对方主机的资料数据,这样确实不太方便,于是便出现了 NFS 开源文件共享程序:NFS(NetworkFile System)是一个能够将多台 Linux 的远程主机数据挂载到本地目录的服务,属于轻量级的文件共享服务,不支持 Linux 与 Windows 系统间的文件共享。
随后在 1991 年时大学生 Tridgwell 为了解决 Linux 与 Windows 系统之间共享文件的问题,便开发出了 SMB 协议与 Samba 服务程序。
SMB(Server Messages Block)协议:实现局域网内文件或打印机等资源共享服务的协议。
当时 Tridgwell 想要注册 SMBServer 这个商标,但却被因为 SMB 是没有意义的字符被拒绝了,经过 Tridgwell 不断翻看词典,终于找到了一个拉丁舞蹈的名字——SAMBA,而这个热情舞蹈的名字中又恰好包含了 SMB(SAMBA),于是这便是 Samba 程序名字的由来。
Samba 服务程序是一款基于 SMB 协议并由服务端和客户端组成的开源文件共享软件,实现了 Linux 与 Windows 系统间
的文件共享。
下面介绍服务搭建:RHEL7.0环境
二 服务端:
1 安装samba软件包:
[root@server0 ~]# yum -y install samba
2 创建用户并将用户名加入共享帐号
[root@server0 ~]# useradd -s /sbin/nologin harry
######################################################
[root@server0 ~]# pdbedit -a harry (将用户加入共享帐号)
此时为harry设置共享账号密码为 123
[root@server0 ~]# pdbedit -L (查看共享帐号列表)
3 创建共享目录
[root@server0 ~]# mkdir /common (挂载目录为 /common)
[root@server0 ~]# echo 123 >/common/abc.txt
[root@server0 ~]# ls /common/
4 查看配置文件:
[root@server0 ~]# cat /etc/samba/smb.conf | grep -v "#" | grep -v ";" | grep -v ^$
[global] #全局参数。
workgroup = STAEF #工作组名称
server string = Samba Server Version %v #服务器介绍信息,参数%v 为显示 SMB 版本号。
log file = /var/log/samba/log.%m #定义日志文件存放位置与名称,参数%m 为来访的主机名
max log size = 50 #定义日志文件最大容量为 50Kb。
security = user #安全验证的方式,共有4种
passdb backend = tdbsam #定义用户后台的类型,共有 3 种
load printers = yes #设置是否当 Samba 服务启动时共享打印机设备
cups options = raw #打印机的选项
[homes]
comment = Home Directories #描述信息
browseable = no #指定共享是否在“网上邻居”中可见
writable = yes #定义是否可写入操作,与"read only"
[printers] #打印机共享参数
comment = All Printers
path = /var/spool/samba #共享文件的实际路径(重要)
browseable = no
guest ok = no #是否所有人可见,等同于"public"参数
writable = no
printable = yes
5 修改配置文件
[root@server0 ~]# vim /etc/samba/smb.conf
#############################################
[common] ————————>共享文件名
path = /common ————————>共享文件绝对路径
write list = harry ————————>为用户harry指定读写权限
"/etc/samba/smb.conf" 324L, 11657C
6 重启smb服务
[root@server0 ~]# systemctl restart smb
[root@server0 ~]# systemctl enable smb
7 设置防火墙区域
[root@server0 ~]# firewall-cmd --set-default-zone=trusted
取消防火墙限制,设置为临时允许所有,本目的只为简单演示
8 针对共享目录为用户harry设置acl权限
[root@server0 ~]# setfacl -m u:harry:rwx /common/
9 修改SELinux布尔值(服务功能的开关 on 或 off) SELinux是不是特别讨厌呢?
先查看samba服务的布尔值列表
[root@server0 ~]# getsebool -a | grep samba
修改
[root@server0 ~]# setsebool samba_export_all_rw on
三 客户端配置:需要在另外一台虚拟机上操作
1 安装软件包 cifs-utils
root@desktop0 ~]# yum -y install cifs-utils
2 创建目录作为挂载点
[root@desktop0 ~]# mkdir /mnt/nsd
3 设置开机自动挂载
[root@desktop0 ~]# vim /etc/fstab
修改配置:
//172.25.0.22/common /mnt/nsd cifs defaults,user=harry,pass=123,_netdev 0 0
4 查看挂载操作是否出错
[root@server0 ~]# mount -a 无报错代表挂载OK
5 查看挂载列表
[root@desktop0 ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/vda1 10G 3.1G 7.0G 31% /
devtmpfs 906M 0 906M 0% /dev
tmpfs 921M 80K 921M 1% /dev/shm
tmpfs 921M 17M 904M 2% /run
tmpfs 921M 0 921M devops0% /sys/fs/cgroup
//172.25.0.22/conmon 10G 3.1G 7.0G 31% /mnt/nsd
6 查看并写入文件
[root@desktop0 ~]# ls /mnt/nsd
abc.txt
[root@desktop0 ~]# cat /mnt/nsd/abc.txt
123
[root@desktop0 ~]# touch /mnt/nsd/kk.txt
至此,可读可写功能实现。