Linux文件共享

Linux文件共享

@firestaradmin 2020年12月10日

NFS

NFS 服务端

sudo apt-get install nfs-kernel-server rpcbind

安装完成后创建一个nfs文件夹,以后需要通过网络用的文件都放这里.xxxx/nfs

之后配置文件/etc/exports:

sudo vi /etc/exports

在文件末尾添加如下所示内容:

xxxx/nfs *(rw,sync,no_root_squash)

重启 NFS 服务

sudo /etc/init.d/nfs-kernel-server restart

NFS客户端

安装客户端应用:

apt-get install -y nfs-common

用mkdir命令创建一个文件夹xxx/nfs-mount。

将NFS服务器的xxx/nfs 目录挂载到NFS客户端的xxx/nfs-mount 目录,执行以下命令:

mount 192.168.119.128:xxx/nfs  xxx/nfs-mount

连接失败情况解决:

如果出现以下情况

image-20200820013608568

ARM-Linux NFS挂载不上,是由于高版本的NFS服务,默认不支持nfs v2的连接,而uboot中nfs服务是 V2版本的,所以需要修改/etc/default/nfs-kernel-server 文件以支持v2 nfs。

修改完内容如下:

# Number of servers to start up
#RPCNFSDCOUNT=8
RPCNFSDCOUNT='-V 2 8'

# Runtime priority of server (see nice(1))
RPCNFSDPRIORITY=0

# Options for rpc.mountd.
# If you have a port-based firewall, you might want to set up
# a fixed port here using the --port option. For more information, 
# see rpc.mountd(8) or http://wiki.debian.org/SecuringNFS
# To disable NFSv4 on the server, specify '--no-nfs-version 4' here
#RPCMOUNTDOPTS="--manage-gids"
RPCMOUNTDOPTS="-V 2 --manage-gids"

# Do you want to start the svcgssd daemon? It is only required for Kerberos
# exports. Valid alternatives are "yes" and "no"; the default is "no".
NEED_SVCGSSD=""

# Options for rpc.svcgssd.
RPCSVCGSSDOPTS="--nfs-version 2,3,4 --debug --syslog"

Samba

1、在Ubuntu上安装Samba

更新apt包索引:

sudo apt update

安装Samba软件包:

sudo apt install samba

安装完成后,Samba服务将自动启动。 要检查Samba服务器是否正在运行,请键入:

sudo systemctl status nmbd
//或
service smbd status

输出应如下所示,表示Samba服务处于活动状态并正在运行:

image-20201210172357197

2、创建共享的文件位置和创建用户

1、创建要共享的文件位置:

mkdir xxx/samba_share

2、设置共享文件的权限

chomd -R 777 xxx/samba_share

3、创建Samba用户

sudo smbpasswd -a Samba用户名

然后输入密码

3、配置Samba

1、在更改Samba配置文件之前,请创建备份以供将来参考或还原:

sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak

2、修改配置文件

sudo vim /etc/samba/smb.conf

在最后增加以下内容:

[share]						# 连接的时候的名字
   comment = share folder	# 描述,说明共享信息
   path = xxx/samba_share	# 要共享的文件位置
   create mask = 0777		# 创建文件的权限
   directory mask = 0777    # 创建目录的权限
   valid users = wzh		# 允许使用服务的用户列表
   force user = nobody		# 前置把共享的文件属主
   force group = nogroup	# 可以访问的用户组
   public = yes				# 允许guest用户访问,与guest ok=yes完全相同
   available = yes			# 该指定共享资源可使用
   writable = yes       		# 是否可写
   browseable = yes			# 是否可见,no为隐藏共享
   read only = no     		# 是否为只读

其他设置:

samba安全级别
       share   ##匿名共享,不需要用户名密码
       user    #需要用户名密码,默认由samba服务器检查  
       server    #由指定的服务器认证
       domain     #由域控制器验证

3、重启Samba

sudo systemctl restart nmbd
// 或者
service smbd restart

4、验证配置的正确性

smbclient -L //localhost/share

输入账号和密码,正确则会出现以下内容:

image-20201210172732864


4、WIN10连接Samba

0、确保windows配置正确

  • 确保windows能访问到Ubuntu的地址
  • 确保windows共享服务已开启

1、法一:

win键 + R 打开运行,,并输入:\\192.168.12.200\share

注意!!此处的\\192.168.12.200\share 里的 share 和之前我们添加配置的 中括号中的内容一致,而不是你的共享目录的路径。

2、法二:

此电脑==》映射网络驱动器==》映射网络驱动器

image-20201210173039083

image-20201210173043771

image-20201210173056813

5、可能遇到的问题

防火墙问题

有时候会因为防火墙的原因导致window访问Ubuntu中的共享文件失败。

(1)法一:

关闭防火墙:

sudo ufw disable

注:开启防火墙:

sudo ufw enable

(2)允许Samba使用端口

查看Samba服务所使用的端口:

netstat -anop | grep smbd(Samba)

img

netstat -anop | grep nmbd

img

nmbd是属于smb服务的一个进程。

我们看到使用了tcp的139和445端口,udp的137和138端口。在防火墙中允许通行,如允许139端口被访问:

sudo ufw alow 139
\\ 或者
sudo allow Sambd

(3)查看ufw状态

sudo ufw status

windows10上面的配置问题

(1)开启共享服务

​ 控制面板==》卸载程序==》启动或关闭windows功能==》勾选SMB1.0/CIFS文件共享支持==》重启电脑

img

(2)本地组策略编辑

注意win10家庭版一开始是打不开本地组策略的

(a)新建文档,内容入下:

@echo off
pushd "%~dp0"
dir /b C:\Windows\servicing\Packages\Microsoft-Windows-GroupPolicy-ClientExtensions-Package~3*.mum >List.txt
dir /b C:\Windows\servicing\Packages\Microsoft-Windows-GroupPolicy-ClientTools-Package~3*.mum >>List.txt
for /f %%i in ('findstr /i . List.txt 2^>nul') do dism /online /norestart /add-package:"C:\Windows\servicing\Packages\%%i"
pause

(b)修改扩展名并运行

​ 将文本文档的扩展名由txt修改成cmd,出现扩展名修改提示按确定按钮

​ 鼠标右键单击新建文本文档.cmd这个文件,选择以管理员身份运行

(c)重启电脑,在运行中输入gpedit.msc启动组策略

(d)修改本地组策略

​ 计算机配置==》管理模板==》网络==》Lanman工作站

img

​ 启用不安全的来宾登录:

img