2012-03-21 19 views
0

NSFileOwnerAccountNameNSFileGroupOwnerAccountNameの割り当てが機能しません。作成されたディレクトリのデフォルトは、アカウントcoderamaとグループstaffです。NSFileManagerを使用して所有者を `root 'として新しいディレクトリを作成できません

NSFileManager *fileManager = [NSFileManager defaultManager]; 
NSMutableDictionary *attr = [NSMutableDictionary dictionary]; 
[attr setObject:@"root" forKey:NSFileOwnerAccountName]; 
[attr setObject:@"wheel" forKey:NSFileGroupOwnerAccountName]; 
[attr setObject:[NSNumber numberWithInt:0755] forKey:NSFilePosixPermissions]; 

[fileManager createDirectoryAtPath:dir withIntermediateDirectories:TRUE attributes:attr error:&error]; 
+0

エラーにはどのような情報が含まれていますか? – trudyscousin

+0

エラーはありません – Coderama

+0

ああ。まあ、あなたのコードサンプルによれば、あなたはそれをチェックしていないか、BOOLの結果をチェックしているように見えませんでした。しかし、本当に何かエラーが出ていなければ、errnoを試してみてください。 – trudyscousin

答えて

2

許可なくrootが所有するものは作成できない可能性が高いです。しかし、あなたと仮定すると...は許可を持っている

ドキュメントはcreateDirectoryAtPath:withIntermediateDirectories:attributes:のために特別にこの制限を言及していないが、関連する方法setAttributes:ofItemAtPath:error:のために、あなたはNSFileOwnerAccountNameNSFileGroupOwnerAccountNameを使用することはできません。代わりにNSFileOwnerAccountIDNSFileGroupOwnerAccountIDというアカウントIDを使用する必要があります。 …Nameベースのキーを使用する場合、それらは無視されます。

createDirectoryAtPath:withIntermediateDirectories:attributes:にもこの制限があります。名前の代わりにIDを設定しようとしていますが、これはうまくいくと思います。

関連する問題