using System; using System.IO; using System.Runtime.InteropServices; namespace PolyTrader.Core.Security { /// /// Beschränkt eine Schlüsseldatei auf den Besitzer. Unter Linux/macOS erzeugt /// mit der üblichen umask sonst 644 — /// world-readable, und genau dort liegen Master-Key, Watchdog-Token oder OpenRouter-Key im /// Klartext. Unter Windows greift die NTFS-Vererbung des Profils, dort ist nichts zu tun. /// public static class FilePermissions { public static void RestrictToOwner(string path, Action? onWarning = null) { if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) return; try { File.SetUnixFileMode(path, UnixFileMode.UserRead | UnixFileMode.UserWrite); } catch (Exception ex) { onWarning?.Invoke( $"Dateirechte für {Path.GetFileName(path)} konnten nicht gesetzt werden: {ex.Message}. Bitte manuell prüfen (chmod 600)."); } } } }