从命令行初始化Firefox配置文件


4

我正在尝试使用根CA配置Vagrant框并将其安装在Firefox中。我已经发现我可以使用安装证书,certutil但问题是它需要一个现有的Firefox配置文件来添加证书。

在一个全新的盒子上,配置文件是在Firefox第一次运行时创建的。这是有问题的,因为Firefox在没有显示器的情况下无法正常运行,但可以通过使用该-headless选项来解决。但是这需要手动杀死。由于创建新配置文件需要一些时间,因此需要使用hack sleep。总的来说,我有以下几点:

#!/bin/bash
sudo DEBIAN_FRONTEND=noninteractive apt-get -y install \
     firefox \
     libnss3-tools
# create a new profile
firefox -headless &
sleep 2
kill $!
# install the root CA into all profiles
cert="${HOME}/mycert.cer"
for certDb in $(find ${HOME}/.mozilla* -name "cert8.db"); do
    certDir="$(dirname ${certDb})"
    echo ${certDir}
    certutil -A -n "mycert" -t "TCu,Cuw,Tuw" -i "${cert}" -d "${certDir}"
done

没有使用sleep和有更好的方法kill吗?

Answers:


1

我不做配置,所以这只是一个有根据的猜测:

这可能比你已经做的更糟糕了,但也许它会给你一些想法。

(首先执行第3步。如果它在二进制文件中出现任何匹配,这种方法将无法工作 - 至少,不是没有大量的实验性调整,可能必须使用新版本进行修改。)

1)在另一台计算机(从未安装过Firefox或其他Mozilla内容)上创建一个新的Firefox安装,以用作模板。

不要做任何你不希望所有用户拥有的东西。确保在$ HOME / .mozilla下的任何其他目录中没有任何“有趣” - 比如来自其他应用程序的位,并且在$ HOME / .mozilla / firefox下只创建了一个新的用户配置文件。

复制$ HOME / .mozilla(使用cp -a等)作为模板(简称MT)。

2)在每台新机器上,将MT安装为$ HOME / .mozilla(确保新文件归当前用户和组所有。)这将为每个用户提供相同的配置文件名random-string.default。如果您愿意,只要您还更改profile.ini中指向它的条目,您就可以将其重命名为您喜欢的任何其他内容。

3)这可能会按原样运作。我无法分辨,因为我的个人资料已经过时了很多修改。只想确认一下:

grep -rl template-user-home-directory * | less

在配置文件子目录树中。(您只执行less一次。它将永远或永远不会成为问题。将template-user-home-directory替换为原始计算机上用户目录的实际路径。)

如果它是空的,你就完成了。如果不:

4)从上面输出grep(确保它最终有完整的相对路径)并使用它来循环所有这些文件使用sed -i(或类似工具)将template-user-home-directory替换为当前用户主目录,无论它出现在哪里。

这应该没问题,只要它不会在二进制文件中出现任何匹配。使用二进制文件,所有投注均已关闭。

HTH

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.