Execute macOS scripts as Defined User

Description

By default, FileWave Client runs scripts and tasks as root on macOS. Use this pattern when a script needs to run a command as the currently logged-in console user.

Ingredients

Directions

sudo -u sets the target user. launchctl asuser runs the command in that user's launchd context. Some commands need one or the other; using both is a practical pattern for commands that expect the logged-in user session.

The script below finds the current console user and runs whoami in that user's context.

#!/bin/zsh
current_user=$(stat -f%Su /dev/console)
current_user_id=$(id -u "$current_user")

whoami

launchctl asuser "$current_user_id" sudo -u "$current_user" whoami

When FileWave runs the script, the first whoami output shows the root user. The second output shows the active console user.

If the current logged-in user is sholden, the output should be:

root
sholden

 


Revision #4
Created 2023-07-14 20:00:25 UTC by Josh Levitsky
Updated 2026-06-01 12:50:53 UTC by Josh Levitsky