Mac开发下的文件权限的读写

最近开发文件相关操作的应用,对文件相关权限做了一番了解,这里总结一下。

//NSFileManager下包含了获取文件读、写、执行、删除权限的接口
- (BOOL)isReadableFileAtPath:(NSString *)path;
- (BOOL)isWritableFileAtPath:(NSString *)path;
- (BOOL)isExecutableFileAtPath:(NSString *)path;
- (BOOL)isDeletableFileAtPath:(NSString *)path;

关于文件的权限的修改直接的相关接口目前没有发现,直接使用chmod来修改了。文件系统下的文件权限按照读r、写w、执行x来设定的。
其中用数字来表示,则r:4,w:2,x:1,而文件的用户分为3种:文件所有者、用户群组、其他用户,

  chmod 777 filepath          //用这个来具体解释下,
  • 3个7分别代表3种用户的权限,第一位代表的是文件所有者的权限,第二位代表的是用户群组的权限,第三位代表的是其他用户的权限。


    WeChat16d29df0c1dff7953dc4f62fd1364fad.png
  • 用户的读写执行权限都具有则为rwz,只具有读权限则r--,上面提到每项权限分别用数字代替,则rwz为4+2+1,r--为4+0+0,

  • 所以上面的 chmod 777 filepath的含义为所有人均具有所有权限rwz。

解释了chmod的权限的相关设置规则,我们看下代码具体的实现:

+ (void)changeFileAllowWrited:(BOOL)isAllow filePath:(NSString *)filePath
{
    //777:rwx, r=4,w=2,x=1 所有人具有所有权限
    //555:3个管理者都具有5权限
    NSPipe *pipe = [NSPipe pipe];
    NSArray *args = @[@"-R", @"555", filePath];
    if (isAllow)
    {
        args = @[@"-R", @"777", filePath];
    }
    NSTask *task = [[NSTask alloc]init];
    task.launchPath = @"/bin/chmod";
    task.arguments = args;
    task.standardInput = pipe;
    [task launch];
    [task waitUntilExit];
}

你可能感兴趣的:(Mac开发下的文件权限的读写)