可能的错误:在 Ubuntu 16.04/18.04 上使用 VLC 播放 root 拥有的 *.flv 文件

可能的错误:在 Ubuntu 16.04/18.04 上使用 VLC 播放 root 拥有的 *.flv 文件

我有一些 flv 文件,想在 VLC 中播放它们。我将它们保存在 root 拥有的单独目录中(包括目录和文件),以防止意外删除。

现在有趣的部分是:

  1. 如果该文件归 root 所有,VLC 会声称无法打开 flv 文件并停止。

  2. 如果该文件由普通用户所有,VLC 就可以正常播放该文件。

VLC 以普通用户身份运行,只是文件归 root 所有。

这是 VLC 错误:“无法打开您的输入:VLC 无法打开 MRL‘file:///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 存储库。

有什么办法可以解决这个问题吗?谢谢!

编辑1:目录/文件权限很好:

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 可以正常播放。

编辑2:找到了解决方案。

问题似乎出在(16.04 上)snap 提供的 VLC(我安装的那个)。在用 Ubuntu 软件中心(版本 2.2.2)卸载并安装 VLC 媒体播放器后,现在我不再看到这个问题了。然而 snap 版本的问题仍然存在。

编辑3:18.04 上也一样。删除了 snap 版本,安装了 deb 版本,现在一切正常。

答案1

首先,您的系统似乎没有任何问题。但您需要了解 Linux 文件权限。您还应该了解,将文件的所有权更改为 并root不能防止数据丢失,但它可以降低数据丢失的可能性。想象一下您的 HDD/SSD 发生故障的情况。当有人以 身份登录时,仍然有可能意外删除该文件。root如果您不能冒险丢失文件,请备份它。

每个文件/目录都有一个所有者和一个与之关联的组。我们可以设置权限

  1. 所有者(文件所有者)
  2. 组(属于该组的所有用户)
  3. 其他(所有其他用户,他们不是文件的所有者,也不属于该组)

对于每个文件,我们可以分别设置读、写或执行权限 (rwx)。目录的执行权限有点特殊,它允许您进入目录,并且当您想要访问目录中的文件时,您必须具有目录的执行权限。

那么就你的情况来说你需要什么呢?

  1. 您需要对您的目录具有读取和执行的权限。
  2. 您需要对该目录中的文件具有读取权限。

使用以下命令深入了解文件及其父目录的当前权限:

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

相关内容