在c/c++中打开PhysicalDrive句柄并写入MBR的linux等价物是什么?

在c/c++中打开PhysicalDrive句柄并写入MBR的linux等价物是什么?,c++,c,linux,windows,C++,C,Linux,Windows,在Windows中,您可以轻松地打开PhysicalDrive的句柄,甚至\\.\c:并使用用户模式下的WriteFile写入磁盘的第一个扇区。您想知道,在Linux中,需要尽可能低的权限的等效c/c++代码是什么?在Linux中不使用sudo运行代码就可以做到这一点吗 基本上,我想编译一个ELF程序,它可以做到这一点,但是在Linux中,使用尽可能低的权限,我怎么能做到这一点呢?因为在Windows中,您可以从用户模式执行此操作 在Linux中,SCSI通过直接消息也可以读取和写入磁盘扇区吗?

在Windows中,您可以轻松地打开PhysicalDrive的句柄,甚至\\.\c:并使用用户模式下的WriteFile写入磁盘的第一个扇区。您想知道,在Linux中,需要尽可能低的权限的等效c/c++代码是什么?在Linux中不使用sudo运行代码就可以做到这一点吗

基本上,我想编译一个ELF程序,它可以做到这一点,但是在Linux中,使用尽可能低的权限,我怎么能做到这一点呢?因为在Windows中,您可以从用户模式执行此操作


在Linux中,SCSI通过直接消息也可以读取和写入磁盘扇区吗?如果是这样的话,那么我如何在Linux中向磁盘驱动程序发送SCSI passthrough IRP消息以写入文件,在windows中,我们可以使用DeviceIOcontrol发送消息对不起,对于新手的问题,我不太熟悉Linux中的编程在Linux中,每个设备都是一个文件。因此,您的第一个物理硬盘可能是/dev/sda。如果您有足够的权限,则可以直接与硬盘驱动器进行打开、读取和写入通信。毕竟这只是一个文件

至于权限:任何用户都可以这样做,只要他/她拥有所需的权限,可以对特定设备执行任何您想要的操作。通过文件权限工作。例如,您可以将用户添加到某个组中,并将该组分配给您的设备,通过chmod向该组授予所需的权限


您还可以为该程序设置suid位,该程序使用您的物理驱动器进行填充。意思:如果用户仍需要此程序的执行权限,则该程序将使用另一个用户id(可以是root)自行运行。意思是:这个过程单独运行时会提升权限,为用户做他/她不能做的事情。

在linux中,每个设备都是一个文件。因此,您的第一个物理硬盘可能是/dev/sda。如果您有足够的权限,则可以直接与硬盘驱动器进行打开、读取和写入通信。毕竟这只是一个文件

至于权限:任何用户都可以这样做,只要他/她拥有所需的权限,可以对特定设备执行任何您想要的操作。通过文件权限工作。例如,您可以将用户添加到某个组中,并将该组分配给您的设备,通过chmod向该组授予所需的权限


您还可以为该程序设置suid位,该程序使用您的物理驱动器进行填充。意思:如果用户仍需要此程序的执行权限,则该程序将使用另一个用户id(可以是root)自行运行。这意味着:这个过程单独运行时会提升权限,为用户做他/她不能做的事情。

在Linux上,磁盘通常是一些块,如/dev/sda。见和

伪文件/proc/partitions提供了磁盘分区。在shell或终端仿真器中查看并尝试cat/proc/partitions

你可以让一个程序访问磁盘。你会需要的。注意:setuid或setgid机制很复杂。花几个小时来理解它,否则您将打开一个漏洞

更多信息,请阅读

在配置良好的Linux系统上,并非所有用户都可以访问/dev/sda。在Debian上,它有:

% ls -l /dev/sda
brw-rw---- 1 root disk 8, 0 Jun 25 18:53 /dev/sda
因此,您可以编写一个磁盘setgid ELF可执行文件。见

再看一看,研究源代码,阅读和


然后研究改进GNU的源代码,因为它是。

在Linux上,磁盘通常是一些块,例如/dev/sda。见和

伪文件/proc/partitions提供了磁盘分区。在shell或终端仿真器中查看并尝试cat/proc/partitions

你可以让一个程序访问磁盘。你会需要的。注意:setuid或setgid机制很复杂。花几个小时来理解它,否则您将打开一个漏洞

更多信息,请阅读

在配置良好的Linux系统上,并非所有用户都可以访问/dev/sda。在Debian上,它有:

% ls -l /dev/sda
brw-rw---- 1 root disk 8, 0 Jun 25 18:53 /dev/sda
因此,您可以编写一个磁盘setgid ELF可执行文件。见

再看一看,研究源代码,阅读和


研究然后改进GNU的源代码,因为它是。

我很确定,您不能以非管理员身份写入原始磁盘。MSDN:调用方必须具有管理权限。只是想知道哪种类型的操作系统会允许最随意的用户删除或窃取存储在其中的每一条信息?谁想用它?@MSalters我很抱歉,似乎windows 7在默认情况下以admin integrity=high的身份运行该程序,即使出于某种原因我没有以admin的身份运行它,但与windows 10不同的是,我编辑了question@MarkSetchell默认情况下是这样的,因为普通windows用户只需创建一个管理员用户名,由于某些原因,Windows7默认以管理员的身份运行它,即使程序不强制它使用r
un as admin或甚至用户出于未知原因单击它以admin身份运行,即使使用最大UAC,它仍然以admin身份运行,而不询问我系统上的用户!SCSI passTour命令只适用于SCSI驱动器。我很确定您不能以非管理员身份写入原始磁盘。MSDN:调用方必须具有管理权限。只是想知道哪种类型的操作系统会允许最随意的用户删除或窃取存储在其中的每一条信息?谁想用它?@MSalters我很抱歉,似乎windows 7在默认情况下以admin integrity=high的身份运行该程序,即使出于某种原因我没有以admin的身份运行它,但与windows 10不同的是,我编辑了question@MarkSetchell默认情况下是这样的,因为普通windows用户只需创建一个管理员用户名,由于某些原因,windows 7默认以管理员身份运行,即使程序没有强制它以管理员身份运行,甚至用户出于未知原因单击它以管理员身份运行,即使使用最大UAC,它仍然以管理员身份运行,而无需询问我系统上的用户!SCSI passTour命令仅适用于SCSI驱动器。