0

Mac アプリケーションで /Libary/Logs にファイルを作成したいと考えています。

次のコードを使用しています。

NSError *error = nil;
NSFileManager *fm = [NSFileManager defaultManager];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSLocalDomainMask, YES);
NSString *path = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"Logs"];
//path = [path stringByAppendingPathComponent:@"e315Updater"];

if ( ![fm fileExistsAtPath:path] )
{
    BOOL sucess = [fm createDirectoryAtPath:path
 withIntermediateDirectories:YES
                  attributes:nil
                       error:&error];

    NSLog(@"Success value = %d",sucess);
    if ( error ){
        NSLog(@"Err = %@",[error description]);
    }
}

すべてのユーザーがこのディレクトリへの読み取り/書き込み権限を持っていないため、権限の問題が原因で失敗し続けます。

また、NSFilePosixPermissions を使用して /Libary/Logs ディレクトリにアクセス許可を設定しようとしましたが、読み取り/書き込みアクセス許可も設定できません。

そのため、「ユーザーライブラリではなくメインディスクのライブラリ/ログ内のファイルを作成して読み書きする方法」を理解するのに助けが必要です

4

1 に答える 1

0

OS X パーミッション モデルでは、通常のユーザーは /Library/Logs を含むほとんどのシステム ディレクトリに書き込むことができません。これを回避する方法が見つかった場合は、セキュリティ バグが見つかったので、修正する必要があります (そうすると、アプリは失敗します)。権限を変更すると (最初に権限を昇格させれば可能です)、OS X のセキュリティ モデルを破ることになります。これは非常に悪い考えです。

自分のプライベート ログに直接書き込もうとするのではなく、NSLogを介してシステム ロギング機能を使用するか、下位レベルのインターフェイスASL または syslogのいずれかを使用することをお勧めします。独自のプライベート ログ ファイルを取得することはできませんが、実際には機能します。

于 2013-08-07T16:25:00.573 に答える