如何以访客用户身份访问挂载的文件系统?

Per*_*ids 5 permissions guest-session mount

在 Ubuntu 11.04 中,我可以在 /media/foo 中挂载一个文件系统,chown guest:guest /media/foo/bar -R然后在来宾帐户中运行并拥有完全访问权限。升级到 12.04 后,我更改了例程以反映新的访客用户名 ( chown guest[id]:guest[id] /media/foo/bar -R),但我仍然无法以访客用户身份访问它,因为我没有以访客身份访问 /media 的权限:

ls: 无法打开目录 /media: 权限被拒绝

(非常有趣的是,如果我su以 root 身份进入来宾帐户,这确实有效)。我知道这是作为一种安全措施,但我不知道它是如何完成的。ls -l /报告

drwxr-xr-x  11 root root  4096 Sep  9 22:28 media
Run Code Online (Sandbox Code Playgroud)

因此我的两个问题是:这个限制是如何工作的,我怎样才能以访客用户的身份访问挂载的文件系统,理想情况下不允许访问所有其他挂载的文件系统?

Per*_*ids 5

访问/media受 AppArmor 配置文件的限制/etc/apparmor.d/lightdm-guest-session。有两个例外(第 31 和 32 行):

 owner /media/ r,
 owner /media/** rmwlixk,  # we want access to USB sticks and the like
Run Code Online (Sandbox Code Playgroud)

如果/media/foo由guest[id]拥有,则允许访问,这是解决我的问题的第一个选择。缺点是来宾帐户可以在 /media/foo 的根目录中创建任意目录和文件。我决定明确地戳一个洞/media/foo/bar并添加以下几行:

 owner /media/foo/bar rw,
Run Code Online (Sandbox Code Playgroud)

可以在此处找到语法说明:http : //doc.opensuse.org/documentation/html/openSUSE/opensuse-security/cha.apparmor.profiles.html

据我所知,这只允许来宾会话访问,/media/foo/bar并且仅当来宾 [id] 是bar. 请注意,guest[id] 仍然无法访问/media/foo自身。因此ls /media/foo会失败,但ls /media/foo/bar有效。

最后重新加载配置文件以使更改生效:

 sudo apparmor_parser -r /etc/apparmor.d/lightdm-guest-session
Run Code Online (Sandbox Code Playgroud)