如何在 Linux 上永久挂载一个 Windows 共享

微信扫一扫,分享到朋友圈

如何在 Linux 上永久挂载一个 Windows 共享
收藏 0 6

如果你已经厌倦了每次重启 Linux 就得重新挂载 Windows 共享,读读这个让共享永久挂载的简单方法。

图片: Jack Wallen

在 Linux 上和一个 Windows 网络进行交互从来就不是件轻松的事情。想想多少企业正在采用 Linux,需要在这两个平台上彼此协作。幸运的是,有了一些工具的帮助,你可以轻松地将 Windows 网络驱动器映射到一台 Linux 机器上,甚至可以确保在重启 Linux 机器之后共享还在。

在我们开始之前

要实现这个,你需要用到命令行。过程十分简单,但你需要编辑 /etc/fstab 文件,所以小心操作。还有,我假设你已经让 Samba 正常工作了,可以手动从 Windows 网络挂载共享到你的 Linux 机器,还知道这个共享的主机 IP 地址。

准备好了吗?那就开始吧。

创建你的挂载点

我们要做的第一件事是创建一个文件夹,他将作为共享的挂载点。为了简单起见,我们将这个文件夹命名为 share,放在 /media 之下。打开你的终端执行以下命令:

sudo mkdir /media/share

安装一些软件

现在我们得安装允许跨平台文件共享的系统;这个系统是 cifs-utils。在终端窗口输入:

sudo apt-get install cifs-utils

这个命令同时还会安装 cifs-utils 所有的依赖。

安装完成之后,打开文件 /etc/nsswitch.conf 并找到这一行:

hosts: files mdns4_minimal [NOTFOUND=return] dns

编辑这一行,让它看起来像这样:

hosts: files mdns4_minimal [NOTFOUND=return] wins dns

现在你需要安装 windbind 让你的 Linux 机器可以在 DHCP 网络中解析 Windows 机器名。在终端里执行:

sudo apt-get install libnss-windbind windbind

用这个命令重启网络服务:

sudo service networking restart

挂载网络驱动器

现在我们要映射网络驱动器。这里我们必须编辑 /etc/fstab 文件。在你做第一次编辑之前,用这个命令备份以下这个文件:

sudo cp /etc/fstab /etc/fstab.old

如果你需要恢复这个文件,执行以下命令:

sudo mv /etc/fstab.old /etc/fstab

在你的主目录创建一个认证信息文件 .smbcredentials。在这个文件里添加你的用户名和密码,就像这样(USER 和 PASSWORD 替换为实际的用户名和密码):

username=USER

password=PASSWORD

你需要知道挂载这个驱动器的用户的组 ID(GID)和用户 ID(UID)。执行命令:

id USER

USER 是你的实际用户名,你应该会看到类似这样的信息:

uid=1000(USER) gid=1000(GROUP)

USER 是实际的用户名,GROUP 是组名。在(USER)和(GROUP)之前的数字将会被用在 /etc/fstab 文件之中。

是时候编辑 /etc/fstab 文件了。在你的编辑器中打开那个文件并添加下面这行到文件末尾(替换以下全大写字段以及远程机器的 IP 地址):

//192.168.1.10/SHARE /media/share cifs credentials=/home/USER/.smbcredentials,iocharset=uft8,gid=GID,udi=UID,file_mode=0777,dir_mode=0777 0 0

注意:上面这些内容应该在同一行上。

保存并关闭那个文件。执行 sudo mount -a 命令,共享就会挂载上。看看一下 /media/share,你应该能看到那个网络共享上的文件和文件夹了。

共享很简单

有了 cifs-utils 和 Samba,映射网络共享在一台 Linux 机器上简单得让人难以置信。现在,你再也不用在每次机器启动的时候手动重新挂载那些共享了。


via: http://www.techrepublic.com/article/how-to-permanently-mount-a-windows-share-on-linux/

作者:Jack Wallen 译者:alim0x 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

上一篇

用树莓派计算模块搭建的工业单板计算机

下一篇

Linux 下的最佳云存储服务

6 条评论

  1. 我还是个菜鸟,这个共享是啥意思啊?

  2. 远程共享磁盘。

  3. 用這種方法至少在虛擬機會存在一個問題. 如果宿主幾從休眠中恢復, 而之前虛擬機沒有關閉或休眠,  那麼那個共享會存在一定機率無法訪問, 任何要訪問該共享的進程都會處於 uninterruptible sleep 狀態, 直至主管 cifs 協議的兩個系統線程超時爲止.

  4. 解決方法是一旦發現訪問共享沒有相應, 需要立即 kill 掉兩個 cifs 線程, 否則只有等超時結束. 到了 Linux 4.x 內核, 這個問題似乎有所緩解. 爲此我專門寫了一個腳本, 並結合 sudo 來快速 kill 掉 cisf 線程, 然後 remount.

  5. cat /usr/local/bin/_remount-pub-folder

    #!/bin/bash

    export PATH=$PAHT:/bin:/usr/bin:/sbin

    id --user | grep --quiet '0'

    [ $? -ne 0 ] && exit 1

    kill -kill $(ps --user my --no-headers --format state,pid

                    | grep D | awk '{print $NF}')

    umount --lazy ~my/smb

    kill -kill $(ps -C cifsiod --no-headers --format pid) &> /nul

    mount --all

    if [ $? -eq 0 ]; then

            exit 0

    else

            exit 2

    fi

    grep 'remount' /etc/sudoers.d/my

    %my ALL=(root) NOPASSWD: /bin/bash -c _remount-pub-folder

    gre

  6. grep 'remount' ~/.bashrc

    alias remount-pub-folder='sudo bash -c _remount-pub-folder'

发表评论

插入图片

最新评论

返回顶部