Posted on 03-27-2024 07:42 AM
As anyone moved between Josh's LAPS project. And the Jamf implementation of LAPS?
I've found myself in a situation where the former was implemented, and we need to move to a system with vendor support.
I'm trying to find out if it'll continue to work on the existing machines if I switch the install package policy off.
03-27-2024 09:54 AM - edited 03-27-2024 09:55 AM
You can use this script to fully uninstall macOSLAPS and attempt to reset the account's password back to whatever your default in the configuration is. I wrote it up a while back but have not done in-depth testing or production deployment with it yet.
#!/bin/sh
# Variables
## Path to macOSLAPS binary ##
LAPS=/usr/local/laps/macOSLAPS
## Path to Password File ##
PW_FILE="/var/root/Library/Application Support/macOSLAPS-password"
## Local Admin Account ##
LOCAL_ADMIN=$(/usr/bin/defaults read \
"/Library/Managed Preferences/edu.psu.macoslaps.plist" LocalAdminAccount)
defaultPassword=$(/usr/bin/defaults read \
"/Library/Managed Preferences/edu.psu.macoslaps.plist" FirstPass)
# Identify the location of the jamf binary for the jamf_binary variable.
CheckBinary (){
# Identify location of jamf binary.
jamf_binary=`/usr/bin/which jamf`
if [[ "$jamf_binary" == "" ]] && [[ -e "/usr/sbin/jamf" ]] && [[ ! -e "/usr/local/bin/jamf" ]]; then jamf_binary="/usr/sbin/jamf";
elif [[ "$jamf_binary" == "" ]] && [[ ! -e "/usr/sbin/jamf" ]] && [[ -e "/usr/local/bin/jamf" ]]; then jamf_binary="/usr/local/bin/jamf";
elif [[ "$jamf_binary" == "" ]] && [[ -e "/usr/sbin/jamf" ]] && [[ -e "/usr/local/bin/jamf" ]]; then jamf_binary="/usr/local/bin/jamf";
fi
}
# Verify that macOSLAPS is installed. If not, exit immediately.
if [ ! -e $LAPS ]
then
/bin/echo "macOSLAPS Not Installed"
exit 0
fi
CheckBinary
# Reset local admin account password to a known default value
## Verify Local Admin Specified Exists ##
if id "$LOCAL_ADMIN" &> /dev/null
then
/bin/echo "Account exists."
if [ -z "$defaultPassword" ]; then
echo "No default password has been specified. Skipping password reset."
else
echo "A default password has been specified. Reverting $LOCAL_ADMIN password to known default."
## Ask macOSLAPS to write out the current password and echo it for the Jamf EA
$LAPS -getPassword > /dev/null
CURRENT_PASSWORD=$( cat "$PW_FILE" )
## Test $current_password to ensure there is a value
if [ -z "$CURRENT_PASSWORD" ]
then
echo "No password saved in keychain. Assuming already using default."
else
## Run macOSLAPS a second time to remove the password file
## and expiration date file from the system
$LAPS
# Change password back to default
$jamf_binary changePassword -username $LOCAL_ADMIN -oldPassword $CURRENT_PASSWORD -password $defaultPassword
fi
fi
# Account not found, no need to reset the password to a known default.
else
/bin/echo "Account Not Found. Skipping password reset."
fi
# Remove LaunchAgent
if [ -e /Library/LaunchDaemons/edu.psu.macoslaps-check.plist ]; then
echo "Removing LaunchAgent"
rm /Library/LaunchDaemons/edu.psu.macoslaps-check.plist
else
echo "LaunchAgent not present"
fi
# Remove paths.d shortcut
if [ -e /private/etc/paths.d/laps ]; then
echo "Removing macOSLAPS terminal shortcut"
rm /private/etc/paths.d/laps
fi
# Remove Main Binary and repair tool
if [ -e $LAPS ]; then
echo "Removing main binary and repair tool."
rm -rf /usr/local/laps
fi
# Remove keychain entries
echo "Removing macOSLAPS keychain entries"
security delete-generic-password -l "macOSLAPS" /Library/Keychains/System.keychain || set t 0
Posted on 03-27-2024 10:38 AM
@McAwesome Thanks for that - but I'm still not up-to-date on the Jamf side. Since these machines already ran through a prestage before Jamf laps was an option - I don't think I can enable it for them - Any input on that side would be appreciated