samba文件共享服务
samba是一款开源的文件共享软件,经过简单配置就能够实现Linux系统与Windows系统之间的文件共享工作。
linux与window文件共享
例1
服务端
[root@lizhiqiang ~]# yum install -y samba #安装samba服务
[root@lizhiqiang ~]#cat smb.conf #过滤注释行和空行前,查看samba主配置文件,有300多行
[root@lizhiqiang ~]#mv smb.conf smb.conf_bak #将samba主配置文件smb.conf重命名为smb.conf_bak
[root@lizhiqiang ~]#grep -v “#” smb.conf_bak | grep -v “;” | grep -v “^$” > smb.conf #过滤掉smb.conf_bak文件的注释行和空行,再把剩余的信息重定向到smb.c
[root@lizhiqiang ~]# vim /etc/samba/smb.conf #编辑配置
[global] #全局参数
workgroup = MYGROUP #工作组名称
server string = Samba Server Version %v #服务器介绍信息,参数%v为显示SMB版本号
log file = /var/log/samba/log.%m #定义日志文件的存放位置与名称,参数%m为来访的主机名
max log size = 50 #定义日志文件的最大容量为50KB
security = user #安全验证的方式,总共有4种(常见两种:user验证、share公开;server来源服务器、domain域控)
passdb backend = tdbsam #定义用户后台的类型,共有3种(smbpasswd该命令为系统用户设置Samba服务程序的密码、tdbsam创建数据库文件并使用pdbedit命令建立Samba服务程序的用户、ldapsam基于LDAP服务进行账户验证)
[tony] #共享名称
comment=From modification #警告用户不要随意修改
path=/haha #共享目录
public=no #关闭“所有人可见”
writable=yes #允许写入操作
[root@lizhiqiang ~]# mkdir /haha #创建共享目录
[root@lizhiqiang ~]# echo “青柠” > /haha/share
[root@lizhiqiang ~]# ls -Zd /haha
drwxr-xr-x. root root unconfined_u:object_r:default_t:s0 haha
[root@lizhiqiang ~]# semanage fcontext -a -t samba_share_t /haha #考虑到文件读写权限和应用于该目录的SELinux安全上下文所带来的限制。
[root@lizhiqiang ~]# restorecon -Rv /haha
restorecon reset /haha context unconfined_u:object_r:default_t:s0->unconfined_u:object_r:samba_share_t:s0
[root@lizhiqiang ~]# ls -Zd /haha
drwxr-xr-x. lizhiqiang lizhiqiang unconfined_u:object_r:samba_share_t:s0 /haha
[root@lizhiqiang ~]# getsebool -a | grep samba #设置SELinux服务与策略,使其允许通过Samba服务程序读写该共享目录。
samba_export_all_rw --> off
[root@lizhiqiang ~]# setsebool -P samba_export_all_rw=on
[root@lizhiqiang ~]# systemctl restart smb #重启并加入启动项
[root@lizhiqiang ~]# systemctl enable smb
[root@lizhiqiang ~]# iptables -F #避免防火墙妨碍,清空iptables防火墙。
[root@lizhiqiang ~]# service iptables save
[root@lizhiqiang ~]# pdbedit -a -u lizhiqiang #(该用户是存在的)生成账户信息数据库,添加一名用户,以供samba共享文件夹的登录验证
new password:
retype new password:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
linux与linux共享
Linux客户端需要安装支持文件共享服务的软件包:yum install -y cifs-utils
例2在例1基础上,实现Linux客户端挂载Samba服务的共享文件夹
客户端
[root@lizhiqiang Desktop]# yum install -y cifs-utils
按照Samba服务的用户名、密码、共享域的顺序将相关信息写入到一个认证文件中
[root@lizhiqiang Desktop]# vim /root/peter.smb
username=lizhiqiang #samba账户
password=123123 #samba账户密码
domain= MYGROUP #与samba主配置文件中的对应参数要一致
降低文件权限提高安全性。
[root@lizhiqiang Desktop]# ls -ld /root/peter.smb
-rw-r–r--. 1 root root 52 Nov 12 07:47 /root/peter.smb
[root@lizhiqiang Desktop]# chmod -Rf 600 /root/peter.smb
创建一个用于挂载Samba服务共享资源的目录,并把挂载信息写入到/etc/fstab文件中以永久挂载。
[root@lizhiqiang Desktop]# mkdir /peter
[root@lizhiqiang Desktop]# vim /etc/fstab
共享文件夹格式为cifs,权限设置为以认证文件进行验证
//192.168.14.30/tony /peter cifs credentials=/root/peter.smb 0 0
[root@lizhiqiang Desktop]# mount -a #重新加载
客户端进入到挂载目录/muzi后就可以对目录里的文件进行增删改操作了。
[root@lizhiqiang Desktop]# cd /peter
[root@lizhiqiang peter]# ls
share
[root@lizhiqiang peter]# echo “钢铁侠” > fczlm
[root@lizhiqiang peter]# ls
fczlm share
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
NFS网络文件系统
如果觉得Samba服务程序的配置太麻烦,而且恰巧需要共享文件的主机都是Linux系统,非常推荐在客户端部署NFS服务来共享文件。NFS(网络文件系统)服务可以将远程Linux系统上的文件共享资源挂载到本地主机的目录上,从而使得本地主机(Linux客户端)基于TCP/IP协议,像使用本地主机上的资源那样读写远程Linux系统上的共享文件
RHEL 7系统中默认已经安装了NFS服务,安装:yum install -y nfs-utils
服务端配置192.168.14.30
[root@lizhiqiang Desktop]# iptables -F #清空iptables防火墙策略,永久保存。
[root@lizhiqiang Desktop]# service iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables:[ OK ]
[root@lizhiqiang Desktop]# mkdir /lzqshare #建立用于NFS文件共享的目录,并设置足够的权限确保其他人也有写入权限
[root@lizhiqiang Desktop]# chmod -Rf 777 /lzqshare
[root@lizhiqiang Desktop]# echo “好运来” > /lzqshare/a.txt
[root@lizhiqiang Desktop]# vim /etc/exports #编辑NFS服务程序的配置文件/etc/exports
把/lzqshare目录共享给192.168.14.0/24网段内的所有主机,让这些主机都拥有读写权限。
注意:NFS客户端地址与权限之间没有空格。
/lzqshare 192.168.14.*(rw,sync,root_squash)
[root@lizhiqiang Desktop]# export -a #重启配置
重启rpcbind与nfs-server服务并加入启动项
(在使用NFS服务进行文件共享之前,需要使用RPC服务将NFS服务器的IP地址和端口号等信息发送给客户端)
[root@lizhiqiang Desktop]# systemctl restart rpcbind
[root@lizhiqiang Desktop]# systemctl enable rpcbind
[root@lizhiqiang Desktop]# systemctl restart nfs-server
[root@lizhiqiang Desktop]# systemctl enable nfs-server
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
客户端192.168.14.10
[root@lizhiqiang Desktop]# showmount -e 192.168.14.30 #使用showmount命令查询NFS服务器的远程共享信息
Export list for 192.168.14.30:
/lzqshare 192.168.14.*
[root@lizhiqiang Desktop]# mkdir /tony
[root@lizhiqiang Desktop]# vim /etc/fstab
192.168.14.30:/lzqshare /tony nfs defaults 0 0
[root@lizhiqiang Desktop]# mount -a
1
2
3
4
5
6
7
8
9
10
11
showmount命令 查询NFS服务器的远程共享信息
参数 作用
-e 显示NFS服务器的共享列表
-a 显示本机挂载的文件资源的情况NFS资源的情况
-v 显示版本号
AutoFs自动挂载服务
无论是Samba服务还是NFS服务,都要把挂载信息写入到/etc/fstab中,这样远程共享资源就会自动随服务器开机而进行挂载。虽然这很方便,但是如果挂载的远程资源太多,则会给网络带宽和服务器的硬件资源带来很大负载。如果在资源挂载后长期不使用,也会造成服务器硬件资源的浪费。
autofs自动挂载服务可以解决这一问题。与mount命令不同,autofs服务程序是一种Linux系统守护进程,当检测到用户试图访问一个尚未挂载的文件系统时,将自动挂载该文件系统。换句话说,将挂载信息填入/etc/fstab文件后,系统在每次开机时都自动将其挂载,而autofs服务程序则是在用户需要使用该文件系统时才去动态挂载,从而节约了网络资源和服务器的硬件资源。
安装autofs自动挂载服务:yum install -y autofs。
autofs服务的主配置文件:/etc/auto.master。记录要自动挂载的目录和对应的子配置文件。更加详细具体的挂载目录内的挂载设备信息则记录在用户自定义的子配置文件中。子配置文件后缀必须为.misc。
autofs服务的子配置文件应按照“挂载目录 挂载文件类型及权限 主机ip地址:设备名称”的格式进行填写。
例如,光盘设备一般挂载到/media/cdrom目录中,那么挂载目录写成/media即可。对应的子配置文件则是对这个挂载目录内的挂载设备信息作进一步的说明。子配置文件需要用户自行定义,文件名字没有严格要求,但后缀建议以.misc结束。
1
2
3
4
5
6
7
例3在例2基础上在客户端安装autofs服务,实现对服务端的nfs共享目录的自动挂载
[root@lizhiqiang Desktop]# yum install -y autofs
编辑autofs主配置文件,指定设备挂载位置的上一级目录和对应的子配置文件。
[root@lizhiqiang Desktop]# vim /etc/auto.master
/misc /etc/auto.misc
/media /etc/iso.misc
[root@lizhiqiang Desktop]# vim /etc/iso.misc
iso -fstype=iso9660,ro,nosuid,nodev :/dev/cdrom
重启autofs服务并加入开机启动项
[root@lizhiqiang Desktop]# systemctl restart autofs
[root@lizhiqiang Desktop]# systemctl enable autofs
[root@lizhiqiang Desktop]# cd /media/iso
[root@lizhiqiang iso]#
当用df -h查看设备挂载情况时,确认共享目录没有被挂载上,而且/media目录里根本不存在iso目录,但却可以使用cd命令进入iso目录中,说明autofs服务配置成功。