autofs 和 WebDAV - 如何让它们一起工作?

Dan*_*iel 2 automount webdav autofs 16.04

我使用占位符来表示真实的服务器名称和文件夹,但是,我已尝试使它们尽可能代表真实名称,因此请注意我的大小写和标点符号,以防万一与我的问题有关。

我正在运行Ubuntu 16.04
我已经安装了autofsdavfs2

以下命令挂载成功:

mount -t davfs https://servername.mydomain.com:3333/Shared.Folder /testmount
Run Code Online (Sandbox Code Playgroud)

它要求我输入用户名和密码,username@mydomain.com然后myypassword就可以成功安装。

这告诉我几件事:

  1. 我的 WebDAV 服务器正在运行并且配置正确。
  2. HTTPS 工作正常。
  3. 我的凭据已成功验证。

所以现在我试图让它与autofs一起工作。

这是我的文件:

/etc/auto.master

/Server.mount /etc/auto.Servername.mount
Run Code Online (Sandbox Code Playgroud)

/etc/auto.服务器名称.mount

storage-folder -fstype=davfs,ro :https://servername.mydomain.com:3333/Shared.Folder
Run Code Online (Sandbox Code Playgroud)

/etc/davfs2/秘密

https://servername.mydomain.com:3333/Shared.Folder username@domain.com mypassword
Run Code Online (Sandbox Code Playgroud)

通过此设置,如果我尝试浏览到/Servername.mount/storage-folder,我会得到一个No such file or directory error.

现在我 95% 确定我的问题是语法错误或身份验证错误。在网络上找不到很多基于 WebDAV 的 autofs 实现的示例,其中一些显示了冲突的语法。尽管如此,我已经尝试了我能想到的一切。

我认为文件中的冒号可能auto.Servername.mount会搞砸解析,所以我尝试了以下所有组合:

storage-folder -fstype=davfs,ro https://servername.mydomain.com:3333/Shared.Folder
storage-folder -fstype=davfs,ro https\://servername.mydomain.com\:3333/Shared.Folder
storage-folder -fstype=davfs,ro :https\://servername.mydomain.com\:3333/Shared.Folder
storage-folder -fstype=davfs,ro https\://servername.mydomain.com\:3333:/Shared.Folder
Run Code Online (Sandbox Code Playgroud)

如果这不是导致问题的原因,那么我认为这可能与该文件有关secrets。所以我也为我尝试过这个secrets

/Servername.mount/storage-folder username@domain.com mypassword
Run Code Online (Sandbox Code Playgroud)

由于我习惯于使用带有基于 cifs 的 autofs 挂载的凭据文件,因此我也在我的auto.Servername.mount文件中尝试过,只是为了好玩:

storage-folder -fstype=davfs,ro,credentials=/etc/credentials.Servername.mount https://servername.mydomain.com:3333/Shared.Folder
Run Code Online (Sandbox Code Playgroud)

简单地说credentials.Servername.mount

Username=username@mydomain.com  
Password=mypassword  
Run Code Online (Sandbox Code Playgroud)

我还尝试使用“credentials.Servername.mount”:

https://servername.mydomain.com:3333/Shared.Folder username@domain.com mypassword
Run Code Online (Sandbox Code Playgroud)

什么都不起作用。

所以我觉得我在这里缺少一些小但重要的语法或配置。我绝望地来到你身边。任何帮助,将不胜感激!

Dan*_*iel 5

我成功了。

作为参考,这里是一个带有WebDAV设置的工作autofs

安装先决条件

$ sudo apt-get install autofs
$ sudo apt-get install davfs2
Run Code Online (Sandbox Code Playgroud)

/etc/auto.master

/Server.mount /etc/auto.Servername.mount
Run Code Online (Sandbox Code Playgroud)

/etc/auto.服务器名称.mount

storage-folder -fstype=davfs,ro :https\://servername.mydomain.com\:3333/Shared.Folder
Run Code Online (Sandbox Code Playgroud)

注意:根据您的需要将“ro”[只读]更改为“rw”[读写]。

/etc/davfs2/秘密

/Server.mount/storage-folder "username@domain.com" "mypassword"
Run Code Online (Sandbox Code Playgroud)

我是如何修复它的:

我遇到了几个问题。

  1. 我在谷歌结果的第四页上找到了auto.Servername.mount解析问题的“权威”指南: here。所以你确实需要使用反斜杠转义其他冒号。
  2. 我必须打开详细日志记录才能找到我的第二个问题(这非常糟糕)。打开/etc/autofs.conf并找到logging = none的行。取消注释并将none更改为verbose。重新加载 autofs :$ sudo /etc/init.d/autofs reload然后检查/var/log/syslog中的错误(日志文件位置和名称因发行版而异)。
  3. 系统日志告诉我在地图源中找不到关键的“存储文件夹”。 公平地说,我的存储文件夹名称有点长且复杂。但我检查了一遍又一遍,一次又一次地发现它实际上是一个字母拼写错误。所以这是我的第二个问题,在/etc/auto.Servername.mount中,我实际上编写了类似storage-foldr而不是storage-folder 的内容,所以显然当我尝试访问/Servername.mount/storage-folder时,它不是在配置文件中查找对此的任何引用。
  4. 修复此问题后,详细日志记录给了我下一个线索,因为它现在显示错误Could not verify to server:rejected Basicchallenge。所以这告诉我现在遇到了身份验证错误。我打开/etc/davfs2/secrets并开始四处查看,这次我实际上是 RTFM,因为答案就在秘密文件中包含的文档中。它准确地说明了哪些字符需要用反斜杠转义,事实证明我的用户名中的@不是问题,但我的密码中确实有一个有问题的字符!事实证明,将密码放在引号中是解决该问题的另一种更简单的方法,并且我也将 username@domain 放在引号中只是为了更好的措施。

现在一切正常了!