【问题标题】:Is there any way to programmatically modify file permisson(read/write) in Mac OSX? [duplicate]有没有办法以编程方式修改 Mac OS X 中的文件权限(读/写)? [复制]
【发布时间】:2012-10-25 07:37:43
【问题描述】:

可能重复:
Setting file permissions in Objective-C

我想根据某些场景为文件应用读/写权限。

有没有办法在 Mac OSX 中以编程方式修改文件权限(读/写)?

提前感谢您的帮助。

【问题讨论】:

标签: objective-c macos file-permissions


【解决方案1】:

这是我每次使用的sn-p:

NSMutableDictionary *dict = [[NSMutableDictionary alloc] init]; 

int r = 04; // read
int w = 02; // write
int x = 01; // execute

int owner = (r | w | x) * (8 * 8);
int group = (r | w)         * (8);
int other = (x);

int permissions = owner + group + other;

[dict setObject:[NSNumber numberWithInt:permissions] forKey:NSFilePosixPermissions]; 

NSError *error = nil;
[[NSFileManager defaultManager] setAttributes:dict ofItemAtPath:[file path] error:&error];

这使得文件可以对所有者进行读/写/执行,对组读/写,对其他人可执行。

只需调整您的权限设置...

【讨论】:

  • 样式:如果您要为rwx 使用八进制值,请使用0100010 而不是8*88也。 (虽然很遗憾,我认为八进制可能只是让大多数人感到困惑)。
  • 我使用八进制数,然后将它们移位。不知道你的意思?
  • 我完全明白你的意思。 FWIW,您不要移动它们,而是将它们相乘(在这种情况下是等效的)。如果您对所有文字都使用八进制而不是混合八进制和十进制,那么在风格上会更简洁。
  • 嗯,好的,我知道了,谢谢; )
  • @septi 尝试更改 \Library\ (不是 ~\Library) 中文件夹之一的权限时抛出错误,但我们可以手动执行相同操作。
猜你喜欢
  • 2013-04-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-19
  • 1970-01-01
  • 1970-01-01
  • 2010-09-25
  • 1970-01-01
相关资源
最近更新 更多