viu*_*ser 5 permissions devices
如果出于基准测试的目的,必须使用hdparm
或dd
直接在设备上,我想知道安全地执行此操作的正确方法是什么。
假设有问题的磁盘是/dev/sda
:
root@igloo:~# ls -l /dev/sd*
brw-rw---- 1 root disk 8, 0 May 29 08:23 /dev/sda
brw-rw---- 1 root disk 8, 1 May 29 08:23 /dev/sda1
Run Code Online (Sandbox Code Playgroud)
我真的不想写,以sda
在任何情况下。那么是否会建议以普通用户身份执行chmod o+r /dev/sda*
并运行dd
或hdparm
在其上运行?
cg9*_*909 11
chmod o+r /dev/sda*
非常危险,因为它允许任何程序读取您的整个磁盘(包括例如密码散列/etc/shadow
,如果您的根分区在sda
)!
有(至少)两种方法可以更安全地做到这一点:
disk
组并运行chmod g-w /dev/sda*
以阻止对该组的写访问。/dev/sda*
仅包含需要读取磁盘的用户的组,例如chgrp my-benchmarkers /dev/sda*
并使用 阻止对该组的写访问chmod
。请注意,在相关设备/dev
断开连接或计算机重新启动之前,设备节点上的组和权限更改只是暂时的。
一个问题可能是它hdparm
的大部分功能都需要写访问权限。您必须检查您想要的一切是否适用于只读访问。
编辑:看起来hdparm
不需要写访问权限。它更需要执行大多数 ioctl的CAP_SYS_RAWIO
能力。您可以使用setcap cap_sys_rawio+ep /sbin/hdparm
此功能为 hdparm 提供此功能。请注意,这允许任何可以执行hdparm
并且至少具有读取访问权限的设备文件的人几乎hdparm
可以在该设备上执行任何操作,包括--write-sector
手册页描述为“非常危险”、“极其危险”或“非常危险”。包装脚本可能是更好的解决方案。
如果不是,您要么必须授予写访问权限,要么编写可以由您的用户使用 sudo 规则以 root 身份执行的包装脚本。