Detect root/admin/sudo and execute commands as it if available
APACHE-2.0 License
Detect root/admin/sudo and execute commands as it if available
npm install --save admina
admina
is tiny and treeshakable.
Automatic (depends on your build system)
import * as admina from "admina"
Node
import * as admina from "admina/dist/index.node.mjs"
Node CJS
const admina = require("admina/dist/index.node.cjs")
admina
supports the following functions:
isAdmin
(function)returns: Promise
hasSudo
(function)Detect if sudo is available
returns: boolean
isRoot
(function)Detect if the process has root privilege on Posix.
returns: boolean
import { isRoot } from "admina"
console.log(isRoot())
//=> false
isSudo
(function)Detect if sudo is available and the user has root privileges
returns: boolean
prependSudo
(function)Prepend sudo
to the command if sudo is available
Parameters:
string
)returns: string
defaultExecOptions
(variable: execa.SyncOptions)Default exec options { stdio: "inherit", shell: true }
execRootSync
(function)Execute a command as root if sudo is available. Otherwise executes the command normally without sudo.
Parameters:
string
) - The program to spawnstring[]
) - The command argumentsSyncOptions<string>
) - The options passed to execa
. Defaults to { stdio: "inherit", shell: true }
returns: ExecaSyncReturnValue
execRoot
(function)Asynchronously execute a command as root if sudo is available. Otherwise executes the command normally without sudo.
Parameters:
string
) - The program to spawnstring[]
) - The command argumentsOptions<string>
) - The options passed to execa
. Defaults to { stdio: "inherit", shell: true }
returns: ExecaChildProcess
isAdminWindows
(variable)Check if the process is running as administrator on Windows.
import { isAdminWindows } from "admina"
console.log(await isAdminWindows())
//=> false
isAdminPosix
(variable)Detect if the process has root privilege on Posix.
import { isAdminPosix } from "admina"
console.log(isAdminPosix())
//=> false
isAdmin
(function)Detect if the code is running as admin/root
On Windows, it checks for admin access, and on Posix, it checks for root access
returns: boolean | Promise
import { isAdmin } from "admina"
console.log(isAdmin())
//=> false
grantUserWriteAccess
(function)Give the user access to the given path (and its sub-directories if a directory). It changes the owner to the SUDO_USER. This allows the user to use the folder without sudo
Parameters:
string
) - The path to give the user access toreturns: Promise
You can sponsor my work here:
https://github.com/sponsors/aminya
Pull requests, issues and feature requests are welcome. See the Contributing guide.