【发布时间】:2011-07-20 06:04:47
【问题描述】:
在 Mac OS X 上,ls 和 chmod 有一些额外的功能来处理操作系统在默认 posix 权限之上的ACL 权限。我have some permission problems that need fixing 和wrote a script 帮助修复这些问题,直到Apple 修复该错误。这是解析ls 以获取ACL 的代码:
result = `#{Escape.shell_command(["ls", "-led", file])}`
if result.empty?
# ls error...
else
@acl = result.split("\n")[1..-1].collect do |ace|
ace = ace.split(": ", 2)
ace[0] = ace[0].to_i
ace
end
# acl processing code...
end
我添加了 escape gem,但它实际上仍然是相同的代码。
但我知道在脚本中解析ls 通常是个坏主意,那么有没有更好的方法从文件中读取ACL 权限?
我需要 ACE 及其索引,以便稍后在脚本中与 chmod 一起使用:
system("chmod -a# #{index} \"#{file}\"")
【问题讨论】:
-
ls -led获取 OS X 高级属性,对吗?我认为 Ruby 不会内置对这些属性的支持。 @Swanand:该模式只处理普通的 unix 权限位不是吗? -
@Nemo157 是的,抱歉我忘了,
-e选项可能是 OS X 独有的。它在标准-l输出之后打印出 ACL
标签: ruby macos permissions