import { Effect, Context, Layer } from "effect"; /** * Linux User Management Service * * Handles creation, management, and deletion of Linux system users * for multi-user isolation in MyAIDev Method web server. * * Security Features: * - No sudo/root access granted to created users * - Limited shell access (rbash or nologin) * - Home directory isolation * - Resource limits via ulimit * - User groups for permission management */ export interface LinuxUser { username: string; uid: number; gid: number; homeDir: string; shell: string; created: boolean; } export interface CreateLinuxUserOptions { username: string; shell?: "/bin/rbash" | "/usr/sbin/nologin" | "/bin/bash"; createHome?: boolean; groups?: string[]; } export interface LinuxUserError { readonly _tag: "LinuxUserError"; readonly message: string; readonly cause?: unknown; } declare const LinuxUserService_base: Context.TagClass Effect.Effect; /** * Check if a Linux user exists */ readonly userExists: (username: string) => Effect.Effect; /** * Get Linux user information */ readonly getUserInfo: (username: string) => Effect.Effect; /** * Delete a Linux system user */ readonly deleteUser: (username: string, removeHome?: boolean) => Effect.Effect; /** * Set resource limits for a user */ readonly setResourceLimits: (username: string, limits: ResourceLimits) => Effect.Effect; /** * Sanitize username for Linux system use * Converts email-based usernames to valid Linux usernames */ readonly sanitizeUsername: (username: string) => Effect.Effect; }>; export declare class LinuxUserService extends LinuxUserService_base { static Live: Layer.Layer; } export interface ResourceLimits { maxOpenFiles?: number; maxProcesses?: number; maxMemoryKB?: number; maxCPUTime?: number; } export {}; //# sourceMappingURL=LinuxUserService.d.ts.map