# SRS-02: File Sharing (SMB/NFS) ## 1. Overview File Sharing module provides management of SMB/CIFS and NFS shares for network file access. ## 2. Functional Requirements ### 2.1 Share Management **FR-FS-001**: System shall allow users to create shares - **Input**: Dataset ID, share type (SMB/NFS/Both), share name, mount point - **Output**: Created share with UUID - **Validation**: Dataset exists, share name uniqueness **FR-FS-002**: System shall allow users to list all shares - **Output**: Share list with type, dataset, status - **Filtering**: By protocol, dataset, status **FR-FS-003**: System shall allow users to view share details - **Output**: Share configuration, protocol settings, access control **FR-FS-004**: System shall allow users to update shares - **Input**: Share ID, updated configuration - **Validation**: Valid configuration values **FR-FS-005**: System shall allow users to delete shares - **Validation**: Share must not be actively accessed ### 2.2 SMB/CIFS Configuration **FR-FS-006**: System shall allow users to configure SMB share name - **Input**: Share ID, SMB share name - **Validation**: Valid SMB share name format **FR-FS-007**: System shall allow users to configure SMB path - **Input**: Share ID, SMB path - **Validation**: Path exists and is accessible **FR-FS-008**: System shall allow users to configure SMB comment - **Input**: Share ID, comment text **FR-FS-009**: System shall allow users to enable/disable guest access - **Input**: Share ID, guest access flag **FR-FS-010**: System shall allow users to configure read-only access - **Input**: Share ID, read-only flag **FR-FS-011**: System shall allow users to configure browseable option - **Input**: Share ID, browseable flag ### 2.3 NFS Configuration **FR-FS-012**: System shall allow users to configure NFS clients - **Input**: Share ID, client list (IP addresses or hostnames) - **Validation**: Valid IP/hostname format **FR-FS-013**: System shall allow users to add NFS clients - **Input**: Share ID, client address - **Validation**: Client not already in list **FR-FS-014**: System shall allow users to remove NFS clients - **Input**: Share ID, client address **FR-FS-015**: System shall allow users to configure NFS options - **Input**: Share ID, NFS options (ro, rw, sync, async, etc.) ### 2.4 Share Status **FR-FS-016**: System shall display share status (enabled/disabled) - **Output**: Current status for each protocol **FR-FS-017**: System shall allow users to enable/disable SMB protocol - **Input**: Share ID, enabled flag **FR-FS-018**: System shall allow users to enable/disable NFS protocol - **Input**: Share ID, enabled flag ## 3. User Interface Requirements ### 3.1 Share List View - Master-detail layout - Search and filter functionality - Protocol indicators (SMB/NFS badges) - Status indicators ### 3.2 Share Detail View - Protocol tabs (SMB, NFS) - Configuration forms - Client management (for NFS) - Quick actions (enable/disable protocols) ### 3.3 Create Share Modal - Dataset selection - Share name input - Protocol selection - Initial configuration ## 4. API Endpoints ``` GET /api/v1/shares GET /api/v1/shares/:id POST /api/v1/shares PUT /api/v1/shares/:id DELETE /api/v1/shares/:id ``` ## 5. Data Model ### Share Object ```json { "id": "uuid", "dataset_id": "uuid", "dataset_name": "string", "mount_point": "string", "share_type": "smb|nfs|both", "smb_enabled": boolean, "smb_share_name": "string", "smb_path": "string", "smb_comment": "string", "smb_guest_ok": boolean, "smb_read_only": boolean, "smb_browseable": boolean, "nfs_enabled": boolean, "nfs_clients": ["string"], "nfs_options": "string", "is_active": boolean, "created_at": "timestamp", "updated_at": "timestamp", "created_by": "uuid" } ``` ## 6. Permissions - **storage:read**: Required for viewing shares - **storage:write**: Required for creating, updating, deleting shares ## 7. Error Handling - Invalid dataset ID - Duplicate share name - Invalid client address format - Share in use - Insufficient permissions