12.1 SAMBA文件共享服务
FTP文件传输服务确实可以让主机之间的文件传输变得简单方便,但是FTP协议的本质是传输文件,而非共享文件,因此要想通过客户端直接在服务器上修改文件内容还是一件比较麻烦的事情。
Samba服务程序中的参数以及作用:
[root@linuxprobe ~]# mv /etc/samba/smb.conf /etc/samba/smb.conf.bak [root@linuxprobe ~]# cat /etc/samba/smb.conf.bak | grep -v "#" | grep -v ";" | grep -v "^$" > /etc/samba/smb.conf [root@linuxprobe ~]# cat /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种 passdb backend = tdbsam #定义用户后台的类型,共有3种 load printers = yes #设置在Samba服务启动时是否共享打印机设备 cups options = raw #打印机的选项 [homes] comment = Home Directories browseable = no writable = yes [printers] comment = All Printers path = /var/spool/samba #共享文件的实际路径(重要)。 browseable = no guest ok = no writable = no printable = yes [database] comment = Do not arbitrarily modify the database file path = /home/database public = no writable = yes
[root@linuxprobe ~]# pdbedit -a -u linuxprobe [root@linuxprobe ~]# mkdir /home/database [root@linuxprobe ~]# chown -Rf linuxprobe:linuxprobe /home/database [root@linuxprobe ~]# semanage fcontext -a -t samba_share_t /home/database [root@linuxprobe ~]# restorecon -Rv /home/database
[root@linuxprobe ~]# getsebool -a | grep samba [root@linuxprobe ~]# setsebool -P samba_enable_home_dirs on[root@linuxprobe ~]# systemctl restart smb [root@linuxprobe ~]# systemctl enable smb[root@linuxprobe ~]# iptables -F [root@linuxprobe ~]# service iptables save
share | 来访主机无需验证口令;比较方便,但安全性很差 | |
user | 需验证来访主机提供的口令后才可以访问;提升了安全性 | |
server: | 使用独立的远程主机验证来访主机提供的口令(集中管理账户) | |
domain | 使用域控制器进行身份验证 |
smbpassw | 使用smbpasswd命令为系统用户设置Samba服务程序的密码 | |
tdbsam | 创建数据库文件并使用pdbedit命令建立Samba服务程序的用户 | |
ldapsam | 基于LDAP服务进行账户验证 |
12.1.2 Windows挂载共享
要在Windows系统中访问共享资源,只需在Windows的“运行”命令框中输入两个反斜杠,然后再加服务器的IP地址即可。
12.1.2 Linux挂载共享
在客户端安装支持文件共享服务的软件包(cifs-utils):
[root@linuxprobe ~]# yum install cifs-utils
在Linux客户端,按照Samba服务的用户名、密码、共享域的顺序将相关信息写入到一个认证文件中。为了保证不被其他人随意看到,最后把这个认证文件的权限修改为仅root管理员才能够读写:
[root@linuxprobe ~]# vim auth.smb username=linuxprobe password=redhat domain=MYGROUP [root@linuxprobe ~]# chmod -Rf 600 auth.smb
[root@linuxprobe ~]# mkdir /database [root@linuxprobe ~]# vim /etc/fstab //192.168.10.10/database /database cifs credentials=/root/auth.smb 0 0 [root@linuxprobe ~]# mount -a
12.2 NFS网络文件系统(共享文件的主机都是Linux系统)
基于TCP/IP协议,像使用本地主机上的资源那样读写远程Linux系统上的共享文件
[root@linuxprobe ~]# yum install nfs-utils
[root@linuxprobe ~]# mkdir /nfsfile [root@linuxprobe ~]# chmod -Rf 777 /nfsfile
NFS服务程序的配置文件为/etc/exports,默认情况下里面没有任何内容。我们可以按照“共享目录的路径 允许访问的NFS客户端(共享权限参数)”的格式,定义要共享的目录与相应的权限。
[root@linuxprobe ~]# vim /etc/exports /nfsfile 192.168.10.*(rw,sync,root_squash)
参数 | 作用 |
ro | 只读 |
rw | 读写 |
root_squash | 当NFS客户端以root管理员访问时,映射为NFS服务器的匿名用户 |
no_root_squash | 当NFS客户端以root管理员访问时,映射为NFS服务器的root管理员 |
all_squash | 无论NFS客户端使用什么账户访问,均映射为NFS服务器的匿名用户 |
sync | 同时将数据写入到内存与硬盘中,保证不丢失数据 |
async | 优先将数据保存到内存,然后再写入硬盘;这样效率更高,但可能会丢失数据 |
启动和启用NFS服务程序。由于在使用NFS服务进行文件共享之前,需要使用RPC(Remote Procedure Call,远程过程调用)服务将NFS服务器的IP地址和端口号等信息发送给客户端。因此,在启动NFS服务之前,还需要顺带重启并启用rpcbind服务程序,并将这两个服务一并加入开机启动项中。
[root@linuxprobe ~]# systemctl restart rpcbind [root@linuxprobe ~]# systemctl enable rpcbind [root@linuxprobe ~]# systemctl start nfs-server [root@linuxprobe ~]# systemctl enable nfs-server
NFS客户端的配置步骤:
参数 | 作用 |
-e | 显示NFS服务器的共享列表 |
-a | 显示本机挂载的文件资源的情况NFS资源的情况 |
-v | 显示版本号 |
用mount命令并结合-t参数,指定要挂载的文件系统的类型
[root@linuxprobe ~]# mkdir /nfsfile [root@linuxprobe ~]# mount -t nfs 192.168.10.10:/nfsfile /nfsfile[root@linuxprobe ~]# vim /etc/fstab 192.168.10.10:/nfsfile /nfsfile nfs defaults 0 0
12.3 AutoFs自动挂载服务
autofs服务程序是一种Linux系统守护进程,当检测到用户试图访问一个尚未挂载的文件系统时,将自动挂载该文件系统。(在用户需要使用该文件系统时才去动态挂载,从而节约了网络资源和服务器的硬件资源)
在autofs服务程序的主配置文件中需要按照“挂载目录 子配置文件”的格式进行填写。挂载目录是设备挂载位置的上一级目录。
[root@linuxprobe ~]# vim /etc/auto.master /media /etc/iso.misc (加入这一句)
[root@linuxprobe ~]# vim /etc/iso.misc
iso -fstype=iso9660,ro,nosuid,nodev :/dev/cdrom “挂载目录 挂载文件类型及权限 :设备名称”的格式
[root@linuxprobe ~]# systemctl start autofs
[root@linuxprobe ~]# systemctl enable autofs
此时用df -h发现光盘设备 /dev/cdrom没有挂载在/media/iso目录下,而且/media目录下此时也没有/iso文件,如果使用cd命令切换到这个iso子目录中,光盘设备就会被立即自动挂载上。