在Linux/UNIX操作系统可以使用mount
命令在指定的挂载点挂载CIFS Windows共享目录。
通用Internet文件系统CIFS,是一种网络文件共享协议。 CIFS是SMB另一种形式。在本教程中,我们将说明如何在Linux挂载Windows共享目录。
安装 CIFS客户端
要在Linux系统挂载CIFS Windows共享目录,首先需要安装CIFS软件包。软件包名称在Linux发行版之间可能有所不同。
如果你的计算机运行的是基于Debian的Linux发行版,例如Ubuntu,Linux mint。请运行命令sudo apt install cifs-utils
安装samba客户端smbclient。
如果你的计算机运行的是基于RedHat的Linux发行版,例如CentOS,Fedora。请运行命令sudo yum install cifs-utils
安装samba客户端smbclient。
sudo apt update
sudo apt install cifs-utils
#Redhat
sudo dnf install cifs-utils
挂载CIFS Windows共享目录
挂载远程Windows共享目录类似于挂载普通文件系统。首先,运行mkdir命令创建目录作为远程Windows共享目录的挂载点。
以root或具有sudo权限的用户运行mount命令来挂载Windows共享目录。系统将提示您输入密码。
<win_share_user>
是Windows共享用户名,是可选参数,<win_share_password>
是Windows共享用户密码,也是可选项参数。
WIN_SHARE_IP
Windows的IP地址,/mnt/win_share
挂载点目录。share_name
是Windows共享名称。<win_domain>
指定Windows 域,是可选项参数。
成功后,不会有任何输出。要验证是否成功安挂载远程Windows共享,请运行mount
命令或df -h
命令。
当完成挂载Windows共享,挂载点目录就和普通目录一样。你可以对待本地文件一样使用远程文件。
sudo mkdir /mnt/win_share
sudo mount -t cifs -o username=<win_share_user> //WIN_SHARE_IP/<share_name> /mnt/win_share
#specify password
sudo mount -t cifs -o username=<win_share_user>,password=<win_share_password> //WIN_SHARE_IP/<share_name> /mnt/win_share
#specify win_domain
sudo mount -t cifs -o username=<win_share_user>,domain=<win_domain> //WIN_SHARE_IP/<share_name> /mnt/win_share
mount
Password:
创建CIFS Windows共享凭证文件
为了提高安全性,建议使用凭证文件,其中包含共享用户名,密码和域。你可创建文件/etc/win-credentials保存用户凭证。
在本教程中,我们使用vim创建文件/etc/win-credentials。凭证文件具有以下格式。完成编辑后,保存文件并退出vim。
为使其它用户不能读取凭证文件。你需要设置正确的权限和所有权。运行命令sudo chown root: /etc/win-credentials
。
要在mount命令指定使用的凭证文件,使用mount命令的-o
和参数credentials
指定凭证文件的绝对路径。
sudo vim /etc/win-credentials
sudo chown root: /etc/win-credentials
sudo mount -t cifs -o credentials=/etc/win-credentials //WIN_SHARE_IP/<share_name> /mnt/win_share
设置CIFS Windows共享文件与目录权限
默认情况下,挂载共享的所有者为root,并且权限设置为777。你可以使用dir_mode
选项设置目录权限模式。
使用file_mode
设置文件权限模式。使用uid
和gid
选项更改默认的用户和组所有权。
要设置其它挂载参数,请在-o
选项之后指定多个参数,多个参数使用逗号分隔。要获取所有挂载参数,请在终端运行命令man mount
。
sudo mount -t cifs -o credentials=/etc/win-credentials,dir_mode=0755,file_mode=0755 //WIN_SHARE_IP/<share_name> /mnt/win_share
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
自动挂载
当使用mount
命令挂载CIFS Windows共享目录时,当重新启动后,你需要重新运行mount命令挂载。
/etc/fstab
文件包含一个挂载点列表,这些条目定义在系统启动时将在何处以及如何挂载文件系统。
要在Linux 系统启动时自动挂载CIFS Windows共享目录,请在/etc/fstab
文件中定义挂载信息。
此行必须包含Windows主机名或IP地址,共享目录名称以及Linux 本地计算机的挂载点。
继续使用你喜欢文本编辑器打开文件/etc/fstab
,我们还是vim编辑文件并将以下行添加到文件/etc/fstab
。
完成编辑后,保存文件并退出vim。运行mount命令挂载Windows共享目录。
mount
命令将会读取/etc/fstab
内容并挂载Windows 共享目录。当下次重新启动Linux系统时,Windows共享目录将会被自动挂载。
sudo vim /etc/fstab
sudo mount /mnt/win_share
# <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
卸载 Windows共享目录
umount
命令可以从目录树中卸载已挂载的文件系统。要卸载已挂载的Windows共享目录。请运行umount
命令,后跟已挂载的Windows共享的目录或挂载点。
如果/etc/fstab
文件中配置自动挂载Windows共享,请将其删除或者在该行的开头添加#
注释掉。
例如本教程示例,可以运行命令sudo umount /mnt/win_share卸载CIFS Windows共享目录。
sudo umount /mnt/win_share
如果你在卸载Windows共享时,遇到文件系统繁忙或者其它进程访问着Windows共享。你可能需要找到哪些进程正在访问Windows共享。
命令fuser -m MOUNT_POINT
可帮助我们找到正在访问Windows共享目录的进程,MOUNT_POINT
是挂载点。
在本教程示例挂载点是/mnt/win_share
,则fuser查找进程的命令是fuser -m /var/backups
。
fuser -m /var/backups
找到正在访问NFS共享目录的进程后,可以使用kill
命令将其终止,然后卸载Windows共享。
如果仍然存在卸载的问题,请使用umount命令的-l
/--lazy
选项,该选项可让您在文件系统不再繁忙后立即将其卸载。
如果无法访问远程Windows共享,请使用-f
/--force
选项强制卸载。通常,使用强制选项不是一个好主意,因为它可能会损坏文件系统的数据。
sudo umount -f MOUNT_POINT
sudo umount -l MOUNT_POINT
结论
在Linux可以使用mount
命令Windows共享。如果您有任何问题或反馈,请随时发表评论。