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];
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容