Linux系列教程(15)- 使用 Samba 或 NFS 实现文件共享

使用 Samba 或 NFS 实现文件共享

Samba 文件共享服务

FTP 协议的本质是传输文件,而非共享文件,因此要想通过客户端直接在服务器上修改文件
内容还是一件比较麻烦的事情。

1987 年,微软公司和英特尔公司共同制定了 SMB(Server Messages Block,服务器消息
块)协议,旨在解决局域网内的文件或打印机等资源的共享问题,这也使得在多个主机之间
共享文件变得越来越简单。

分别去掉所有以井号(#)和分号(;)开头的注释信息
行,对于剩余的空白行可以使用^$参数来表示并进行反选过滤

[root@linuxprobe ~ ]# yum install samba
[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
配置共享资源

创建用于访问共享资源的账户信息。

pdbedit 命令用于管理 SMB 服务程序的账户信息数据库,格式为“pdbedit [选项] 账户”。
在第一次把账户信息写入到数据库时需要使用-a 参数,以后在执行修改密码、删除账户等操
作时就不再需要该参数了。

[root@linuxprobe ~]# id linuxprobe
uid=1000(linuxprobe) gid=1000(linuxprobe) groups=1000(linuxprobe)
[root@linuxprobe ~]# pdbedit -a -u linuxprobe
输入samba服务器密码

创建用于共享资源的文件目录。

[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
restorecon reset /home/database context unconfined_u:object_r:home_root_t:s0->
unconfined_u:object_r:samba_share_t:s0

在 Samba 服务程序的主配置文件中,写入共享信息。

[root@linuxprobe ~]# vim /etc/samba/smb.conf
[global]
workgroup = MYGROUP
server string = Samba Server Version %v
log file = /var/log/samba/log.%m
max log size = 50
security = user
passdb backend = tdbsam
load printers = yes
cups options = raw
[database]
comment = Do not arbitrarily modify the database file
path = /home/database
public = no
writable = yes

Samba 服务程序的配置工作基本完毕。接下来重启 smb 服务并清空 iptables 防火墙

[root@linuxprobe ~]# systemctl restart smb
[root@linuxprobe ~]# systemctl enable smb
ln -s '/usr/lib/systemd/system/smb.service' '/etc/systemd/system/multi-user.
target.wants/smb.service'
[root@linuxprobe ~]# iptables -F
[root@linuxprobe ~]# service iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables:[ OK ]
Windows 访问文件共享服务

要在 Windows 系统中访问共享资源,只需在 Windows 的“运行”命令框中输入两个反斜
杠,然后再加服务器的 IP 地址即可

\\ip

如果已经清空了 Linux 系统上 iptables 防火墙的默认策略(即执行 iptables -F 命令),现
在就应该能看到 Samba 共享服务的登录界面了。

正确输入 linuxprobe 账户名以及使用 pdbedit 命令设置的密码后,就可以登录到共享界
面中了.

由于 Windows 系统的缓存原因,有可能您在第二次登录时提供了正确的账户和密码,依
然会报错,这时只需要重新启动一下 Windows 客户端就没问题了

NFS(网络文件系统)

NFS(网络文件系统)服务可以将远程 Linux 系统上的文件共享资源挂载到本地主机的目录上,从而使得本地主机
(Linux 客户端)基于 TCP/IP 协议,像使用本地主机上的资源那样读写远程 Linux 系统上的共享文件。

服务端安装配置
[root@linuxprobe ~]# yum install nfs-utils

为了检验 NFS 服务配置的效果,我们需要使用两台 Linux 主机

另外,不要忘记清空 NFS 服务器上面 iptables 防火墙的默认策略,以免默认的防火墙策
略禁止正常的 NFS 共享服务。

[root@linuxprobe ~]# iptables -F
[root@linuxprobe ~]# service iptables save

在 NFS 服务器上建立用于 NFS 文件共享的目录,并设置足够的权限确保其他人也有写入权限。

[root@linuxprobe ~]# mkdir /nfsfile
[root@linuxprobe ~]# chmod -Rf 777 /nfsfile
[root@linuxprobe ~]# echo "welcome to linuxprobe.com" > /nfsfile/readme

NFS 服务程序的配置文件为/etc/exports,默认情况下里面没有任何内容。我们
可以按照“共享目录的路径 允许访问的 NFS 客户端(共享权限参数)”的格式,定义要共享
的目录与相应的权限。

参数说明

ro  只读
rw  读写
root_squash  当 NFS 客户端以 root 管理员访问时,映射为 NFS 服务器的匿名用户
no_root_squash 当 NFS 客户端以 root 管理员访问时,映射为 NFS 服务器的 root 管理员
all_squash 无论 NFS 客户端使用什么账户访问,均映射为 NFS 服务器的匿名用户
sync  同时将数据写入到内存与硬盘中,保证不丢失数据
async  优先将数据保存到内存,然后再写入硬盘;这样效率更高,但可能会丢失数据

例如,如果想要把/nfsfile 目录共享给 192.168.10.0/24 网段内的所有主机,让这些主机都
拥有读写权限

[root@linuxprobe ~]# vim /etc/exports
/nfsfile 192.168.10.*(rw,sync,root_squash)

启动和启用 NFS 服务程序。

[root@linuxprobe ~]# systemctl restart rpcbind
[root@linuxprobe ~]# systemctl enable rpcbind
[root@linuxprobe ~]# systemctl start nfs-server
[root@linuxprobe ~]# systemctl enable nfs-server
ln -s '/usr/lib/systemd/system/nfs-server.service' '/etc/systemd/system/nfs.
target.wants/nfs-server.service'
客户端

NFS 客户端的配置步骤也十分简单。先使用 showmount 命令查询 NFS 服务器的远程共享信

[root@linuxprobe ~]# showmount -e 192.168.10.10
Export list for 192.168.10.10:
/nfsfile 192.168.10.*

然后在 NFS 客户端创建一个挂载目录。使用 mount 命令并结合-t 参数,指定要挂载的文
件系统的类型,并在命令后面写上服务器的 IP 地址、服务器上的共享目录以及要挂载到本地
系统(即客户端)的目录。

[root@linuxprobe ~]# mkdir /nfsfile
[root@linuxprobe ~]# mount -t nfs 192.168.10.10:/nfsfile /nfsfile

挂载成功后就应该能够顺利地看到在执行前面的操作时写入的文件内容了。如果希望
NFS 文件共享服务能一直有效,则需要将其写入到 fstab 文件中

[root@linuxprobe ~]# cat /nfsfile/readme
welcome to linuxprobe.com
[root@linuxprobe ~]# vim /etc/fstab

192.168.10.10:/nfsfile /nfsfile nfs defaults 0 0

autofs 自动挂载服务

无论是 Samba 服务还是 NFS 服务,都要把挂载信息写入到/etc/fstab 中,这样远程共享资
源就会自动随服务器开机而进行挂载。虽然这很方便,但是如果挂载的远程资源太多,则会
给网络带宽和服务器的硬件资源带来很大负载。如果在资源挂载后长期不使用,也会造成服
务器硬件资源的浪费。可能会有读者说,“可以在每次使用之前执行 mount 命令进行手动挂
载”。这是一个不错的选择,但是每次都需要先挂载再使用,您不觉得麻烦吗?

[root@linuxprobe ~]# yum install 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
[root@linuxprobe ~]# df -h

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

吕布辕门

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值