linux – 从dd和fdisk命令保护设备

我想知道是否有某种方法可以阻止某些特定设备成为dd命令的输出文件和fdisk命令的目标.我目前正在使用这两个操作在SD卡上设置写入引导加载程序,内核和根文件系统,它显示为/ dev / sdd.我总是有点担心我会把sdd与sdb或sda混在一起,因为字母A和D在键盘上很近,我想找到一种方法来阻止这种格式的命令:

dd if=/dev/sd[a-zA-Z0-9]* of=/dev/sd[ab]

要么

fdisk /dev/sd[ab]

解决方法:

您可以尝试编写udev规则,为补充HDD提供足够独特的名称.

另一个想法是:每当你可以将安全要求说成“不是谁在做,它就是他们这样做的”你说的是类型执行,并且在大多数Linux发行版TE都是在MAC级别完成的.我的大多数MAC经验都是“SELinux”

您无法在DAC级别锁定它,否则您将无法在设备上执行I / O(不一定是DAC作为安全模型的失败,它只是当前的DAC策略仅基于身份,因此所有程序在特定标识下运行获得相同的权限,而无需额外的管理表达式).可以在MAC级别将其锁定,以便常规用户空间组件无法对块文件执行任何操作,但您的根实用程序和平台的某些部分可以执行.在Fedora上,对于使用SELinux类型的fixed_disk_device_t和grub具有bootloader_exec_t的块设备已经出现这种情况,请参见以下示例:

[root@localhost ~]# ls -lhZ $(which grub2-install)
-rwxr-xr-x. root root system_u:object_r:bootloader_exec_t:s0 /sbin/grub2-install
[root@localhost ~]# ls -lhZ /dev/sda
brw-rw----+ root disk system_u:object_r:fixed_disk_device_t:s0 /dev/sda
[root@localhost ~]# sesearch --allow | egrep bootloader | grep fixed
   allow bootloader_t fixed_disk_device_t : lnk_file { read getattr } ; 
   allow bootloader_t fixed_disk_device_t : chr_file { ioctl read write getattr lock append open } ; 
   allow bootloader_t fixed_disk_device_t : blk_file { ioctl read write getattr lock append open } ; 
[root@localhost ~]# 

而dd有一个常规的bin_t标签:

[root@localhost ~]# ls -lhZ $(which dd)
-rwxr-xr-x. root root system_u:object_r:bin_t:s0       /bin/dd

bin_t(显然)仍然可以写入块设备,但为fdisk和dd创建新的文件上下文类型,并编写selinux规则以禁止新类型访问fixed_disk_device_t应该不会太困难.您只需要这样做,所以常规用户角色无法做到,但是使用sysadm_t的用户可以这样做,然后记得在尝试重新分区磁盘或执行dd之前只执行newrole -r root:sysadm_r在块设备上(这不应该是一个大问题,因为它不像你每天都在运行fdisk一整天).

可能比您正在寻找的工作更多,但TE是解决您遇到的一般问题的机制.就个人而言,udev规则可能是你最安全的赌注.我只提到了TE的东西,以防你有兴趣解决类似这一类的大量问题.

上一篇:linux – 重新读取分区表失败,错误16:设备或资源繁忙


下一篇:linux – 将dd if = / dev / zero of = / dev / sda擦除预先存在的分区表吗?