withPrivileges method

void withPrivileges(
  1. RunPrivileged privilegedCallback
)

Run privilegedCallback with root UID and gid

Implementation

void withPrivileges(RunPrivileged privilegedCallback) {
  if (!Shell.current.isPrivilegedProcess) {
    throw ShellException(
        'You can only use withPrivileges when running as a privileged user.');
  }
  final privileged = geteuid() == 0;

  if (!privileged) {
    setegid(0);
    seteuid(0);
  }

  privilegedCallback();

  /// If the code was originally running privileged then
  /// we leave it as it was.
  if (!privileged) {
    releasePrivileges();
  }
}