我遇到了一个小问题:
我有一个网站来管理不同用户的视频文件.每个用户都可以将视频上传到我不想更改的个人文件夹,因为我不想混淆不同用户的文件.上传视频文件后,我调用一个子进程,它应该创建一个缩略图.由于ffmpeg中的错误,子进程失败,似乎与缺少写入权限有关.上传的文件和包含的文件夹属于www-data.
代码:
command = ("ffmpeg -ss 00:00:10 -i %s -dframes 1 %s -y" % (video_path, image_path)).split()
subprocess.call(command)
FFMPEG似乎作为不同的用户运行,因为它仅在目标文件夹具有777权限时才有效.否则它会失败并显示以下消息:
av_interleaved_write_frame(): I/O error occurred
Usually that means that input file is truncated and/or corrupted.
如果我触摸图像文件而不是通过ffmpeg创建它,那么文件夹是否有775或777并不重要.结果文件也属于www-data,这意味着子进程本身作为www-data运行,不是吗?
我想创建一个具有777权限的子文件夹,但我不喜欢它有两个原因:这个文件夹必须动态创建,因为我希望能够创建新用户(并在我的uploads文件夹中生成新的子文件夹) .无论如何,777权限都不是很好的解决方案.
你有什么建议我有什么改变,所以ffmpeg可以写入文件夹而不会打开安全漏洞而不必在创建新用户/文件夹时触摸任何东西?