当我插入外部硬盘驱动器、插入 DVD 或尝试查看我的 USB 驱动器上的内容时,通常会出现异常行为。
文件系统安装良好。当我以root身份登录时sudo su
,我可以看到/media/casper/externaldrive
完美无缺的内容。但是,我的用户casper
不能。Ubuntu 会回复涉及到 location 的每一个动作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
它排除在外,但在我控制住自己之后,我用谷歌搜索了“媒体用户文件夹不是我的帮助我”之类的东西。
花了一段时间,但最后我偶然发现了这个线程,用户在其中解释了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 驱动器也是如此。
谁能帮我取用我的宝贝?
哦,顺便说一句。上述线程谈到这些/media/user
文件夹上的 ACL,由+
常规权限后的 a 表示,例如drwxr-x---+ 3 root root
. 我的系统没有显示这个。这些文件夹上的 ACL 是 Ubuntu 的标准还是用户有特殊的事情发生,我是否应该担心这是我的问题所在?
谢谢阅读。
由于权限和所有权
/media/casper
是没有
+
ACL(访问控制列表),很明显只有 root 可以打开、进入、读取或写入该目录。像我们这样的谦虚用户在字符串末尾获得权限---
:(我们没有特权的人获得了使用 ACL 访问此位置的权限。我不知道为什么你还没有这些,但你可以设置它们,这可能很简单或需要一些修补:
acl
包裹是必需的(检查apt-cache policy acl
)acl
选项挂载要检查后者(
sdxY
适当地替换您的根分区):应该返回:
默认挂载选项设置在
/etc/mke2fs.conf
它们可能会被覆盖,因此请检查:
看起来像:
上面的很好,(
acl
不需要提及)但是如果它说noacl
你需要改变它。您可以将选项添加到默认安装选项,如下所示:
或者您可以添加
acl
到根分区线的选项,/etc/fstab
例如:启用 ACL 后,用于
setfacl
为自己添加权限。授予username
对 /media/casper 的读取和执行权限(您需要执行权限才能进入目录或搜索其内容):您可以
username
用 uid 替换(可能是1000
- 用id
命令检查)查看您使用的 ACL 权限,
getfacl
就像 Oli 在他的回答中所做的那样删除用户的 ACL 权限
清除所有 ACL 权限
注意:我作弊并自己问了一个问题,为什么
/media
. 答案在这里当您想从 Ubuntu 授予对 Windows 驱动器的访问权限时
如果它是 Windows NTFS 驱动器,则正常
chmod
命令将不起作用。以下对我有用。
打开文件
/etc/mtab
:在此文件中找到驱动器名称(只需将鼠标悬停在您正在寻找解决方案的驱动器上,在我的情况下,GUI 显示不同的名称,鼠标悬停在它显示
/media/user-name/drive-name
)现在在
/etc/mtab
:在文件中搜索驱动器名称,并检查您安装的驱动器分配到哪个驱动器(在我的情况下 -
/dev/sda4
)现在使用以下命令安装此驱动器:
现在我可以执行我的可执行文件,但我无法看到驱动器名称的内容,所以我卸载了驱动器并再次安装它。
Zanna 提供了一个非常有用的答案,解释了背景。
但是有一种更简单的方法可以解决这种情况:
sudo rmdir /media/casper
下次您连接 USB 驱动器或插入 CD/DVD 时,Ubuntu 将使用正确的权限重新创建 /media/casper。
(ACL 可能会丢失,例如,如果您使用不带 --acls 参数的 tar 备份 rootfs,然后从备份中恢复它。)