我有一个嵌入式系统开发设置,应该限制用户访问任何系统文件夹。
在 USB 记忆棒上,我创建了一个指向“/”(根文件夹)的符号链接,当我在文件浏览器中单击它时,它将把文件管理器带到根目录。
是否有任何选项可以给 mount 命令来禁用符号链接,就像不遵循符号链接一样?
如果是这样,所有文件系统都一样吗?主要是fat32、NTFS和EXT3/4?
答案1
你的符号链接禁用是完全没有意义的;如果一个用户能访问/
,那么有数千种方法反向路径遍历对您的系统的攻击。简单的例子:如果他们有权访问“打开文件”对话框,他们只需输入/etc/passwd
,即可获得;一般的文件浏览器都有一个快捷方式,允许人们直接输入路径等。如果他们可以打开 HTML 页面,则该页面可以有一个<frameset><frame src="file:///" /></frameset>
, 或链接:<a href="../../../../../../../">foo</a>
,并在浏览器中显示 / 目录。这样的例子不胜枚举,而你所采取的方法(一个接一个地堵住一个个漏洞)通常会导致漏洞,每个 2000 年代初期接触过计算机安全的人都会说“哦,这是 90 年代的问题!” 。
解决方案很简单:实现它不可能的对于用户与之交互的软件,甚至可以看到真实的系统/。在过去,您可以通过电话来完成此操作chroot
;现在您可以通过电话来完成此操作。如今,Linux 内核命名空间允许更好、更广泛的隔离(包括无法访问套接字、网络、PID、用户等)。
部署可以访问图形界面的用户软件的一种现成方法,但主机系统上没有任何文件是bwrap
(“Bubblewrap”),但您可能只想通过构建一个扁平包装包含您的软件的软件包,您没有授予该软件包文件访问权限。