2011-12-14 9 views
3

に物理ドライブを読む:下記のコードではMac OS X

​​

fdする物理ハードドライブの-1を持っていますが、それはUSB /フラッシュドライブのために正常に動作します。なぜこうなった?

+1

あなたは何を達成しようとしていますか?読み取り専用アクセスのためにディスクを開くことはおそらく終わりの手段に過ぎません。目標を達成するためにオブジェクト指向のCocoa APIを代わりに使用できますか? – Dov

+1

errnoは何を言いますか? –

答えて

2

これはほとんどの場合、アクセス許可の問題です。一般ユーザにrawディスクへのアクセス権を与えることはセキュリティホールです(ユーザはすべてのファイルアクセス権を迂回し、ディスク上で必要なものを読み取ることができます)。

以下の例では、disk0は私の内蔵ハードドライブで、disk3はUSBフラッシュドライブです。 OS Xでは、 "管理者"でさえ、固定ディスクへのrawディスクアクセスを許可するoperatorグループの一部ではありません。

pip$ ls -ltr /dev/disk*
brw-r----- 1 root operator 14, 3 Dec 12 10:14 /dev/disk0s3
brw-r----- 1 root operator 14, 2 Dec 12 10:14 /dev/disk0s2
brw-r----- 1 root operator 14, 1 Dec 12 10:14 /dev/disk0s1
brw-r----- 1 root operator 14, 0 Dec 12 10:14 /dev/disk0
br--r----- 1 root operator 14, 4 Dec 14 15:15 /dev/disk1
brw-r----- 1 root operator 14, 7 Dec 14 15:15 /dev/disk2s2
br--r----- 1 root operator 14, 6 Dec 14 15:15 /dev/disk2s1
brw-r----- 1 root operator 14, 5 Dec 14 15:15 /dev/disk2
brw-r----- 1 pip operator 14, 9 Dec 14 15:18 /dev/disk3s1
brw-r----- 1 pip operator 14, 8 Dec 14 15:18 /dev/disk3

あなたのアプリは本当にあなたが、sudoでルートとしてそれを実行する必要がoperatorグループに自分を追加したり、権限昇格のためのOS XのAPIを使用しますどちらかrawディスクアクセスを必要とする場合。