OSX:以编程方式检测“受限制的”文件系统标志

时间:2018-12-11 16:40:11

标签: swift macos

从El Capitan开始,系统具有系统完整性保护功能,该功能不允许某些文件夹和文件进行某些活动。使用终端“ ls lO”命令,您可以看到特定文件或文件夹具有的标志。

drwxr-xr-x@   3 root  wheel  hidden                96 Aug 12  2014 opt
drwxr-xr-x    6 root  wheel  sunlnk,hidden        192 Nov 28 15:14 private
drwxr-xr-x@  64 root  wheel  restricted,hidden   2048 Nov 29 13:48 sbin
lrwxr-xr-x@   1 root  wheel  restricted,hidden     11 Nov 28 15:13 tmp -> private/tmp
drwxr-xr-x@  10 root  wheel  restricted,hidden    320 Nov 28 15:21 usr
lrwxr-xr-x@   1 root  wheel  restricted,hidden     11 Nov 28 15:13 var -> private/var

我对“受限”标志感兴趣。在不执行终端命令的情况下如何使用Swift找到它?

我想强调的是,在代码中执行Process()并不是适合需要的方法。

可以从此处URLResourceKey通过“ isHidden”属性检测到“ Hidden”标志。但是,关于“限制”没有任何内容。

有人可以指出我正确的方向吗?

1 个答案:

答案 0 :(得分:5)

<% link_to some_path do %> <%= submit_tag("Save Email".upcase, name:"email_change","data-target":"email_change.submit") %> <% end %> 工具上的-O选项列出的内容是文件标志。这些可以通过BSD层中的ls函数来读取,并且可以在结果结构的stat()字段中找到。

st_flags输出中的“ restricted”标志对应于ls,因此您可以通过执行以下操作来读取它:

SF_RESTRICTED