1

ファイルのアクセス許可とファイルの所有権を変更したい(root o mobile)アクセス許可(777)を正常に設定する方法をすでに見つけました。しかし今、私はファイルの所有権を取得しようとしています。

これは私がすでに得たものですが、うまくいかないようです:

NSMutableDictionary *dict2 = [[NSMutableDictionary alloc] init]; 
    [dict2 setObject:[NSString stringWithFormat:@"mobile"] forKey:NSFileOwnerAccountName]; 
    [dict2 setObject:[NSString stringWithFormat:@"mobile"] forKey:NSFileGroupOwnerAccountName];
    NSFileManager *fm2 = [NSFileManager defaultManager]; 
    NSError *error2; 
    [fm2 setAttributes:dict2 ofItemAtPath:omgPath error:&error2];

誰かがこれを手伝ってくれますか?:)

権限の作業コードは次のとおりです。

NSMutableDictionary *dict = [[NSMutableDictionary alloc] init]; 
    [dict setObject:[NSNumber numberWithInt:511] forKey:NSFilePosixPermissions]; 
    NSFileManager *fm = [NSFileManager defaultManager]; 
    NSError *error1; 
    [fm setAttributes:dict ofItemAtPath:omgPath error:&error1];

ここに別の大きな問題があります:

ファイルのアクセス許可がない場合(ファイルにアクセス許可がない場合)、chownコマンドを使用できません。それ以外の場合は、これを使用します。「所有者」の所有権がrootの場合、権限スクリプトを実行できません。だから私はもう一方を必要とせずに一方を機能させる必要があります。

したがって、所有権の設定は権限なしでは機能しません権限の設定は、所有権がrootではなくモバイルの場合にのみ機能します

何か案は?

4

2 に答える 2

0

何らかの理由でコードセグメンテーション違反が発生しました。正確なエラーはわかりませんが、スタイルが少し変わっています。たとえば、通常のdictではなく可変のdictを作成したのはなぜですか。そして、通常の文字列が必要なのに、なぜNSStringWithFormatを使用したのですか?とにかく、どの正確な問題がセグメンテーション違反につながったかはわかりませんが、ここで修正されています:

NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:
                          @"mobile",NSFileOwnerAccountName,
                          @"mobile",NSFileGroupOwnerAccountName,
                          nil];

NSError *error = nil;
[[NSFileManager defaultManager] setAttributes:dict ofItemAtPath:omgPath error:&error];
if(error){
    NSLog(@"Error settings permission %@",[error description]);
}
于 2013-04-27T22:52:27.293 に答える
0

スーパーユーザーのみがファイルの所有権を設定できます。また、一般に、低レベルのAPIを使用してタスクを実行できる場合は、特権ヘルパーツールのCocoaを使用しないでください。これにより、攻撃の露出が減少します。

メソッドが失敗した場合に参照によって返されるエラーオブジェクトを確認する必要があります(indiekidukの回答とは異なり、エラー変数がであるかどうかではなく、メソッドのブール値の戻り値を調べて判断する必要がありますnil)。失敗した理由を説明します。

于 2013-04-28T00:20:30.503 に答える