为什么 if-up.d 中的脚本无法挂载我的 samba 共享?

为什么 if-up.d 中的脚本无法挂载我的 samba 共享?

我有一个条目/etc/fstab可以安装 Windows 共享

//192.168.178.4/files   /media/share/d   cifs   credentials=/home/arnold/.credentials,rw,dir_mode=0777,file_mode=0777   0 0

在启动/登录期间未安装。当我登录时,我看到共享未安装,但之后sudo mount -a它已安装。在mint 论坛有人建议网络没有启动并运行。在/etc/network/if-up.d/fstab(或其他名称) 中创建一个脚本可以解决问题。事实上,此目录旨在用于此类脚本。非常好的建议。我创建了脚本,但遗憾的是它不起作用。我添加了一些日志记录语句,脚本内容如下:

#!/bin/sh
date +"%m/%d/%Y %H:%M:%S $HOSTNAME fstab before mounting" >>/var/log/fstab.log
#mount -av >>/var/log/fstab.log
date +"%m/%d/%Y %H:%M:%S $HOSTNAME fstab mount executed" >>/var/log/fstab.log
echo " " >>/var/log/fstab.log

该脚本是可执行的,所有者是 root。当我登录后执行脚本时,共享已正确挂载。我确保日志文件为空,并在登录后直接复制它,其中显示:

01/03/2017 09:55:45  before mounting
/                        : ignored
/data                    : already mounted
/home                    : already mounted
none                     : ignored
01/03/2017 09:55:45  mount executed

01/03/2017 09:55:45  before mounting
/                        : ignored
/data                    : already mounted
/home                    : already mounted
none                     : ignored
01/03/2017 09:55:45  mount executed

01/03/2017 09:55:51  before mounting
/                        : ignored
/data                    : already mounted
/home                    : already mounted
none                     : ignored
01/03/2017 09:55:51  mount executed

它执行三次(每个网络接口一次?)。下次运行时,sudo mount -av我得到:

/                        : ignored
/data                    : already mounted
/home                    : already mounted
none                     : ignored
/media/share/d           : successfully mounted

通过比较这两个日志您可以看到,在启动期间没有(可见的)尝试通过 mount 挂载网络共享。

我确实在 Linux 论坛上收到了很多关于解决方法的优秀建议,但没有一个能回答为什么脚本的if-up.d行为如此奇怪,而且我没有解决方案可以从终端给我一个挂载的共享(虽然可以通过文件浏览器访问)。我有以下问题:

  • if-up.d安装文件共享的地方吗?
  • 如果是这样,那么它在我的系统上不起作用的原因是什么(我做错了什么?)
  • 如果没有,那么通常去哪里购买这些坐骑?

我是 Linux 新手,我将这个问题视为 Linux 的速成课程 :-),但如果我不能立即理解建议,请耐心等待。

使用带有 mate 的 mint 18.1,服务器是具有最新固件的 QNAP NAS。

编辑我在日志中寻找提到安装此共享的位置,然后我发现了一些条目/var/log/syslog

Jan  3 09:19:53 lassus systemd[1]: Started Network Manager Wait Online.
Jan  3 09:19:53 lassus systemd[1]: Reached target Network is Online.
Jan  3 09:19:53 lassus systemd[1]: Mounting /media/share/d...
Jan  3 09:19:53 lassus systemd[1]: Starting /etc/rc.local Compatibility...
Jan  3 09:19:53 lassus mount[1301]: error 2 (No such file or directory) opening credential file /home/arnold/.credentials
Jan  3 09:19:53 lassus systemd[1]: media-share-d.mount: Mount process exited, code=exited status=2
Jan  3 09:19:53 lassus systemd[1]: Failed to mount /media/share/d.
Jan  3 09:19:53 lassus systemd[1]: Dependency failed for Remote File Systems.
Jan  3 09:19:53 lassus systemd[1]: remote-fs.target: Job remote-fs.target/start failed with result 'dependency'.
Jan  3 09:19:53 lassus systemd[1]: media-share-d.mount: Unit entered failed state.

凭证文件确实存在。我将所有者从我自己改为 root,但这也无济于事。

答案1

我收集这些评论作为答案,以防有人遇到同样的情况或有更好的知识来改进信息。

您注意到的行为似乎是由于在尝试挂载 Samba 共享时mount无法访问凭据文件而导致的。

但是凭证文件存在,并且可以被读取mount,所以问题似乎是/home在需要时分区不可用(未安装)。

将凭证文件移动到/分区内的某个位置(/etc例如内部)可以解决问题。

答案2

以 root 身份使用 crontab:

@reboot until /usr/bin/fping -q 192.168.178.4; do sleep 1;done && /bin/mount -av

相关内容