“Permissão negada” com ffmpeg (via snap) na unidade externa

“Permissão negada” com ffmpeg (via snap) na unidade externa

Eu tenho uma nova unidade e posso copiar arquivos facilmente cpna unidade. No entanto, por algum motivo estranho, eu uso Permission deniedo ffmpeg.

As permissões parecem boas, a menos que esteja faltando alguma coisa

> ll /media/manos/6TB/
drwxrwxrwx  13 manos      4096 Apr 16 00:56  ./
drwxr-x---+  6 manos      4096 Apr 16 00:49  ..
-rwxrwxrwx   1 manos 250900209 Apr 15 17:28  test.mp4*
..

Mas o ffmpeg continua reclamando

> ffmpeg -i test.mp4 test.mov
ffmpeg version n4.1.4 Copyright (c) 2000-2019 the FFmpeg developers
  built with gcc 7 (Ubuntu 7.4.0-1ubuntu1~18.04.1)
  configuration: --prefix= --prefix=/usr --disable-debug --disable-doc --disable-static --enable-avisynth --enable-cuda --enable-cuvid --enable-libdrm --enable-ffplay --enable-gnutls --enable-gpl --enable-libass --enable-libfdk-aac --enable-libfontconfig --enable-libfreetype --enable-libmp3lame --enable-libopencore_amrnb --enable-libopencore_amrwb --enable-libopus --enable-libpulse --enable-sdl2 --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libv4l2 --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-libxcb --enable-libxvid --enable-nonfree --enable-nvenc --enable-omx --enable-openal --enable-opencl --enable-runtime-cpudetect --enable-shared --enable-vaapi --enable-vdpau --enable-version3 --enable-xlib
  libavutil      56. 22.100 / 56. 22.100
  libavcodec     58. 35.100 / 58. 35.100
  libavformat    58. 20.100 / 58. 20.100
  libavdevice    58.  5.100 / 58.  5.100
  libavfilter     7. 40.101 /  7. 40.101
  libswscale      5.  3.100 /  5.  3.100
  libswresample   3.  3.100 /  3.  3.100
  libpostproc    55.  3.100 / 55.  3.100
test.mp4: Permission denied

Simplesmente copiar como abaixo funciona bem.

> cp test.mp4 test.mp4.bak
'test.mp4' -> 'test.mp4.bak'

Alguma idéia do que está acontecendo? Isso é muito chato. Nota que o ffmpeg está instalado em/snap/bin/ffmpeg

Responder1

Então, depois de muita pesquisa, descobri que o problema está no gerenciador de pacotes snap. Aparentemente, por padrão, o snap não consegue acessar o diretório de mídia, então precisamos corrigir isso manualmente.

Verifique se o ffmpeg tem acesso removable-mediacomo abaixo

> snap connections | grep ffmpeg
desktop                   ffmpeg:desktop                             :desktop                          -
home                      ffmpeg:home                                :home                             -
network                   ffmpeg:network                             :network                          -
network-bind              ffmpeg:network-bind                        :network-bind                     -
opengl                    ffmpeg:opengl                              :opengl                           -
optical-drive             ffmpeg:optical-drive                       :optical-drive                    -
pulseaudio                ffmpeg:pulseaudio                          :pulseaudio                       -
wayland                   ffmpeg:wayland                             :wayland                          -
x11                       ffmpeg:x11                                 :x11                              -

Adicione essa permissão se estiver faltando

sudo snap connect ffmpeg:removable-media

Responder2

Para qualquer pessoa pesquisando no Google sobre o problema de permissão e vendo este tópico:

No meu caso, o problema é que no meu código não fechei os arquivos que acabei de criar no mesmo método antes de passá-los para o ffmpeg. Portanto, se o ffmpeg travar permission denied, certifique-se de que todos os identificadores de arquivo abertos foram fechados.

Responder3

O ffmpeg via snap parece estar em algum tipo de confinamento instantâneo, onde apenas alguns diretórios são ativados.

Atualmente (abril de 2023) está codificado que /media e /home/$USER são trazidos, todo o resto não funcionará (pense em chroot ).

Veja mais informações aqui:https://askubuntu.com/a/1040278/32777, especialmente a seção de comentários

Responder4

Adicione sudoantes de seus comandos. Funciona para mim.

informação relacionada