防止 root 意外对系统磁盘进行低级访问(格式化)?

防止 root 意外对系统磁盘进行低级访问(格式化)?

是否有可能防止在系统正常运行期间 root 用户意外安装和/或重新格式化磁盘或分区?

例如,不久前我就遇到了这样的情况:

  • 在正常操作下,我已/dev/sda1安装为//dev/sdb1安装为/var/disk2
  • 有一天,/dev/sdc在尝试修复另一台计算机时,我使用不同的 LiveCD 映像重写了拇指驱动器 () 三到四次。
  • 有一次,我错误地卸载了文件系统/dev/sdb1并用新的文件系统/dev/sdc1覆盖了它。sdb1

通常,您必须以 root 身份才能在任何存储设备上执行具有低级文件系统访问权限的操作。

我希望能够将自己锁定在/dev/sda运行/dev/sdb实时操作系统的任何时候/dev/sda1(而不是从 LiveCD 启动,我永远不想对其施加任何限制。)

回复 loevborg 的更新(感谢):我认为我真正需要的是作为非 root 用户完全不受限制地访问/dev/sdc(或插入 USB 块设备时可能显示的任何其他设备)。如果我在某处设置权限或将自己添加到正确的组,是否可以作为非 root 用户执行这些操作(擦除、创建文件系统、挂载)?

答案1

这是不可能的。根据定义,“root”是被允许做任何事情的用户。想想看。如果有些事情 root 不允许做,那么它就不是权限层次结构的根。

您可能可以引入手动检查,但这可能并不比确保在使用“sudo”时不会做任何愚蠢的事情更安全。

答案2

您无需以 root 身份执行所有操作,而是可以利用文件权限。这些/dev/sd*文件可视为可分配文件权限的常规文件。

  • 您以 的身份登录ubuntu,是该组的成员ubuntu
  • 你需要能够写信给/dev/sdc1
  • 您需要能够读取/dev/sdb1,但不能写入
  • 默认情况下,文件的权限/dev/sd*设置为660rw-rw----),所有者为rootroot

解决方案:授予该组ubuntu写入权限/dev/sdc1和读取权限/dev/sdb1

sudo chmod 640 /dev/sdb1
sudo chgrp ubuntu /dev/sdc1 /dev/sdb1

从现在起,您可以以非 root 用户身份安全地用映像覆盖磁盘 ( ubuntu),系统会阻止您意外写入错误的磁盘。将磁盘重新插入系统时,请不要忘记再次更改权限/组。

我发现这种行为在从磁盘恢复数据(只读操作)时很有用,而不必担心命令会写入它。

附加信息:/dev/sdc是磁盘。/dev/sdc1/dev/sdc2、 ... 是该磁盘上的分区。权限不会被继承,因此即使您可以/dev/sdc直接读取,也并不意味着您可以读取/dev/sdc1。如果您的磁盘已贴标签,您可以通过验证/dev/sdc1是否真的通过显示标签设备列表来检查您的 USB 磁盘:

ls -lA /dev/disk/by-label

相关内容