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
問題となるのは、ほとんどの機能に書き込みアクセスが必要になることです。必要なものがすべて読み取り専用アクセスで動作するかどうかを確認する必要があります。
編集:hdparm
書き込みアクセスは必要ないようです。むしろ、CAP_SYS_RAWIO
能力ほとんどのioctlを実行するために使用できます。setcap cap_sys_rawio+ep /sbin/hdparm
この機能をhdparmに与えるには、を使用します。これにより、誰でもhdparm
デバイス ファイルへの読み取りアクセス以上を実行し、hdparm
そのデバイスで実質的に何でも実行できるユーザー。これには、--write-sector
マニュアル ページで「非常に危険」、「極めて危険」、「極めて危険」と説明されているその他のすべての hdparm コマンドも含まれます。ラッパー スクリプトの方がよい解決策かもしれません。
そうでない場合は、書き込みアクセス権を付与するか、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
ただし、私の知る限りhdparm -t
では、root として実行する必要があります。