Mic*_*sec 15 permissions dvd usb hard-drive media
当我插入外置硬盘、插入 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
Run Code Online (Sandbox Code Playgroud)
我决定深入研究/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/
Run Code Online (Sandbox Code Playgroud)
让我印象深刻的是它说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/
Run Code Online (Sandbox Code Playgroud)
而这似乎就是这种情况。
所以这就是我被困的地方。文件系统在整个目录树中对我都有权限,但我无法访问单个文件。这与 CD 和 USB 驱动器相同。
谁能帮我存取我的宝贝?
哦,顺便说一句。上述线程谈到了这些/media/user文件夹上的 ACL ,+在常规权限后用 a 表示,例如drwxr-x---+ 3 root root. 我的系统没有显示这个。这些文件夹上的 ACL 是 Ubuntu 的标准还是用户有特殊情况,我是否应该担心这是我的问题的来源?
谢谢阅读。
Zan*_*nna 15
由于权限和所有权/media/casper是
drwxr-x--- root root
Run Code Online (Sandbox Code Playgroud)
没有+for ACL(访问控制列表),很明显只有 root 可以打开、输入、读取或写入此目录。像我们这样的谦虚用户获得字符串末尾的权限---:(
我们没有特权的人获得了使用 ACL 访问此位置的权限。我不确定为什么你还没有这些,但你可以设置它们,这可能很简单或需要一点点修补:
acl包是必需的(检查apt-cache policy acl)acl选项挂载要检查后者(sdxY为您的根分区适当替换):
sudo tune2fs -l /dev/sdxY | grep "Default mount options:"
Run Code Online (Sandbox Code Playgroud)
应该返回:
Default mount options: user_xattr acl
Run Code Online (Sandbox Code Playgroud)
默认安装选项设置在 /etc/mke2fs.conf
它们可能会被覆盖,因此请检查:
cat /proc/mounts | grep sdxY
Run Code Online (Sandbox Code Playgroud)
看起来像:
/dev/sdxY / ext4 rw,relatime,errors=remount-ro,data=ordered 0 0
Run Code Online (Sandbox Code Playgroud)
上面的很好,(acl不需要提到)但如果它说noacl你需要改变它。
您可以将选项添加到默认安装选项,如下所示:
sudo tune2fs -o acl /dev/sdxY
Run Code Online (Sandbox Code Playgroud)
或者您可以添加acl到根分区行的选项/etc/fstab,例如:
UUID=whatever / ext4 errors=remount-ro,acl 0 1
Run Code Online (Sandbox Code Playgroud)
启用 ACL 后,用于setfacl为自己添加权限。要username授予对 /media/casper 的读取和执行权限(您需要执行权限才能进入目录或搜索其内容):
sudo setfacl -m u:username:rx /media/casper
Run Code Online (Sandbox Code Playgroud)
你可以username用 uid替换(可能你是1000- 检查id命令)
sudo setfacl -m u:1000:rx /media/casper
Run Code Online (Sandbox Code Playgroud)
查看您使用的 ACL 权限,getfacl就像 Oli 在他的回答中所做的那样
getfacl /media/casper
Run Code Online (Sandbox Code Playgroud)
删除用户的 ACL 权限
sudo setfacl -x u:username /media/casper
Run Code Online (Sandbox Code Playgroud)
清除所有 ACL 权限
sudo setfacl -b /media/casper
Run Code Online (Sandbox Code Playgroud)
注意:我作弊并自己问了一个问题,为什么/media. 答案在这里