2011-01-04 5 views
6

NSFileManagerを使用してシステムファイルをアプリケーションに移動する必要があり、ルートアクセス権がないようです。この特権を得るための最も簡単な方法は何でしょうか?私はAppleが提供しているBetterAuthorizationSampleコードを調べましたが、ユーザーが承認を得た後にNSFileManagerがそのタスクをどのように実行できるかわかりません。もし誰かが私を助けることができたら、それは素晴らしいだろう!NSFileManagerのルートアクセスを取得する

おかげで、

ケビン

答えて

3

更新:BLAuthenticationは仕事をしながら、反する、AuthorizationExecuteWithPriviledgesと呼ばれる古い、そして非常に非推奨の機能を利用して、まだ参照のためにこの答えを使用している人々を更新するには現代のセキュリティパラダイムであり、非難されています(しばらくありました)。 Mac OS X Lion用に開発している場合は、ServicesManagementフレームワークを使用して、ヘルパーツールとしての権限を持つコードを実行できるようになります。

特権ヘルパーツールを作成して起動する方法については、私の質問Writing a Privileged Helper Tool with SMJobBless()を参照してください。あなたはBLAuthenticationクラスで管理者認証の下で実行標準mvcpツールを使用してになりますので


は、NSFileManagerを承認する本当の簡単な方法はありません。残念ながら、元の著者のウェブサイトはダウンしていますが、クラスのコピーをGoogle上に簡単に見つけることができます(必要に応じてコピーをアップロードすることもできます)。上記のコードは、管理者のパスワードの入力を要求し、5のデフォルトの時間制限のためのプログラムを認証します

#define MOVE @"/bin/mv" 
if (![[BLAuthentication sharedInstance] isAuthenticated:MOVE]) { 
    [[BLAuthentication sharedInstance] authenticate:MOVE]; 
} 

NSArray *arguments = [NSArray arrayWithObjects:@"location1", @"location2", nil]; 
[[BLAuthentication sharedInstance] executeCommand:MOVE withArgs:arguments]; 

BLAuthentication


は、何をやろうとしていることは、このような何かを行きます分。


WARNING
はもちろん、常にシステムファイルに注意してください!可能であれば、移動や操作を避けてください。特に、プログラムが他の誰かのコンピュータ上で実行されるような場合(何かがうまくいかない場合、あなたは非難されるでしょう)!

+0

私は実際に投稿を感謝します!だから私はまだNSFileManagerクラスを使用することができますか、または今から "mv"コマンドを使用しなければなりませんか?ところで、あなたが私のためにそれをアップロードすることができれば素晴らしいでしょう!ありがとう!!!! – lab12

+0

さて、BLAuthenticationクラスを見つけて、それが2001年であったことに気付きました。それが10年前のようなものであれば、まだ動作しますか?また、どのようにNSTaskの部分を実装するかに関する情報を提供できますか? – lab12

+0

Kevin、いくつかのことを明確にする:a)通常のファイルの場合、引き続き 'NSFileManager'を使うことができますが、rootアクセスの場合は上記のように' BLAuthentication'を使います。 b)申し訳ありませんが、私の間違い。あなたは 'NSTask'を必要としません(私はコードと共に私の答えのその部分を更新するのを忘れましたが、今は修正されています)。コマンドへのパス(@ "/ bin/cp"または@ "/ bin/mv")と一緒に '-executeCommand:withArgs:'を使用して、移動/コピー操作を実行してください。c)はい、 'BLAuthentication'は* old *ですが、まだコンパイルされ、10.6以下であっても完璧に正常に動作します(セキュリティフレームワークはほとんど変化しません)。 –

関連する問題