diff --git a/src/ubuntu/install/firefox/install_firefox.sh b/src/ubuntu/install/firefox/install_firefox.sh index a1adabf..10d63be 100644 --- a/src/ubuntu/install/firefox/install_firefox.sh +++ b/src/ubuntu/install/firefox/install_firefox.sh @@ -152,10 +152,21 @@ pref("browser.aboutwelcome.enabled", false); EOF fi +# Firefox 147+ introduced XDG base dir support, so profile paths will vary and need to be handled appropriately +FIREFOX_VERSION=$(firefox --version | awk '{print $3}') +FIREFOX_MAJOR=$(echo "$FIREFOX_VERSION" | cut -d. -f1) +if [ "${FIREFOX_MAJOR:-0}" -ge 147 ]; then + FIREFOX_PROFILE_BASE="$HOME/.config/mozilla/firefox" +else + FIREFOX_PROFILE_BASE="$HOME/.mozilla/firefox" +fi +FIREFOX_PROFILE_PATH="$FIREFOX_PROFILE_BASE/kasm" +FIREFOX_PROFILES_INI="$FIREFOX_PROFILE_BASE/profiles.ini" + if [[ "${DISTRO}" == @(oracle8|rockylinux9|rockylinux8|oracle9|rhel9|almalinux9|almalinux8|opensuse|fedora39|fedora40|fedora41) ]]; then # Creating a default profile chown -R root:root $HOME - firefox -headless -CreateProfile "kasm $HOME/.mozilla/firefox/kasm" + firefox -headless -CreateProfile "kasm $FIREFOX_PROFILE_PATH" # Generate a certdb to be detected on squid start HOME=/root firefox --headless & mkdir -p /root/.mozilla @@ -168,23 +179,24 @@ if [[ "${DISTRO}" == @(oracle8|rockylinux9|rockylinux8|oracle9|rhel9|almalinux9| sleep 2 kill $(pgrep firefox) CERTDIR=$(dirname ${CERTDB}) - mv ${CERTDB} $HOME/.mozilla/firefox/kasm/ + mv ${CERTDB} $FIREFOX_PROFILE_PATH/ rm -Rf /root/.mozilla else # Creating Default Profile chown -R 0:0 $HOME - firefox -headless -CreateProfile "kasm $HOME/.mozilla/firefox/kasm" + firefox -headless -CreateProfile "kasm $FIREFOX_PROFILE_PATH" fi # Silence Firefox security nag "Some of Firefox's features may offer less protection on your current operating system". -echo 'user_pref("security.sandbox.warn_unprivileged_namespaces", false);' > $HOME/.mozilla/firefox/kasm/user.js -chown 1000:1000 $HOME/.mozilla/firefox/kasm/user.js +mkdir -p "$FIREFOX_PROFILE_PATH" +echo 'user_pref("security.sandbox.warn_unprivileged_namespaces", false);' > "$FIREFOX_PROFILE_PATH/user.js" +chown 1000:1000 "$FIREFOX_PROFILE_PATH/user.js" # configure smartcard support # note: some firefox versions don't read from the global pkcs11.txt when creating profiles if [[ ${KASM_SVC_SMARTCARD:-1} == 1 ]] && [ -f "$HOME/.pki/nssdb/pkcs11.txt" ]; then - cp $HOME/.pki/nssdb/pkcs11.txt $HOME/.mozilla/firefox/kasm/pkcs11.txt - chown 1000:1000 $HOME/.mozilla/firefox/kasm/pkcs11.txt + cp "$HOME/.pki/nssdb/pkcs11.txt" "$FIREFOX_PROFILE_PATH/pkcs11.txt" + chown 1000:1000 "$FIREFOX_PROFILE_PATH/pkcs11.txt" fi if [[ "${DISTRO}" == @(oracle8|rockylinux9|rockylinux8|oracle9|rhel9|almalinux9|almalinux8|opensuse|fedora39|fedora40|fedora41) ]]; then @@ -195,33 +207,33 @@ fi # based off the installation path. Because that path will be static for our deployments we can assume the hash # and thus assign our profile to the default for the installation if grep -q "ID=kali" /etc/os-release; then -cat >>$HOME/.mozilla/firefox/profiles.ini <>$FIREFOX_PROFILES_INI <>$HOME/.mozilla/firefox/profiles.ini <>$FIREFOX_PROFILES_INI <>$HOME/.mozilla/firefox/profiles.ini <>$FIREFOX_PROFILES_INI <>$HOME/.mozilla/firefox/profiles.ini <>$FIREFOX_PROFILES_INI <>$HOME/.mozilla/firefox/profiles.ini <>$FIREFOX_PROFILES_INI <