在笔记本电脑上自动安装CIFS共享


8

我曾经在几个变体中看到过与此问题类似的问题,但是我还没有找到满意的答案。

这是我所拥有的:

  • 高移动性的Debian笔记本电脑,可经常切换网络。
  • 家里有一台CIFS共享的FreeNAS服务器。

这就是我想要的:

  • 如果我在家时访问CIFS共享目录,请自动挂载CIFS共享。
  • 如果我在其他地方访问CIFS共享时,请立即返回错误(即,在确定NAS不存在之前,请不要考虑网络五分钟)。
  • 当我挂起或休眠计算机时,请干净地卸载共享,以使当计算机再次唤醒时,挂载不会指向稀薄的空气。如果无法完全卸载共享(进程正在使用目录),请执行以下任一操作:
    • 中止暂停/休眠状态,并告诉我谁在山上露营;要么
    • 无论如何都要强制卸载,然后继续挂起/休眠。
  • 额外信用:当网络连接断开(拔下插头或失去与WAP的关联)时,请尝试完全卸载共享。
  • 额外信用:此魔术应该独立于所使用的网络管理器。

我读过的各种选项似乎都不适合:

  • autofs 似乎是可靠的,但似乎对暂停/休眠没有任何了解。
  • _netdev选件mount/etc/fstab看起来很有趣,但似乎只适用于NFS共享。
  • 我还没能gvfs上班,但是那时我还没有很努力。

有关如何处理此问题的任何建议?

附录:

这是到目前为止我做的简短的版本。我安装了autofs,并编写了一个小的Shell脚本来强制使所有自动安装的卷过期,每当网络接口出现故障时,该卷就会被调用。

我为CIFS服务器创建了一个自动安装程序映射,其凭据存储在一个外部文件中(yuck)。然后,我编写了以下shell脚本:

#!/bin/sh -e

# Expire everything in the automounter.
if [ -f /var/run/autofs.pid ]; then
    kill -USR1 "$(cat /var/run/autofs.pid)"
fi

将USR1信号发送到自动挂载守护程序会使它强制使所有未使用的挂载失效。然后/etc/network/if-down.d/autofs,我将这个脚本放入其中,并在其中添加一个软链接/etc/network/if-post-down.d/autofs。连接断开时,NetworkManager会调用后一个目录中的所有脚本,因此应卸载所有自动挂载的文件系统。

但是,我对此安排并不满意。首先,autofs不区分自动装入的卷,并且在接收到USR1时将卸载所有不活动的卷,包括非网络卷,这是很费力的。

此外,CIFS服务器的登录密码必须存储在文件中。我非常希望得到提示。

无论如何,到目前为止,这就是我一直坚持的目标。它可以工作,但是我很乐意使用更好的东西...


您可能需要看一下Gigolo工具:uvena.de/gigolo/index.html。我用它来管理家庭中SMB挂载的重建并在笔记本电脑上工作。
slm

@slm:Gigolo看起来很有趣,但是似乎没有改变挂载选项的方法。结果,共享以所谓的“哑FAT”模式出现,该模式下所有文件和目录的权限均为0700。相比之下,使用相同的共享装入会sudo mount -t cifs ...产生更好的结果。我会再摆弄一些,但我认为Gigolo并不是我想要的。
ewhac 2013年

Answers:


2

如果使用NetworkManager,则可以编写在出现或关闭的网络接口上执行的脚本。

NetworkManager将根据字母顺序在/etc/NetworkManager/dispatcher.d目录中执行脚本,以响应网络事件。每个脚本应该是(a)常规文件,(b)由root拥有,(c)不能由组或其他用户写,(d)不可set-uid,(e)可由所有者执行。每个脚本都接收两个参数,第一个是刚激活的设备的接口名称,第二个是动作。

从例如搜索域中检测您自己的网络,然后在接口联机时挂载或卸载:

#!/bin/bash
#/etc/NetworkManager/dispatcher.d/mount-my-cifs    
case "$2" in
  up)
    # some logic to detect if we're at home
    grep "search myhome.local" /etc/resolv.conf
    if [ "$?" != "0" ] ; then 
       exit
    else 
       mount /mnt/cifs
    fi
    ;;
  down)
       umount /mnt/cifs
    ;;
esac

上面的假设假定/etc/fstab使用noauto选项定义了cifs安装
HBruijn 2013年

请将该假设添加到答案中。
流血的手指
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.