Nodevisor Docs
Packages

@nodevisor/groups

Manage system groups and user membership.

Install

npm install @nodevisor/groups

Create and manage system groups, and control which users belong to which groups.


Quick Start

import $ from '@nodevisor/shell';
import Groups from '@nodevisor/groups';

const groups = $(Groups);

// Create a group
await groups.add('docker');

// Add a user to the group
await groups.addUser('runner', 'docker');

// Check membership
const userGroups = await groups.userGroups('runner');
console.log(userGroups); // ["runner", "docker"]

API

exists(name)

Check if a group exists. Returns boolean.

if (await $(Groups).exists('docker')) {
  console.log('Docker group exists');
}

add(name)

Create a new system group.

await $(Groups).add('deploy');

remove(name)

Remove a system group.

await $(Groups).remove('oldgroup');

addUser(username, group)

Add a user to a group.

await $(Groups).addUser('runner', 'docker');
// Linux: usermod -aG docker runner

removeUser(username, group)

Remove a user from a group.

await $(Groups).removeUser('runner', 'docker');

userGroups(username)

List all groups a user belongs to.

const groups = await $(Groups).userGroups('runner');
console.log(groups); // ["runner", "sudo", "docker"]

hasUser(username, group)

Check if a user is a member of a group. Returns boolean.

if (await $(Groups).hasUser('runner', 'docker')) {
  console.log('runner can use Docker');
}

Common Patterns

Allow a user to run Docker commands

import $, { Groups } from 'nodevisor';

const $server = $.connect({ host: '10.0.0.10', username: 'root' });
await $server(Groups).addUser('runner', 'docker');

This is what Docker.allowUser() does internally.


On this page