chown recordings, previews, and exports to the runtime user at create

This commit is contained in:
Josh Hawkins
2026-08-28 07:28:47 -05:00
parent d02771f07a
commit d7dc7ce3bc
3 changed files with 10 additions and 0 deletions
+2
View File
@@ -23,6 +23,7 @@ from frigate.ffmpeg_presets import (
)
from frigate.models import Previews
from frigate.util.image import copy_yuv_to_position, get_blank_yuv_frame, get_yuv_crop
from frigate.util.ownership import chown_to_runtime
logger = logging.getLogger(__name__)
@@ -185,6 +186,7 @@ class FFMpegConverter(threading.Thread):
if p.returncode == 0:
logger.debug("successfully saved preview")
chown_to_runtime(self.path)
self.requestor.send_data(
INSERT_PREVIEW,
{
+4
View File
@@ -35,6 +35,7 @@ from frigate.ffmpeg_presets import (
)
from frigate.models import Export, Previews, Recordings, ReviewSegment
from frigate.util.ffmpeg import run_ffmpeg_with_progress
from frigate.util.ownership import chown_to_runtime
from frigate.util.time import is_current_hour
logger = logging.getLogger(__name__)
@@ -940,6 +941,8 @@ class RecordingExporter(threading.Thread):
else:
video_path = f"{EXPORT_DIR}/{self.camera}_{filename_start_datetime}-{filename_end_datetime}_{cleaned_export_id}.mp4"
thumb_path = self.save_thumbnail(self.export_id)
if thumb_path:
chown_to_runtime(thumb_path)
export_values = {
Export.id: self.export_id,
@@ -1014,6 +1017,7 @@ class RecordingExporter(threading.Thread):
Path(thumb_path).unlink(missing_ok=True)
return
else:
chown_to_runtime(video_path)
self._emit_progress("finalizing", 100.0)
Export.update({Export.in_progress: False}).where(
Export.id == self.export_id
+4
View File
@@ -43,6 +43,7 @@ from frigate.const import (
from frigate.models import Recordings, ReviewSegment
from frigate.review.types import SeverityEnum
from frigate.util.media import get_keyframe_offsets
from frigate.util.ownership import chown_to_runtime
from frigate.util.services import get_video_properties
logger = logging.getLogger(__name__)
@@ -928,6 +929,7 @@ class RecordingMaintainer(threading.Thread):
)
os.makedirs(directory, exist_ok=True)
chown_to_runtime(directory)
# file will be in utc due to path_time being in utc
file_name = f"{path_time.strftime('%M.%S.mp4')}"
@@ -966,6 +968,8 @@ class RecordingMaintainer(threading.Thread):
f"Copied {file_path} in {datetime.datetime.now().timestamp() - start_frame} seconds."
)
chown_to_runtime(file_path)
try:
# get the segment size of the cache file
# file without faststart is same size