ディスク装置ファイルの読み取り許可

ディスク装置ファイルの読み取り許可

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つの方法があります。

  1. ディスクを読み取る必要があるすべてのユーザーをこのdiskグループに追加し、chmod g-w /dev/sda*このグループへの書き込みアクセスをブロックするには、実行します。
  2. /dev/sda*たとえば、ディスクを読み取る必要があるユーザーのみを含むグループにグループを変更し、を使用してchgrp my-benchmarkers /dev/sda*そのグループへの書き込みアクセスをブロックしますchmod

デバイスノードのグループと権限の変更は、接続されているデバイスの接続が/dev切断されるか、コンピュータが再起動されるまで一時的です。

hdparm1つの問題は、ほとんどの機能に書き込みアクセスが必要であることです。必要なすべての項目に対して読み取り専用アクセスが可能であることを確認する必要があります。

編集する:hdparm書き込みアクセスが不要なようです。もっと必要CAP_SYS_RAWIO 能力ほとんどのioctlを実行します。setcap cap_sys_rawio+ep /sbin/hdparmhdparmを使用してこの機能を提供できます。これが許されることに注意してください。誰でもマニュアルページで、「非常に危険」、「非常に危険」、または「例外的に危険」と記載されている他のすべての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として実行する必要があります。

関連情報