Linux的两种共享服务搭建

1、NFS:Network File System

在Linux下实现文件共享有多种方式,NFS就是其中之一。网络文件系统(NFS)协议是由Sun MicroSystem在20世纪80年代为了提供对共享文件的远程访问而设计和实现的。该协议采用Client/Server模型, 通过使用Sun开发的远程过程调用协议(RPC Protocol)来实现运行在一台计算机上的程序来调用在另一台远程机器上运行的子程序。

NFS包含3个版本:NFSv2、NFSv3、NFSv4

RHEL6是以NFSv4作为默认版本,NFSv4使用TCP协议(端口号是2049)和NFS服务器建立连接,而老版本的NFS可以在TCP协议或者是UDP协议上运行。NFS服务的端口默认是不固定的,但可以强制NFS使用固定端口。

RHEL6中NFS的软件包:nfs-utils

在NFS的相关文档中,有两个值得重点关注

/etc/exports:NFS服务的主配置文件,该文件的最主要目的是发布共享目录并为共享目录限制权限和其他服务的主配置文件一样,绝大部分的配置都是通过编辑该文件完成。

/var/lib/nfs/xtab:这个文件主要用来记录客户端与NFS服务器的连接记录,如果想查看哪些客户端曾经连接过NFS服务器,查看该文件即可。

NFS服务的主配置文件exports发布共享目录的格式如下:

共享目录 [客户端1参数1][客户端2 参数]…

共享目录是指在NFS服务器上需要给客户端共享出来的目录,在设置共享目录的时候要使用绝对路径

客户端是指所有可以访问NFS服务器共享目录的计算机,常见客户端指定方式如下表:

参数:在诸多可以附带的参数中,使用最多的要数权限设置的参数了,常见参数如下表:

注意:在发布共享目录的格式中除了共享目录是必跟参数外,其他参数都是可选的。而且共享目录和客户端1与客户端2之间都 需要使用空格符号,但客户端和参数之间不能有空格。

如:在/etc/exports文件添加如配置:

/media *(ro) 192.168.0.10(rw,no_root_squash)

/NFS/test 192.168.0.0/24(ro)

NFS服务的启动与停止:NFS服务脚本是NFS

chkconfig --list

将rpcbind和nfs都设为自动启动

chkconfig rpcbind on

chkconfig nfs on

启动rpcbind

service rpcbind start -----先启动rpcbind

service nfs start-----之后才能成功启动nfs

注意:一定要先启动rpcbind,然后再启动nfs,不然NFS quotas和NFS daemon都将启动失败。

exportfs命令,用于维护当前主机中NFS服务器的输出目录列表

exportfs –rv使NFS服务器重新读取exports文件的设置,而不需重启NFS服务器

exportfs –auv 用于停止当前主机中NFS服务器的所有目录输出

exportfs –av 用于输出NFS服务器的所有共享目录

exportfs –v 显示输出列表同时,显示导出的设定参数

showmount命令

格式:showmount 参数 NFS服务器的IP

showmount -e 在NFS Server上执行此命令显示NFS Server上所有的共享卷

showmount -d 查看NFS服务器上哪些共享目录被客户端挂载了

Showmount -a 显示指定NFS服务器的所有客户端主机和其所连接的目录

客户端的使用

客户端可以先使用showmount –e查看NFS服务器发布的共享目录

挂载NFS文件系统

Mount -t nfs NFS服务器IP地址(或主机名):共享目录 本地挂载点

如:mount –t nfs 192.168.0.1:/media /mnt

启动系统自动挂载NFS

想要系统每次启动时自动挂载NFS服务器上的共享目录,则可以编辑/etc/fstab文件

NFS服务器的IP:共享目录 挂载点 nfs defaults 0 0

例如:192.168.0.1:/media /mnt nfs defaults 0 0

配置NFS固定端口

默认情况下,NFS配置完毕后,每次重新启动该服务后其相应的端口都会随机变化,如果启用了防火墙,如何开放变化的端口就成问题了,其实解决办法也很简单,只需对NFS进行配置使用固定端口即可

NFS服务启动时,会检查/etc/sysconfig/nfs文件,因此改该文件,修改相应字段便可以强制NFS服务使用固定端口了

若NFS服务器上启用了iptables防火墙且filter表的3个链默认规则为DROP需创建如下规则:

iptables -P INPUT DROP

iptables -P OUTPUT DROP

iptables -P FORWARD DROP

iptables -A INPUT -i lo -j ACCEPT

iptables -A OUTPUT -o lo -j ACCEPT

iptables –A OUTPUT –m state --state ESTABLISHED,RELATED –j ACCEPT

iptables –A INPUT –m state --state ESTABLISHED,RELATED –j ACCEPT

iptables –A INPUT –p tcp --dport 111 –j ACCEPT

iptables –A INPUT –p udp --dport 111 –j ACCEPT

iptables –A INPUT –p tcp --dport 2049 –j ACCEPT

iptables –A INPUT –p udp --dport 2049 –j ACCEPT

iptables –A INPUT –p tcp –m multiport --dport 875,32803,32769,892,662 –j ACCEPT

iptables –A INPUT –p udp –m multiport --dport 875,32803,32769,892,662 –j ACCEPT

service iptables save

2、SMB/CIFS

Samba项目是SMB/CIFS协议在Linux/Unix系统中的实现,能够实现跨平台的文件和打印机资源共享,适用于使用混合操作系统平台的企业环境。

Samba的软件包组成:samba、samba-client、samba-common、samba-doc等,只需安装samba、samba-client、samba-common这3个软件包,即可实现Samba服务器和客户端的基本功能

Samba服务器的主要程序

smbd:提供对服务器中文件、打印资源的共享访问

nmbd:提供基于NetBIOS主机名称的解析

Samba的服务脚本:/etc/init.d/smb

Samba的配置目录及文件

/etc/samba/

/etc/samba/smb.conf

Samba服务的端口号

tcp协议的139、445;

udp协议的137、138;

若samba服务器启动了防火墙,要在input链上创建允许规则

smb.conf配置文件的内容组成

常见全局配置项的含义

workgroup:所在工作组名称

server string:服务器描述信息

security:安全级别,可用值如下:share、user、server、domain、ads(samba使用ads级别加入WINDOWS的域环境中)

passdb backend = tdbsam

log file:日志文件位置,“%m”变量表示客户机地址

max log size:日志文件的最大容量,单位为KB

load printers = yes

cups options = raw

hosts allow

hosts deny

当hosts allow和hosts deny同时出现且冲突时,hosts allow优先

常见共享目录配置项的含义

comment:对共享目录的注释、说明信息

path:共享目录在服务器中对应的实际路径

browseable:该共享目录在“网上邻居”中是否可见

guest ok:是否允许所有人访问,等效于“public”

writable:是否可写,与read only的作用相反

建立可匿名访问的文件共享

修改smb.conf配置文件

[global]

workgroup = WORKGROUP

security = share

[movie]

comment = Public share with movie files

path = /var/public/movies

public = yes

read only = yes

建立带验证的文件共享

建立Samba用户数据库文件:系统用户帐号 -> Samba用户帐号

smbpasswd -a 系统用户名

smbpasswd命令的主要选项:

-h:显示smbpasswd命令的帮助信息

-a:添加指定的Samba用户帐号

-d:禁用指定的用户帐号

-e:启用指定的用户帐号

-x:删除指定的用户帐号

不使用任何命令选项时可以用于修改Samba用户的密码

[global]

workgroup = WORKGROUP

security = user

[movie]

comment = Public share with movie files

path = /var/public/movies

public = no

read only = no

valid users = vina, @root

write list = root

directory mask = 0744

create mask = 0600

在smb.conf文件设置客户机访问授权,一般用在全局配置[global]部分

hosts allow配置项:仅允许特定的客户机

hosts deny配置项:仅拒绝特定的客户机

客户机地址表示形式

以空格分隔多个地址

主机名或IP地址,例如: 192.168.168.11 或者 prtsvr

网络地址,例如:173.17. 或者 173.17.0.0/255.255.0.0

客户端访问

使用Windows客户端访问文件共享服务

网上邻居、UNC路径(win+r 输入 \\共享服务器ip)

使用Linux客户端访问文件共享服务

smbclient命令,查看及登录使用共享

smbclient -L 192.168.168.1

smbclient -U vina //192.168.168.1/movie

mount命令,将共享目录挂载到本地使用

mount -o username=vina //192.168.168.1/movie /mnt

注意:若开启了selinux功能则执行如下命令

先用getsebool -a |grep samba显示与samba访问相关的布尔值然后再用setsebool修改相关的布尔值。

-P 选项使修改的布尔值永久生效,如setsebool -P samba_enable_home_dirs on 和setsebool –P samba_export_all_ro on

编辑/Alex 美编/Mary

  • 发表于:
  • 原文链接:https://kuaibao.qq.com/s/20180720G06FZ600?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券