/media/user 文件夹的权限问题导致我无法访问外部媒体

/media/user 文件夹的权限问题导致我无法访问外部媒体

当我插入外部硬盘、插入 DVD 或尝试查看 USB 驱动器上的内容时,通常会出现奇怪的行为。

文件系统挂载正常。当我以 root 身份通过 登录时sudo su,我可以看到 的内容,一切/media/casper/externaldrive正常。但我的用户 却casper看不到。Ubuntu 会回复涉及位置 的每个操作Permission denied

casper@casper-desktop:/media$ ll /media/casper/externaldrive
ls: cannot access '/media/casper/externaldrive': Permission denied

我决定深入研究一下该/media文件夹的权限(问题)。如下所示casper,我看到以下内容:

casper@casper-desktop:/media$ ls -alF
total 16
drwxr-xr-x  4 root root 4096 apr 21 17:47 ./
drwxr-xr-x 25 root root 4096 jul 29 15:43 ../
drwxr-x---  3 root root 4096 aug  3 21:02 casper/
lrwxrwxrwx  1 root root   45 apr 21 17:47 .directory -> /etc/kubuntu-default-settings/directory-media
lrwxrwxrwx  1 root root   42 apr 21 17:47 .hidden -> /etc/kubuntu-default-settings/hidden-media
drwxr-xr-x  2 root root 4096 feb 29 23:56 home/

让我吃惊的是,它说total 16,而最多只有 6 个列表。所以我再次运行命令,但root结果还是一样,很奇怪。(有人能告诉我吗?)

无论如何,让我更震惊的是,这个/media/casper目录不属于我,我也无法访问。我很想直接chown -R说出来,但控制住自己后,我在 Google 上搜索了“媒体用户文件夹不是我的,帮帮我”之类的内容。

花了一段时间,但最终我偶然发现了线程,用户在其中解释文件夹的用途750 root:root /media/user。它确保只有 root 可以挂载、查看和管理文件系统,其中各个权限将更改为实际用户。

所以如果我的信息正确,/media/casper/externaldrive权限应该对我有利。我检查了一下,

root@casper-desktop:/media/casper# ll
total 12
drwxr-x--- 3 root   root   4096 aug  3 21:02 ./
drwxr-xr-x 4 root   root   4096 apr 21 17:47 ../
drwxrwxrwx 1 casper casper 4096 aug  3 20:20 externaldrive/

事实似乎也如此。

这就是我被困住的地方。文件系统对我拥有整个目录树的权限,但我却无法访问任何文件。CD 和 USB 驱动器也存在同样的问题。

谁能帮助我获得我的珍贵资源?

哦,顺便说一句。上述线程提到了这些文件夹的 ACL ,在常规权限后/media/user用 表示,例如。我的系统没有显示这一点。这些文件夹的 ACL 是 Ubuntu 的标准吗,还是用户有特殊情况,我是否应该担心这就是我的问题所在?+drwxr-x---+ 3 root root

谢谢阅读。

答案1

由于权限和所有权/media/casper

drwxr-x---  root root 

没有+ACL(访问控制列表)很明显,只有 root 可以打开、进入、读取或写入此目录。像我们这样的普通用户在字符串末尾获得了权限---:(

我们这些没有特权的人可以通过 ACL 访问此位置。我不确定为什么您还没有这些,但您可以设置它们,这可能很简单,也可能需要一点调整:

  • acl包是必需的(检查apt-cache policy acl
  • 文件系统必须使用选项acl挂载

要检查后者(sdxY根据您的根分区进行适当替换):

sudo tune2fs -l /dev/sdxY | grep "Default mount options:"

应该返回:

Default mount options:    user_xattr acl

默认安装选项设置在/etc/mke2fs.conf

它们可能会被覆盖,因此请检查:

cat /proc/mounts | grep sdxY

看起来像:

/dev/sdxY / ext4 rw,relatime,errors=remount-ro,data=ordered 0 0

以上内容很好,(acl不需要提及)但如果它说noacl你需要更改它。

您可以将该选项添加到默认挂载选项中,如下所示:

sudo tune2fs -o acl /dev/sdxY

或者您可以添加acl到根分区行的选项中,/etc/fstab例如:

UUID=whatever /     ext4    errors=remount-ro,acl    0       1

启用 ACL 后,使用setfacl来为自己添加权限。要授予username对 /media/casper 的读取和执行权限(您需要执行权限才能进入目录或搜索其内容):

sudo setfacl -m u:username:rx /media/casper

您可以username用 uid 替换(可能您可以1000用命令检查id

sudo setfacl -m u:1000:rx /media/casper

查看你使用的 ACL 权限,getfacl就像 Oli 在他的回答中所做的那样

getfacl /media/casper

删除用户的 ACL 权限

sudo setfacl -x u:username /media/casper

清除所有 ACL 权限

sudo setfacl -b /media/casper

注:我作弊了,自己问了一个问题,为什么 中有这么多条目/media。答案是这里

答案2

Zanna 给出了非常有用的答案,解释了背景。

但有一个更简单的方法可以解决这个问题:

  1. 卸载并拔出/弹出当前在 /media/casper 中安装(无法访问)的所有磁盘。
  2. 删除目录:sudo rmdir /media/casper

下次您连接 USB 驱动器或插入 CD/DVD 时,Ubuntu 将使用正确的权限重新创建 /media/casper。

(例如,如果您使用不带 --acls 参数的 tar 备份 rootfs,然后从备份中恢复它,则 ACL 可能会丢失。)

答案3

当你想从 Ubuntu 授予 Windows 驱动器访问权限时

如果它是 Windows NTFS 驱动器,则正常chmod命令将不起作用。

以下对我有用。

打开文件/etc/mtab

gedit /etc/mtab

在此文件中查找驱动器名称(只需将鼠标悬停在您要查找解决方案的驱动器上,在我的情况下,GUI 显示不同的名称,鼠标悬停在它上面时显示/media/user-name/drive-name

现在位于/etc/mtab

在文件中搜索驱动器名称,并检查您安装的驱动器被分配到哪个驱动器(在我的情况下 - /dev/sda4

现在使用以下命令安装该驱动器:

sudo ntfs-3g /dev/sda4 /media/"$USER"

现在我可以执行我的可执行文件了,但我无法看到驱动器名称的内容,所以我卸载了该驱动器并再次安装它。

相关内容