admina

1.0.1 • Public • Published

admina

CI Version License: Apache--2.0

Detect root/admin/sudo and execute commands as it if available

Install

npm install --save admina

admina is tiny and treeshakable.

Usage

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")

API

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:

  • command (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:

  • program (string) - The program to spawn
  • args (string[]) - The command arguments
  • execOptions (SyncOptions<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:

  • program (string) - The program to spawn
  • args (string[]) - The command arguments
  • execOptions (Options<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:

  • path (string) - The path to give the user access to

returns: Promise

🤝 Contributing

You can sponsor my work here:

https://github.com/sponsors/aminya

Pull requests, issues and feature requests are welcome. See the Contributing guide.

Package Sidebar

Install

npm i admina

Weekly Downloads

15

Version

1.0.1

License

Apache-2.0

Unpacked Size

659 kB

Total Files

33

Last publish

Collaborators

  • aminya