Samba、NFS实现文件共享

本文详细介绍了如何在Linux系统中配置Samba和NFS服务以实现文件共享。首先,通过安装samba服务并编辑smb.conf配置文件,设置了共享目录和安全参数。接着,通过SELinux策略调整确保共享目录的访问权限。然后,展示了在Linux客户端挂载Samba共享的过程。对于NFS服务,配置了exports文件并启动相关服务,使得特定网段的主机能够挂载共享目录。最后提到了Autofs自动挂载服务,以优化资源管理和利用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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服务配置成功。

一. Samba 简介 Samba(SMB是其缩写) 是一个网络服务器,用于Linux和Windows共享文件之用;Samba 即可以用于Windows和Linux之间的共享文件,也一样用于Linux和Linux之间的共享文件;不过对于Linux和Linux之间共享文件有更好的网络文件系统NFSNFS也是需要架设服务器的; 大家知道在Windows 网络中的每台机器即可以是文件共享的服务器,也可以同是客户机;Samba 也一样能行,比如一台Linux的机器,如果架了Samba Server 后,它能充当共享服务器,同时也能做为客户机来访问其它网络中的Windows共享文件系统,或其它Linux的Sabmba 服务器; 我们在Windows网络中,看到共享文件功能知道,我们直接就可以把共享文件夹当做本地硬盘来使用。在Linux的中,就是通过Samba的向网络中的机器提供共享文件系统,也可以把网络中其它机器的共享挂载在本地机上使用;这在一定意义上说和FTP是不一样的。 二. Samba的几个套件,安装及简单配置 sambasamba-client, samba-common 一句 sudo apt-get install samba samba-client 就能全部装上 启动samba也很简单: sudo /etc/init.d/samba start 设置samba的密码, 可以先添加samba用户, 必须是系统用户。 smbpasswd -a yourname 三. 互访 1)windows访问ubuntu windows访问ubuntu很简单, 先在ubuntu上设置共享目录即可, 鼠标右键点目录,选择sharing options, 够选share this folder,需要的话也可以够选下面的allow write 这时在windows的网络邻居中的网络中查找就能找到共享目录了,通过//host也行 2)ubuntu访问windows 第一种:在ubuntu的网络中直接浏览访问 位置->网络,点击界面中windows网络->workgroup,在workgroup组中就可以看到windows计算机名,双击会弹出输入用户名和密码的对话框,将我们上面设置smb的用户名和密码输入就可以进行访问。 第二种:用ubuntu 系统自带的连接到服务器功能访问 位置->连接到服务器,在服务类型中选择“windows共享”,在服务器中输入windows计算机的ip地址或计算机名,点击连接,这样在系统桌面中就会显示一个连接到windows 计算机的文件卷,里面就是windows计算机的共享目录了。 同样在访问的时候要输入smb的用户名和密码。 第三种:用mount’挂载windows的共享目录到本地磁盘 首先要在ubuntu系统中建立一个挂载点,在这里我们建立的挂在点为 /mnt/wind 同样在保证网络连接正常,且windows中有共享目录的前提下,进行一下操作 以windows的ip为192.168.0.1,共享文件夹为share为例 命令如下: mount -t smbfs –o username=wangyh,password=123456 //192.168.0.1/share /mnt/wind 有是这样在访问的时候会出现中文乱码的问题,这样我们可以按下面命令来执行,可以解决这个问题 mount -o smbfs -o iocharset=uft8,codepage=cp936,clmask=777,fmask=777,userneme=wangyh,password=123456 //192.168.0.1/share /mnt/wind 注解:usename和password都为smb的用户和密码,如果要详细了解mount命令,使用man mount在终端查看详细用法 第四种:使用smbclient 命令 一般来讲先列出所有共享目录,命令如下: smbclient –L //192.168.0.1/ -U yourname 输入smb的密码后,将看到共享目录列表。 假设进入共享目录share,命令如下: smbclient //192.168.0.1/share -U yourname 之后将看到一个smb:> 已经进入了smb模式,有些像ftp,敲help可以查看相关命令,get,put可以下载和上传文件。 五. 小结 以上几步,对于简单使用ubuntu和windows的文件共享于互访已经足够,更详细的资料可以参考:http://linux.vbird.org/linux_server/0370samba.php#server_pkg
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值