自动执行需要用户输入的挂载操作

自动执行需要用户输入的挂载操作

我想在启动时挂载文件服务器上的目录。这是我的/etc/fstab入口:

# mount the fileserver
https://fsrv.company/ /mnt/fileserver davfs user,auto 0 0

手动安装它mount /mnt/fileserver没问题。但是,由于证书过期,它会发出一个提示,我总是必须回答是:

/sbin/mount.davfs: the server certificate does not match the server name
/sbin/mount.davfs: the server certificate is not trusted
[...]
Accept certificate for this session? [y,N] y

启动 Ubuntu 时应该会安装此设备(由于该auto选项)。但是,该设备未安装,可能是因为需要输入。文件服务器的所有者不会更新其证书。

我怎样才能自动化这个过程,使得设备在启动时安装并且答案始终是y\n

编辑:我确实下载了证书并将其放在.davfs2/证书/并编辑了.davfs2/davfs2.conf(正如@Oli 在下面暗示的那样),但交互式输入仍然存在。

答案1

在我的例子中,我使用了突出显示的代码奥利然后使用信任服务器证书dav2fs 配置中的选项。

当服务器的证书无法验证或者甚至无效,但您知道可以信任该证书时很有用。

因此,编辑/etc/davfs2/davfs2.conf并添加如下所示的行:

trust_server_cert        /etc/davfs2/certs/my.selfsigned.cert.pem

即使证书主机不匹配,这也允许我安装自签名的 OwnCloud webdav。

答案2

修复信任问题并安装证书不是更容易吗?

  1. 下载证书(感谢elec3647 关于超级用户

    openssl s_client -connect HOSTNAME:443 -showcerts </dev/null 2>/dev/null | openssl x509 -outform PEM > certificate.pem
    
  2. 将证书复制到/etc/davfs2/certs/

    sudo cp certificate.pem /etc/davfs2/certs/
    

这应该可以直接解决问题。

答案3

解决此问题的正确方法是更改​​服务器证书的 CN(身份)以将其设置为您的域(在本例中fsrv.company)。

但是,您可以通过 ghetto 方式解决这个问题,在启动时添加一个命令(在 Ubuntu 上例如是启动应用程序),以下命令:

echo y | mount /mnt/fileserver

这基本上会为您“自动接受”证书中的错误。

答案4

对于那些在 Google 上找到此页面并需要其他答案的人。适用于 RHEL。这不是处理此问题的最佳方法。

#!/bin/bash

/usr/bin/expect -c "
spawn /bin/mount -t davfs https://fsrv.company/ /mnt/fileserver
expect \"You only should accept this certificate\" { send \"y\n\" }
expect eof
"

以上对证书问题的回答是“是”。我尝试了expect几种不同的方法,这是唯一能让我expect回答“是”的方法。

相关内容