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

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

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

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

安装 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

以超级用户或具有 sudo 特权的用户身份运行以下命令来挂载共享:

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

系统将提示您输入密码:

Password:

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

要验证远程 Windows 共享是否已成功挂载,请使用 mountdf -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

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

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 命令,后跟已挂载 Windows 共享的目录或远程共享:

sudo umount /mnt/win_share

如果 CIFS 挂载在 fstab 文件中包含一个条目,则将其删除。

使用 umount 共享时,如果该命令将无法卸载共享,要找出哪些进程正在访问 Windows 共享,请使用以下 fuser 命令:

fuser -m MOUNT_POINT

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

如果仍然无法卸载共享,请使用 -l(--lazy) 选项,该选项可让您在不再繁忙的文件系统不再繁忙时立即对其进行卸载。

sudo umount -l MOUNT_POINT

结论

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