移除 macOS 中被企業策略強制安裝的 Chrome 外掛擴充套件的方法
公司配發的 Macbook 安裝了一些監控軟體,畢竟是辦公裝置,這點倒是無可厚非。但是,其中的 Forcepoint DLP Endpoint
會向日常使用的主力瀏覽器 Chrome 中安裝一個 ofollow,noindex" target="_blank"> WebsenEndpoint
的擴充套件外掛。
這個外掛的作用不必多說,但是有一個副作用就是讓 Chrome 無法自動填寫任何網站使用者名稱密碼。每天要輸入上百次的密碼這種體力活是絕對不能忍受的。於是嘗試解除安裝這個外掛。但是這個外掛是使用企業策略 (Installed by enterprise policy) 強制安裝,無法在Chrome中下載。但是可以通過將與之關聯的 Profile 刪除實現解除安裝的作用:
但是過兩天,Forcepoint 又會把這個外掛裝回來:joy: 不過沒關係,我們有的是辦法。
方法一:通過佔用 Chrome 外掛檔案位置,防止真正外掛重新裝回
原理是這樣的:Chrome 的外掛安裝在 ~/Library/Application Support/Google/Chrome/Default/Extensions
目錄下:
除去 Temp
, 每個資料夾對應一個外掛。我們希望移除的外掛的資料夾名稱是 kmofofmjgmakbbmngpgmehldlaaafnjn
。由於 macOS 資料夾下,相同名稱的檔案和資料夾只能存在一個。因此,我們只需要在外掛刪除以後,在這個目錄下新建一個名稱為 kmofofmjgmakbbmngpgmehldlaaafnjn
的空檔案:
cd ~/Library/Application\ Support/Google/Chrome/Default/Extensions touch kmofofmjgmakbbmngpgmehldlaaafnjn chmod 000 kmofofmjgmakbbmngpgmehldlaaafnjn
然後,再通過檔案系統的 Lock
功能鎖定改檔案,防止該檔案被 Forcpoint 刪除:
至此,大功告成,so easy!
方法二:修改 Forcepoint DLP Endpoint
外掛安裝指令碼,禁止強姦 Chrome
法一雖然可以防止Chrome被重新安裝外掛,但是過幾天以後,你會在你的 Profiles
配置下發現,雖然 Chrome 外掛安裝失敗了,但是依然會成功安裝這個 Profile
:
雖然不會干擾系統的任何功能,但是估計很多強迫症患者看到這個還是挺難受的……從圖中我們可以看到,這個外掛的路徑在 /Library/Application Support/Websense Endpoint/DLP
:
其中 setup_chrome_ext.sh
就是強插 Chrome 的指令碼:
#!/bin/bash CUT="/usr/bin/cut" LSOF="/usr/sbin/lsof" PS="/bin/ps" PROFILES="/usr/bin/profiles" GREP="/usr/bin/grep" PIDS=`$PS -axc -o pid,command | $GREP "Google Chrome" | $GREP -v "Google Chrome Helper" | $CUT -c 1-5` LIBWEP_HOOKED=0 if [ ${#PIDS[@]} -gt 0 ] then for pid in $PIDS do CNT=`lsof -P -T -p $pid | grep libwep_chrome.dylib | wc -l` if [ $CNT == 1 ] then LIBWEP_HOOKED=1 fi done fi if [ $LIBWEP_HOOKED == 1 ] then echo "Configuring the chrome extension profile..." $PROFILES -I -F "/Library/Application Support/Websense Endpoint/DLP/WebsenseEndpointExtension.config" fi
指令碼寫得簡單粗暴:通過 $PROFILES -I -F "/Library/Application Support/Websense Endpoint/DLP/WebsenseEndpointExtension.config"
向系統強行安裝 profile. 要防止其安裝外掛,把這行程式碼刪除即可。但是,這個檔案是屬於 admin
使用者組的,我們平時使用的賬號,即使集合 sudo
也只是 wheel
使用者組,是幹不過 admin
的,導致我們無法在正常模式下編輯該檔案:
╭─[email protected] /Library/Application Support/Websense Endpoint/DLP ‹ruby-2.3.1› ╰─➤ ll total 8800 drwxr-xr-x 2 root admin 68B Aug 17 08:43 Contained File -rw-r--r-- 1 root admin 2.9M Oct 20 10:39 DLPClient.log -rw-r--r-- 1 root admin 988B Oct 20 22:22 DLPClient.plist -rw-r--r-- 1 root admin 13K Oct 18 17:50 DLPClientConfig.hsw -rw-r--r-- 1 root admin 412B Jun 5 05:52 DLPClientConfig.hsw.default -rwxr-xr-x 1 root admin 112K Jun 5 05:51 DLPHelperService drwxr-xr-x 3 root admin 102B Aug 13 16:14 Websense Endpoint Helper.app drwxr-xr-x 3 root wheel 102B Jun 5 05:52 WebsenseEndpointDLP.kext -rw-r--r-- 1 root admin 1.5K Oct 18 17:50 WebsenseEndpointExtension.config -rw-r--r-- 1 root admin 11K Jun 5 05:51 WebsenseEndpointExtension.crx srwxrwxrwx 1 liudanking admin 0B Sep 25 16:31 cmdsrvdh.sock.501 srwxrwxrwx 1 dan admin 0B Aug 10 11:10 cmdsrvdh.sock.502 srwxrwxrwx 1 root admin 0B Sep 20 09:28 dlpcmd.sock -rw-r--r-- 1 root admin 12K Oct 18 17:50 dser_msg_template.xml -rw-r--r-- 1 root admin 84B May 31 17:19 enable_cext -rwxr-xr-x 1 root admin 137K Jun 5 05:52 libCodeSignFlag.dylib srwxrwxrwx 1 liudanking admin 0B Sep 25 16:31 promptsrv.sock.501 srwxrwxrwx 1 dan admin 0B Aug 10 11:10 promptsrv.sock.502 -rwxr-xr-x 1 root wheel 650B Jun 5 05:51 setup_chrome_ext.sh -rw-r--r-- 1 root admin 322B Jun 5 05:51 update.xml -rwxr-xr-x 1 root admin 1.0M Jun 5 05:51 wsdlpd -rw-r--r-- 1 root admin 17K Jun 5 05:51 {c748f1fa-f022-428c-9276-8dff4b830d33}.xpi
因此,我們需要通過 Command (⌘)-R
重啟到恢復模式,然後在 /Volumes/mac.os/Library/Application Support/Websense Endpoint/DLP
目錄下,將對應程式碼刪除即可。
至此,自己基本滿意了
後記
稍微瀏覽了一下 /Library/Application Support/Websense Endpoint
資料夾,發現其實這個軟體不僅強插 Chrome, 還會強插 FireFox:
─[email protected] /Library/Application Support/Websense Endpoint ‹ruby-2.3.1› ╰─➤ sudo cat ff_config.sh Password: #!/bin/bash TARGETDIR=/Library/Application\ Support/Websense\ Endpoint FIREFOX_DEFAULT_PATH=/Applications/Firefox.app/Contents/Resources FIREFOX_APP_PATH=/Applications/Firefox.app/Contents/MacOS/firefox FIREFOX_WEBEX_PATH=/Applications/Firefox.app/Contents/Resources/browser/extensions FP_FFCFG=fp_firefox.cfg FP_LSET=local-settings.js FP_WEBEX_XPI={c748f1fa-f022-428c-9276-8dff4b830d33}.xpi DLP_PATH=/Library/Application\ Support/Websense\ Endpoint/DLP PXY_PATH=/Library/Application\ Support/Websense\ Endpoint/Proxy if [ -d "$DLP_PATH" ] then DLP_IS_INSTALLED=1 else DLP_IS_INSTALLED=0 fi if [ -d "$PXY_PATH" ] then PROXY_IS_INSTALLED=1 else PROXY_IS_INSTALLED=0 fi CMD=$1 START_ALL=0 STOP_ALL=0 if [ $CMD -eq "1" ] then START_ALL=1 fi if [ $CMD -eq "2" ] then STOP_ALL=1 fi ############################################################################# # Do start stuff ############################################################################# # Determine whether or not Forcepoint Firefox CFG file (fp_firefox.cfg) is installed if [ -d "$FIREFOX_DEFAULT_PATH" -a -f "$FIREFOX_APP_PATH" ] then FIREFOX_WAS_INSTALLED=1 else FIREFOX_WAS_INSTALLED=0 fi if [ $FIREFOX_WAS_INSTALLED -eq 1 ] then # If starting Proxy or DLP and neither is installed, erase ff cfg file and start it anew if [ $START_ALL -eq 1 ] then rm -rf "$FIREFOX_DEFAULT_PATH/$FP_FFCFG" if [ $PROXY_IS_INSTALLED -eq 1 ] then echo "//" >> "$FIREFOX_DEFAULT_PATH/$FP_FFCFG" echo "lockPref(\"network.proxy.type\", 2);" >> "$FIREFOX_DEFAULT_PATH/$FP_FFCFG" echo "lockPref(\"network.captive-portal-service.enabled\", false);" >> "$FIREFOX_DEFAULT_PATH/$FP_FFCFG" fi if [ $DLP_IS_INSTALLED -eq 1 ] then echo "//" >> "$FIREFOX_DEFAULT_PATH/$FP_FFCFG" echo "defaultPref(\"extensions.autoDisableScopes\", 0);" >> "$FIREFOX_DEFAULT_PATH/$FP_FFCFG" echo "defaultPref(\"extensions.enabledScopes\", 15);" >> "$FIREFOX_DEFAULT_PATH/$FP_FFCFG" mkdir -p "$FIREFOX_WEBEX_PATH" cp -f "$DLP_PATH/$FP_WEBEX_XPI" "$FIREFOX_WEBEX_PATH/$FP_WEBEX_XPI" chmod 644 "$FIREFOX_WEBEX_PATH/$FP_WEBEX_XPI" else # Remove Firefox .xpi file rm -rf "$FIREFOX_WEBEX_PATH/$FP_WEBEX_XPI" rm -rf "$DLP_PATH/*.xpi" fi if [ $PROXY_IS_INSTALLED -eq 1 -o $DLP_IS_INSTALLED -eq 1 ] then cp -f "$TARGETDIR/$FP_LSET" "$FIREFOX_DEFAULT_PATH/defaults/pref" chmod 644 "$FIREFOX_DEFAULT_PATH/defaults/pref/$FP_LSET" fi fi if [ $STOP_ALL -eq 1 ] then rm -rf "$FIREFOX_DEFAULT_PATH/$FP_FFCFG" rm -rf "$FIREFOX_DEFAULT_PATH/defaults/pref/$FP_LSET" rm -rf "$FIREFOX_WEBEX_PATH/$FP_WEBEX_XPI" fi fi
艾瑪……proxy…嚇死寶寶了,已經不想改指令碼了。直接在恢復模式下刪除檔案,然後用方法一的方法,建了一個 Lock
檔案鎖定這個位置。什麼,還有 upgrade.sh
? 你怎麼不上天呢,也一併刪除了……突然想起,自己在無所不能的恢復模式下,要不整個軟體一起刪除了?想到隔天IT技術小哥可能過來找麻煩,就此打住吧:joy:
–EOF–