penguins-eggs
Version:
A remaster system tool, compatible with Almalinux, Alpine, Arch, Debian, Devuan, Fedora, Manjaro, Opensuse, Ubuntu and derivatives
77 lines (76 loc) • 1.91 kB
TypeScript
/**
* src/classes/sys-users.ts
* penguins-eggs v.25.7.x / ecmascript 2020
* "THE SYSUSER MASTER"
* Gestione pura Node.js per utenti e gruppi di sistema.
* Sostituisce i binari (useradd/usermod/deluser) per garantire operazioni atomiche
* e compatibilità SELinux (Fedora/RHEL) scrivendo file puliti.
*/
export interface IPasswdEntry {
gecos: string;
gid: string;
home: string;
password: string;
shell: string;
uid: string;
username: string;
}
export interface IShadowEntry {
expire: string;
hash: string;
inactive: string;
lastChange: string;
max: string;
min: string;
username: string;
warn: string;
}
export interface IGroupEntry {
gid: string;
groupName: string;
members: string[];
password: string;
}
export default class SysUsers {
private distroFamily;
private group;
private gshadowLines;
private passwd;
private shadow;
private subgidLines;
private subuidLines;
private targetRoot;
constructor(targetRoot: string, distroFamily: string);
/**
* Crea un nuovo utente completo
*/
addUser(user: IPasswdEntry, cleanPassword: string): void;
/**
* Aggiunge utente a un gruppo supplementare
*/
addUserToGroup(username: string, groupName: string): void;
/**
* Carica tutti i file di configurazione in memoria
*/
load(): void;
/**
* Rimuove completamente un utente
*/
removeUser(username: string): void;
/**
* Salva lo stato della memoria su disco e applica SELinux fix
*/
save(): Promise<void>;
/**
* Cambia password utente
*/
setPassword(username: string, password: string): void;
private parseGroup;
private parsePasswd;
private parseShadow;
private readFile;
private serializeGroup;
private serializePasswd;
private serializeShadow;
private writeFile;
}