考虑以下情况:
/dev/sda1
、/dev/sda2
、/dev/sda3
是磁盘的 3 个分区/dev/sda
。
Ubuntu 安装sda1
并/home
安装在sda2
.
foo
Ubuntu 系统上只有一个用户,因此其主文件夹/home/foo
位于/dev/sda2
。
/dev/sda3
我打算(并且我知道如何)仅使用一个用户安装另一个发行版(例如 Lubuntu)blah
。
我的问题是:
blah
如何以用户无法访问或挂载分区/dev/sda1
的方式做到这一点/dev/sda2
?
删除引用它的任何条目是否足够fdisk
?
我想让这 2 个分区仅对foo
Ubuntu 上的用户可用。
我希望该用户blah
即使使用 也无权访问sudo
。
我的想法是,在安装新发行版时,sda3
不要要求安装其他分区,以便新发行版的磁盘仅是sda3
.
答案1
这里混合了多种内容:由用户和超级用户安装文件系统、访问已安装文件系统上的文件以及访问“原始”设备上的数据。
挂载文件系统
root
总是可以挂载文件系统,前提是他可以访问承载该文件系统的设备 - 当内核识别它时就可以访问该设备。仅当该条目的选项中引用了该文件系统/etc/fstab
且其中之一user
或包含该文件系统时,才允许用户挂载该文件系统(请阅读手册页)。users
mount(8)
访问已安装文件系统上的文件
同样,传统上
root
总是可以访问已安装文件系统上的任何文件(当然,除非使用修补过的内核)。用户受文件权限的约束。访问原始设备上的数据(例如
/dev/sdaX
)与上面的文件相同。用户通常没有访问原始块设备的权限,但
root
确实如此。
因此,如果要阻止第二个系统中的用户安装或访问第一个操作系统使用的已安装文件系统上的数据,请/etc/fstab
适当地编辑和应用权限。请记住,文件系统上的权限绑定到 UID/GID,而不是用户/组名称 - 因此,如果foo
系统 1 中的用户与系统 2 中用户具有相同的数字 UID bar
,则他们在访问文件时具有完全相同的权限。
如果您想确保即使超级用户也无法访问文件系统,加密是唯一的方法。
或者,您可以在第一个系统上的虚拟机中运行第二个系统,使其仅访问您想要的硬盘驱动器的部分。有多种方法可以像这样进行设置,除非您也希望能够在裸机上启动第二个安装,否则您可以将整个虚拟机/dev/sda3
作为其/dev/sda
.
最后一点(特别是对于 Ubuntu 和类似发行版的用户来说,这些发行版sudo
允许所有用户通过简单地sudo
在命令前面添加以管理员身份运行所有内容,从而削弱配置)-“通过 sudo 访问”root
是一个错误的术语 - 您要么拥有或不拥有通常与(UID 0) 用户关联的某些(或全部)权限。您可以通过 获得相同的特权su
。
答案2
这取决于blah
您的 sda3 安装是否为 root。如果不:
默认情况下只能以 root 身份安装任何东西,因此您甚至不需要从/etc/fstab
.仅您应该检查的内容:
- 他们需要
noauto
标志(不要在启动时安装它们) - 并且不应该有该
user
标志(或者它们可以由用户安装)。
如果他是 root,或者拥有(或可以获得)root 权限:
那么情况就麻烦多了。本质上,root 可以在系统上执行任何操作,如果您的分区在那里,它们是可读的,没有直接的方法可以阻止这种情况。虽然有些间接的事情你也许可以做(如果你可以做的话,这主要取决于你的情况)。
- 你可以加密
sda1
和sda2
。加密根分区通常需要一些额外的工作,但大多数发行版都支持这一点。他们的关键字你必须开始:luks
。加密并不能防止这些分区被破坏,但可以防止它们被读取。我还必须提到,通过物理直接访问,即使这并不能阻止一切,但可能没问题。 - 您可以在某些虚拟机解决方案中使用 sda3 安装。在 sda1/sda2 安装上,您只给他客户端访问权限,从虚拟机您拒绝直接 sda1/sda2 访问,并且 sda3 将在虚拟机中运行。如果您限制虚拟机权限(作为 sda1/sda2 上的 root),即使作为 sda3 上的 root,您也限制了他的权限。