Versuchen
users.groups.media.members = [ ... ];
oder
users.groups.media = {}; users.users.plex.extraGroups = [ "media" ];
Ich möchte in der Lage sein, eine neue Gruppe zu erstellen configuration.nix
und Benutzer hinzuzufügen. Ich konnte keine verfügbaren Optionen dafür finden und habe Probleme mit manuell hinzugefügten Gruppen, die durch neue Nixops-Bereitstellungen entfernt wurden.
Ich habe versucht, die durch Dienste erstellten Benutzergruppen in einer configuration.nix
Datei zu ändern:
system.activationScripts = { mediaGroup = '' echo "Adding `media` group" getent group media || groupadd media ''; }; users.users.plex.extraGroups = [ "media" ]; users.users.radarr.extraGroups = [ "media" ]; users.users.sonarr.extraGroups = [ "media" ]; users.users.deluge.extraGroups = [ "media" ];
Und auch durch Ändern der Dienste, Plex, Radarr, Sonarr und Sintflut, kann eine zusätzliche Gruppenoption gewählt werden:
{ config, pkgs, lib, ... }: with lib; let cfg = config.services.sonarr; in { options = { services.sonarr = { openFirewall = mkOption { type = types.bool; default = false; description = '' Open ports in the firewall for the media server ''; }; user = mkOption { type = types.str; default = "sonarr"; description = "User account under which sonarr runs."; }; group = mkOption { type = types.str; default = "sonarr"; description = "Group under which sonarr runs."; }; }; }; config = mkIf cfg.enable { systemd.services.sonarr = pkgs.lib.mkForce { description = "Sonarr"; after = [ "network.target" ]; wantedBy = [ "multi-user.target" ]; preStart = '' test -d /var/lib/sonarr/ || { echo "Creating sonarr data directory in /var/lib/sonarr/" mkdir -p /var/lib/sonarr/ } chown -R $:$ /var/lib/sonarr/ chmod 0700 /var/lib/sonarr/ ''; serviceConfig = { Type = "simple"; User = cfg.user; Group = cfg.group; PermissionsStartOnly = "true"; ExecStart = "$/bin/NzbDrone --no-browser"; Restart = "on-failure"; }; }; networking.firewall = mkIf cfg.openFirewall { allowedTCPPorts = [ 8989 ]; }; users.users = mkIf (cfg.user == "sonarr") { sonarr = pkgs.lib.mkForce { uid = config.ids.uids.sonarr; home = "/var/lib/sonarr"; group = cfg.group; extraGroups = [ "media" ]; }; }; users.groups = mkIf (cfg.group == "sonarr") { sonarr = pkgs.lib.mkForce { gid = config.ids.gids.sonarr; }; }; }; }
Auf jedem nixops deploy
bekomme ich:
my_server...> activating the configuration... my_server...> removing group ‘media’ my_server...> warning: user ‘media’ has unknown group ‘media’ my_server...> warning: user ‘plex’ has unknown group ‘media’ my_server...> warning: user ‘radarr’ has unknown group ‘media’ my_server...> warning: user ‘sonarr’ has unknown group ‘media’
Und wenn ich jede Benutzergruppe überprüfe, bekomme ich Folgendes, auch wenn ich den Benutzer manuell zu einer Gruppe hinzugefügt habe usermod
:
[root@my_server:/var/lib]# groups sonarr sonarr : nogroup
Das Fehlen einer gemeinsamen Gruppe zwischen diesen Diensten führt zu Berechtigungsproblemen, die die Automatisierung des Dateikopierens von Sonarr und Radarr auf die Plex Media-Standorte verhindern. Ich denke, das ist das einzige Problem damit, ich habe auch den Sprühflutdienst so konfiguriert, dass er einen umask
von verwendet, 002
und die Berechtigungen scheinen korrekt zu sein.
[root@my_server:/var/lib/deluge/Downloads]# ls -l && cd MovieFolder && ls -l drwxrwxr-- 2 deluge media 4096 Aug 26 11:39 MovieFolder -rw-rw-r-- 1 deluge media 2420763104 Aug 26 11:08 TheMovie.mkv
Auch die Nachricht von Sonarr und Radarr:
No files found are eligible for import in /var/lib/deluge/Downloads/MovieFolder
Und eine Beispielprotokollmeldung:
18-8-26 12:47:51.3|Error|DownloadedEpisodesImportService|Import failed, path does not exist or is not accessible by Sonarr: /var/lib/deluge/Downloads/MovieFolder
Versuchen
users.groups.media.members = [ ... ];
oder
users.groups.media = {}; users.users.plex.extraGroups = [ "media" ];