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
私は本当にそうしたくない書くとにかくsda
。それでは、通常のユーザーとしてchmod o+r /dev/sda*
実行するのが良いでしょうかdd
、それとも実行するのが良いでしょうか?hdparm
答え1
chmod o+r /dev/sda*
/etc/shadow
すべてのプログラムがディスク全体(たとえば、ルートパーティションがある場合はパスワードハッシュを含むsda
)を読み取ることができるため、非常に危険です!
これをより安全に実行するには、少なくとも2つの方法があります。
- ディスクを読み取る必要があるすべてのユーザーをこの
disk
グループに追加し、chmod g-w /dev/sda*
このグループへの書き込みアクセスをブロックするには、実行します。 /dev/sda*
たとえば、ディスクを読み取る必要があるユーザーのみを含むグループにグループを変更し、を使用してchgrp my-benchmarkers /dev/sda*
そのグループへの書き込みアクセスをブロックしますchmod
。
デバイスノードのグループと権限の変更は、接続されているデバイスの接続が/dev
切断されるか、コンピュータが再起動されるまで一時的です。
hdparm
1つの問題は、ほとんどの機能に書き込みアクセスが必要であることです。必要なすべての項目に対して読み取り専用アクセスが可能であることを確認する必要があります。
編集する:hdparm
書き込みアクセスが不要なようです。もっと必要CAP_SYS_RAWIO
能力ほとんどのioctlを実行します。setcap cap_sys_rawio+ep /sbin/hdparm
hdparmを使用してこの機能を提供できます。これが許されることに注意してください。誰でもマニュアルページで、「非常に危険」、「非常に危険」、または「例外的に危険」と記載されている他のすべてのhdparmを含む、そのデバイスで実行できるほとんどすべてのタスクを実行するためにデバイスファイルを実行し、hdparm
少なくとも読み取りアクセス権を持つことができる人を注文する。ラッパースクリプトはより良いソリューションかもしれません。hdparm
--write-sector
それ以外の場合は、書き込みアクセス権を付与するか、sudoルールを使用してrootユーザーが実行できるラッパースクリプトを作成する必要があります。
答え2
/ devの一部の展開ではこれをサポートしていない可能性がありますが、1つの可能性はACLを使用することです。例:
$ dd if=/dev/sda bs=1M count=200 of=/dev/null
dd: failed to open '/dev/sda': Permission denied
$ sudo setfacl -m u:youruser:r /dev/sd*
$ dd if=/dev/sda bs=1M count=200 of=/dev/null
200+0 records in
200+0 records out
209715200 bytes (210 MB, 200 MiB) copied, 0.0335544 s, 6.3 GB/s
AFAIKhdparm -t
それでもrootとして実行する必要があります。