Jellyfin usually recreates files with the wrong owner when the active service identity differs from the directory owner or a second import path uses another UID/GID.
Does the problem affect only newly downloaded artwork or every file Jellyfin writes? Compare one working file, one newly created file, the active container identity, and the bind-mounted destination before running any recursive permission command. The goal is to fix inheritance, not repeatedly repair symptoms.
Prove which identity and path performed the write
Inspect the running containerโs user and groups, then inspect the live bind mount rather than relying on the Compose file on disk. Confirm that Jellyfinโs config and cache paths are writable, while media remains read-only when write access is not required. A layered permissions check distinguishes host visibility, container mapping, and service identity.
If the host sees the file but the container cannot, fix the mount. If the container can write but the owner is wrong, continue to the identity and inheritance test.
If only imported files have the wrong owner, compare the importerโs UID/GID and umask with Jellyfinโs. If every new file is wrong, inspect the parent directoryโs default ACL and setgid behavior.
Check umask, groups, ACLs, and the import worker
Compare the UID/GID and mode of the parent directory with the process that creates the file. A downloader, scheduled task, or sidecar may write through a different container even though Jellyfin later displays the item. Check supplementary groups and default ACLs before changing the entire tree.
Do not use a world-writable recursive permission change as the permanent fix. Match the service identity to the intended group, or make the shared group and default ACL explicit for the exact directories that need collaboration.
Test one new file through the exact import path after changing the identity. Do not judge the fix from files that were created before the container or sidecar was recreated.
Repair inheritance and validate after recreation
Apply the smallest ownership or ACL change to the affected directory, recreate one test file, and verify its owner and mode. Recreate the container and reboot the host, then repeat the same import so the fix survives deployment and mount ordering.
Escalate when ownership changes return after a clean recreation, the filesystem ignores POSIX ownership, or multiple services compete to manage the same path. Preserve the working file and compose configuration while narrowing the writer.
If ownership changes back after reboot, the mount or deployment is applying a different identity. Preserve the working compose configuration before changing the filesystem tree again.
Verify Ownership Across Reboot and Reimport
Recreate the container, reboot the host, and import one controlled test file. Confirm owner, group, mode, and Jellyfin visibility from both the host and container.
Keep the fix when new files inherit the intended group and Jellyfin can read or write only the directories required by the workflow. Do not grant broad write access to the entire media tree.
Escalate when the filesystem, ACL layer, or multiple writers still changes ownership after the controlled reimport.
Support & Tips
More to Read

How to Optimize Jellyfin Database Connections for Concurrent Containers
Start with one database owner and measured SQLite lock behavior; add a different backend only when concurrency and recovery justify the complexity.

How to Prevent Duplicate Jobs or Imports in Jellyfin
Duplicate work usually comes from overlapping schedulers or more than one writer; assign one owner, one path, and one completion check.

How to Repair Jellyfin After Its Database Volume Fills Up
Stop writes, preserve the database and WAL files, free space without deleting state blindly, then verify integrity and the original workload.

