我在工作中运行了多台 Ubuntu 20.04 桌面虚拟机,每台虚拟机都遇到了一个问题仅有的当用户尝试下载文件时 Firefox。
因此,首先介绍一下我们的 Ubuntu VM 是如何配置的。
虚拟机配置
我们设置的方式是用户启动与 VM 的 RDP 会话。他们通过sssd
守护进程进行身份验证,该守护进程通过 LDAP 将提供的凭据发送到我们的 Active Directory 域。
然后,AD 返回所有用户信息,以便sssd
可以使用适当的 UID、GID、主目录等开始会话。以下是 AD 将返回的信息示例sssd
。
root@server:~# getent passwd pwalker
pwalker:*:123456:40:pwalker:/u/pwalker:/bin/bash
我们在每个用户的 AD 配置文件上配置了一个非标准主目录,这样当用户登录到 Ubuntu VM 时,autofs
守护程序可以自动将网络驱动器文件夹挂载为用户的主目录。
这是一种方便的方法,可以保持 VM 的存储空间较小,同时为用户提供一种将文件从一个 Ubuntu VM 传输到另一个 Ubuntu VM 的简便方法。
以下是 的配置autofs
。
root@server:~# cat /etc/auto.master
+dir:/etc/auto.master.d
/u /etc/auto_home
root@server:~# cat /etc/auto_home
* -rw,intr,nosuid,soft,proto=tcp sannfs:/ifs/userhome/&
以下是一些安装信息,以防根本原因与所使用的选项有关。
sannfs:/ifs/userhome/pwalker on /u/pwalker type nfs (rw,nosuid,relatime,vers=3,rsize=131072,wsize=524288,namlen=255,soft,proto=tcp,timeo=600,retrans=2,sec=sys,mountaddr=xxx.xxx.xxx.xxx,mountvers=3,mountport=300,mountproto=tcp,local_lock=none,addr=xxx.xxx.xxx.xxx)
这是我连接到虚拟机时用户挂载主目录的快照。
pwalker@server:~$ pwd
/u/pwalker
pwalker@server:~$ ls -la
total 1320
drwxrwxrwx 20 pwalker standard 854 Mar 16 07:58 .
drwxr-xr-x 4 root root 0 Mar 16 09:29 ..
-rwxrwxrwx 1 pwalker standard 21 Mar 15 16:51 .bash_aliases
-rwxrwxrwx 1 pwalker standard 1423 Mar 16 08:05 .bash_history
drwxrwxrwx 18 pwalker standard 678 Mar 16 08:12 .cache
drwxrwxrwx 15 pwalker standard 443 Mar 16 08:12 .config
drwxrwxrwx 2 pwalker standard 0 Mar 1 10:58 Desktop
drwxrwxrwx 2 pwalker standard 0 Mar 16 08:14 Documents
drwxrwxrwx 2 pwalker standard 25 Mar 16 09:29 Downloads
-rwxrwxrwx 1 pwalker standard 16 Mar 1 14:33 .esd_auth
drwxrwxrwx 3 pwalker standard 93 Mar 16 08:13 .gnupg
-rwxrwxrwx 1 pwalker standard 322 Mar 15 16:27 .ICEauthority
drwxrwxrwx 3 pwalker standard 23 Mar 1 10:58 .local
drwxrwxrwx 4 pwalker standard 53 Mar 15 16:52 .mozilla
drwxrwxrwx 2 pwalker standard 0 Mar 1 10:58 Music
drwxrwxrwx 2 pwalker standard 0 Mar 1 10:58 Pictures
drwxrwxrwx 3 pwalker standard 23 Mar 15 16:27 .pki
drwxrwxrwx 2 pwalker standard 0 Mar 1 10:58 Public
drwxrwxrwx 2 pwalker standard 0 Mar 10 14:01 .ssh
drwxrwxrwx 2 pwalker standard 0 Mar 1 10:58 Templates
drwxrwxrwx 2 pwalker standard 0 Mar 1 10:58 Videos
drwxrwxrwx 2 pwalker standard 67 Mar 15 16:27 .vnc
-rwxrwxrwx 1 pwalker standard 352 Mar 16 07:35 .Xauthority
-rwxrwxrwx 1 pwalker standard 18835 Mar 10 14:02 .xorgxrdp.12.log
-rwxrwxrwx 1 pwalker standard 4266 Mar 16 07:35 .xsession-errors
观察到的功能
当连接到虚拟机时,我可以使用wget
终端将文件直接下载到我挂载的主目录。
我安装了 Google Chrome 并可以顺利下载文件,并将文件直接保存到我挂载的主目录中。
我可以使用 Firefox 的“右键单击,将图像另存为”功能直接保存图像。
使用来自的测试文件https://filesamples.com,我无法使用 Firefox 的“右键单击,将链接另存为”功能保存文件链接。
我也无法通过单击提供的“下载”按钮来保存文件。
我经常收到的错误信息是
由于您没有适当的权限,因此无法保存文件。请选择其他保存目录。
如果我在已挂载的主目录中选择另一个目录,我会收到相同的错误消息。
如果我选择虚拟机本地的目录(例如/tmp
),则文件会被成功下载。
使用about:memory
Firefox 窗口,我找到了主进程 ID,以确认 Firefox 正在以我的用户/组身份运行(通过检查 的内容cat /proc/###/status
)。我确认确实如此。
提问时间
- 是否有一个 Firefox 调试器可以提供更有用的上下文?
- 当 Firefox 尝试将文件直接保存到网络驱动器时,在虚拟机上本地运行是否存在问题?
- 是否还有其他权限/设置需要我检查?
答案1
问题最终不是出在 Ubuntu 或 Firefox 本身上,我猜这可以从症状中推断出来。
解决方案是解决写入的一些权限问题伊西隆和全球定位系统通过 NFS 共享。存储管理员必须调整一些 Windows ACL(因为我们的团队就是这样控制用户在共享上的读/写权限的)并将Delete subfolders and files
特殊权限添加到 ACL。此权限等同Delete Child
于NFSv4,这显然是 Firefox 所需要的。
管理员表示他也观察到了类似的“ACL 权限”问题:
- CentOS 8:FTP 协议
- CentOS 8:虚拟 Python 环境(virtualenv)
希望这可以帮助其他人找到解决其问题的方法。保持警惕!