Возможная ошибка: Воспроизведение файлов *.flv с правами root в VLC на Ubuntu 16.04/18.04
У меня есть некоторые файлы FLV, и я пытаюсь воспроизвести их в VLC. Я храню их в отдельном каталоге, принадлежащем пользователю root (как для каталога, так и для файлов), чтобы предотвратить случайное удаление.
Теперь интересная часть:
Если файл принадлежит пользователю root, VLC утверждает, что не может открыть файл flv и останавливается.
Если файл принадлежит как обычный пользователь, VLC воспроизводит файл просто отлично.
VLC запускается как обычный пользователь, только файл принадлежит пользователю root.
Вот ошибка VLC: "Ваш вход не может быть открыт: VLC не может открыть файл MRL:///path/test.flv"
И журнал VLC:
main debug: using default timeshift path
main debug: `file:///test.flv' gives access `file' demux `any' path `path/test.flv'
main debug: creating demux: access='file' demux='any' location='path/test.flv' file='path/test.flv'
main debug: looking for access_demux module matching "file": 21 candidates
main debug: no access_demux modules matched
main debug: creating access: file:///path/test.flv
main debug: (path: path/test.flv)
main debug: looking for access module matching "file": 26 candidates
filesystem error: cannot open file path/test.flv (Permission denied)
main debug: no access modules matched
Все системы, как 16.04, так и 18.04, обновлены, и все пакеты взяты из официальных репозиториев Ubuntu.
Любые идеи, как это исправить? Спасибо!
Edit1: разрешения dir/file в порядке:
drwxr-xr-x 2 root root 4096 dec 23 2015 Directory/
-rw-r--r-- 1 root root 12583957 apr 6 2012 test.flv –
Что действительно странно, так это то, что другие файлы в том же каталоге и с теми же правами, НО *.mpg и *.avi воспроизводятся нормально.
Edit2: нашел решение.
Кажется, проблема в (16.04) VLC, предоставленном оснасткой (тот, который я установил). После удаления и установки медиа-плеера VLC с Ubuntu Software Center (версия 2.2.2) проблема больше не возникает. Тем не менее проблема с версией оснастки все еще остается.
Edit3: то же самое 18.04. Удалена версия Snap, установлена версия Deb, теперь все в порядке.
1 ответ
Прежде всего, похоже, что с вашей системой все в порядке. Но вы должны понимать права доступа к файлам Linux. Вы также должны понимать, что изменение владельца файла на root
не предотвращает потерю данных, но снижает вероятность потери данных. Представьте себе, что ваш HDD/SSD выходит из строя. И все еще есть возможность удалить файл случайно, когда кто-то вошел в систему как root
, Если вы не можете рискнуть потерять файл, сделайте резервную копию.
Каждый файл / каталог имеет владельца и группу, связанную с ним. Мы можем установить разрешения для
- владелец (владелец файла)
- группа (все пользователи, принадлежащие к этой группе)
- другие (все остальные пользователи, они не являются владельцами файла и не принадлежат к группе)
Для каждого из них мы можем установить разрешения отдельно для доступа на чтение, доступ на запись или доступ на выполнение (rwx). Разрешение на выполнение для каталога немного особенное, оно позволяет вам войти в каталог, и вы должны иметь разрешение на выполнение для каталога, когда вы хотите получить доступ к файлам в каталоге.
Так что вам нужно в вашем случае?
- Вам нужны разрешения на чтение и выполнение для вашего каталога.
- Вам нужно разрешение на чтение файла в каталоге.
Более подробно рассмотрим текущие права доступа к вашему файлу и его родительскому каталогу с
ls -l /path/to/your/file
ls -ld /path/to/your/directory
Вывод этих команд будет выглядеть так:
-rw------- 1 root root 3495 Sep 23 03:35 file
drwx------ 8 root root 4096 Jun 5 03:10 directory
Вы можете видеть, кто является владельцем файла, какая группа связана с файлом и полный набор разрешений. В этом примере только владелец (root
) имеет разрешения на чтение и запись для файла и разрешения на чтение, запись и выполнение для каталога. Пользователь, который принадлежит к группе, и все другие пользователи не имеют никаких прав в этом примере.
Теперь мы даем пользователю, который не root
и не принадлежит к группе root
разрешения на чтение файла:
sudo chmod o+rx /path/to/your/directory
sudo chmod o+r /path/to/your/file
Это предоставит пользователю разрешение на вход в каталог и чтение файла, а владелец и группа и их разрешения остаются неизменными. Только root имеет право на запись в файл и его родительский каталог, поэтому только root может редактировать или удалять файл.
В Интернете вы найдете тонны учебных пособий о разрешениях для Linux, некоторые из которых более понятны, чем другие, поищите в Интернете немного, чтобы расширить свои знания. В этом коротком ответе я могу дать вам только общее представление о том, как работают разрешения в Linux. Вы также должны взглянуть на руководства для соответствующих команд:
man chown
man chmod