在 Linux 和 Windows 计算机之间共享文件
使用 Samba 设置跨平台文件共享。
如果您使用不同的操作系统,那么能够在它们之间共享文件会很方便。本文介绍如何使用 Samba 和 mount.cifs 在 Linux (Fedora 33) 和 Windows 10 之间设置文件访问。
Samba 是 SMB/CIFS 协议的 Linux 实现,允许通过网络直接访问共享文件夹和打印机。 Mount.cifs 是 Samba 套件的一部分,允许您在 Linux 下挂载 CIFS 文件系统。
警告:这些说明适用于在您的专用本地网络中或在 Linux 主机与虚拟化 Windows 来宾计算机之间的虚拟化仅主机网络中共享文件。不要将本文视为您公司网络的指南,因为它没有实现必要的网络安全注意事项。
从 Windows 访问 Linux
本节介绍如何从 Windows 文件资源管理器访问用户的 Linux 主目录。
1.安装并配置Samba
通过安装 Samba 在 Linux 系统上启动:
dnf install samba
Samba是一个系统守护进程,其配置文件位于/etc/samba/smb.conf
。它的默认配置应该可以工作。如果没有,这个最小配置应该可以完成工作:
[global]
workgroup = SAMBA
server string = %h server (Samba %v)
invalid users = root
security = user
[homes]
comment = Home Directories
browseable = no
valid users = %S
writable = yes
您可以在项目网站的 smb.conf 部分找到参数的详细说明。
2.修改LinuxSE
如果您的 Linux 发行版受 SELinux 保护(如 Fedora),您必须启用 Samba 才能访问用户的主目录:
setsebool -P samba_enable_home_dirs on
通过键入以下内容检查该值是否已设置:
getsebool samba_enable_home_dirs
你的输出应该是这样的:
(斯蒂芬·阿文韦德,CC BY-SA 4.0)
3. 启用您的用户
Samba 使用一组有权连接的用户和密码。通过键入以下内容将您的 Linux 用户添加到该组中:
smbpasswd -a <your-user>
系统将提示您输入密码。这是一个全新密码;这不是您帐户的当前密码。输入您要用于登录 Samba 的密码。
要获取允许的用户类型列表:
pdbedit -L -v
通过键入以下内容删除用户:
smbpasswd -x <user-name>
4.启动桑巴
因为 Samba 是一个系统守护进程,所以您可以在 Fedora 上使用以下命令启动它:
systemctl start smb
这将为当前会话启动 Samba。如果您希望 Samba 在系统启动时自动启动,请输入:
systemctl enable smb
在某些系统上,Samba 守护程序注册为 smbd。
4.配置防火墙
默认情况下,Samba 被防火墙阻止。通过配置防火墙允许Samba永久访问网络。
您可以使用以下命令在命令行上执行此操作:
firewall-cmd --add-service=samba --permanent
或者您可以使用防火墙配置工具以图形方式执行此操作:
(斯蒂芬·阿文韦德,CC BY-SA 4.0)
5.从Windows访问Samba
在 Windows 中,打开文件资源管理器。在地址行中,输入两个反斜杠,后跟 Linux 计算机的地址(IP 地址或主机名):
(斯蒂芬·阿文韦德,CC BY-SA 4.0)
系统将提示您输入登录信息。输入第 3 步中的用户名和密码组合。您现在应该能够访问 Linux 计算机上的主目录:
(斯蒂芬·阿文韦德,CC BY-SA 4.0)
从 Linux 访问 Windows
以下步骤说明如何从 Linux 访问共享 Windows 文件夹。要实施它们,您需要 Windows 用户帐户的管理员权限。
1. 启用文件共享
通过点击打开网络和共享中心
Windows 按钮 > 设置 > 网络和互联网
或者右键单击任务栏右下角的小监视器图标:
(斯蒂芬·阿文韦德,CC BY-SA 4.0)
在打开的窗口中,找到您要使用的连接并记下其配置文件。我使用以太网 3,它被标记为公共网络。
警告:如果您的电脑经常连接到公共网络,请考虑将本地计算机的连接配置文件更改为专用。
记住您的网络配置文件,然后点击更改高级共享设置:
(斯蒂芬·阿文韦德,CC BY-SA 4.0)
选择与您的连接相对应的配置文件,然后打开网络发现和文件和打印机共享:
(斯蒂芬·阿文韦德,CC BY-SA 4.0)
2.定义共享文件夹
右键单击要共享的文件夹,导航到授予访问权限,然后选择特定人员...,打开上下文菜单:
(斯蒂芬·阿文韦德,CC BY-SA 4.0)
检查您当前的用户名是否在列表中。点击共享将此文件夹标记为共享:
(斯蒂芬·阿文韦德,CC BY-SA 4.0)
您可以通过在文件资源管理器的地址行中输入 \\localhost
显示所有共享文件夹的列表:
(斯蒂芬·阿文韦德,CC BY-SA 4.0)
(Stephan Avenwedde,https://creativecommons.org/licenses/by-sa/4.0/" target="_blank">CC BY-SA 4.0)
3、Linux下挂载共享文件夹
返回 Linux 系统,打开命令 shell,然后创建一个要挂载 Windows 共享的新文件夹:
mkdir ~/WindowsShare
挂载 Windows 共享是通过 mount.cifs 完成的,默认情况下应该安装它。要临时挂载共享文件夹,请使用:
sudo mount.cifs //<address-of-windows-pc>/MySharedFolder ~/WindowsShare/ -o user=<Windows-user>,uid=$UID
在此命令中:
是 Windows PC 的地址信息(IP 或主机名)
是允许访问共享文件夹的用户(来自步骤 2)
系统将提示您输入 Windows 密码。输入它,您将能够使用普通 Linux 用户访问 Windows 上的共享文件夹。
要卸载共享文件夹:
sudo umount ~/WindowsShare/
您还可以在系统启动时挂载 Windows 共享文件夹。请按照以下步骤相应地配置您的系统。
概括
这展示了如何建立每次启动后必须更新的临时共享文件夹访问权限。修改此配置以实现永久访问相对容易。我经常在不同的系统之间来回切换,因此我认为设置直接文件访问非常实用。