linux——使用Samba或NFS实现文件共享。

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

 

security参数选项
share 来访主机无需验证口令;比较方便,但安全性很差
user 需验证来访主机提供的口令后才可以访问;提升了安全性
server: 使用独立的远程主机验证来访主机提供的口令(集中管理账户)
domain 使用域控制器进行身份验证

 

passdb backend 参数选项
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)
用于配置NFS服务程序配置文件的参数
参数 作用
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客户端的配置步骤:

showmount命令中可用的参数以及作用( 查询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子目录中,光盘设备就会被立即自动挂载上。

你可能感兴趣的:(linux学习笔记)