如何使用 CIFS 在 Linux 上挂载 Windows 共享

发表于 2022-03-28 21:02:54.001,阅读数:1274

image.png

在 Linux 和 UNIX 操作系统上,可以使用命令cifs选项将Windows 共享安装在本地目录树中的特定安装点上mount 。

通用 Internet 文件系统 (CIFS) 是一种网络文件共享协议。CIFS 是 SMB 的一种形式。

在本教程中,我们将解释如何在 Linux 系统上手动和自动挂载 Windows 共享。

安装 CIFS 实用程序包

要在 Linux 系统上挂载 Windows 共享,首先需要安装 CIFS 实用程序包。

  • 在 Ubuntu 和 Debian 上安装 CIFS 实用程序:
sudo apt update
sudo apt install cifs-utils
  • 在 CentOS 和 Fedora 上安装 CIFS 实用程序:
sudo dnf install cifs-utils

Linux 发行版之间的软件包名称可能不同。

CIFS 挂载 Windows 共享

挂载远程 Windows 共享类似于挂载常规文件系统。

首先,创建一个目录 作为远程 Windows 共享的挂载点:

sudo mkdir /mnt/win_share

以 root 或具有sudo 权限的用户运行以下命令来挂载共享:

sudo mount -t cifs -o username=<win_share_user> //WIN_SHARE_IP/<share_name> /mnt/win_share

系统将提示您输入密码:

Password:

成功时,不会产生任何输出。

要验证远程 Windows 共享是否已成功装载,请使用mountordf -h命令。

挂载共享后,挂载点将成为挂载文件系统的根目录。您可以像使用本地文件一样使用远程文件。

也可以在命令行上提供密码:

sudo mount -t cifs -o username=<win_share_user>,password=<win_share_password> //WIN_SHARE_IP/<share_name> /mnt/win_share

如果用户在 windows 工作组或域中,您可以按如下方式设置:

sudo mount -t cifs -o username=<win_share_user>,domain=<win_domain> //WIN_SHARE_IP/<share_name> /mnt/win_share

为了更好的安全性,建议使用包含共享用户名、密码和域的凭据文件。

凭证文件具有以下格式:

/etc/win-credentials
username=user
password=password
domain=domain

该文件不得被用户读取。要设置正确的权限 和所有权 ,请运行:

sudo chown root: /etc/win-credentials
sudo chmod 600 /etc/win-credentials

要使用凭证文件,请将其定义如下:

sudo mount -t cifs -o credentials=/etc/win-credentials //WIN_SHARE_IP/<share_name> /mnt/win_share

默认情况下,挂载的共享归 root 所有,权限设置为 777。

使用dir_mode选项设置目录权限和file_mode设置文件权限:

sudo mount -t cifs -o credentials=/etc/win-credentials,dir_mode=0755,file_mode=0755 //WIN_SHARE_IP/<share_name> /mnt/win_share

可以使用uid和gid选项更改默认用户和组所有权:

sudo mount -t cifs -o credentials=/etc/win-credentials,uid=1000,gid=1000,dir_mode=0755,file_mode=0755 //WIN_SHARE_IP/<share_name> /mnt/win_share

要设置其他选项 ,请将它们作为逗号分隔的列表添加到-o选项之后。要获取所有挂载选项的列表,man mount请在终端中键入。

自动安装

当使用该mount命令手动挂载共享时,它不会在重新启动后持续存在。

/etc/fstab文件包含一个条目列表,这些条目定义了在系统启动时将如何以及安装什么文件系统。

要在 Linux 系统启动时自动挂载 Windows 共享,请在/etc/fstab文件中定义挂载。该行必须包含 Windows PC 的主机名或 IP 地址、共享名称和本地计算机上的挂载点。

使用文本编辑器打开/etc/fstab文件 :

sudo nano /etc/fstab

将以下行添加到文件中:

/etc/fstab
# <file system>             <dir>          <type> <options>                                                   <dump>  <pass>
//WIN_SHARE_IP/share_name  /mnt/win_share  cifs  credentials=/etc/win-credentials,file_mode=0755,dir_mode=0755 0       0

运行以下命令挂载共享:

sudo mount /mnt/win_share

mount命令将读取内容/etc/fstab并挂载共享。

下次重新启动系统时,Windows 共享将自动挂载。

卸载 Windows 共享

该umount命令从目录树中分离(卸载)已安装的文件系统。

要分离已安装的 Windows 共享,请使用umount命令,后跟它已安装的目录或远程共享:

sudo umount /mnt/win_share

如果 CIFS 挂载在fstab文件中有条目,请将其删除。

umount命令在使用时将无法分离共享。要找出哪些进程正在访问 Windows 共享,请使用以下fuser命令:

fuser -m MOUNT_POINT

找到进程后,您可以使用kill命令停止它们并卸载共享。

如果卸载共享仍然有问题,请使用-l( --lazy)选项,它允许您在繁忙的文件系统不再繁忙时立即卸载它。

sudo umount -l MOUNT_POINT

结论

在 Linux 中,您可以使用带有cifs选项的mount命令挂载 Windows共享。

如果您有任何问题或反馈,请随时发表评论。

转载于:https://linuxize.com/post/how-to-mount-cifs-windows-share-on-linux/

Terly

面向openAI编程的程序员