如何从Mac OS符号链接中删除ACL



MacOS上的一个已知问题是,提供的命令行工具(chmod)无法从符号链接中删除ACL:https://discussions.apple.com/thread/1440377?start=0&tstart=0

所以我想我应该破解C编译器并完成它。。在我意识到ACL还没有发明之前,我上次在Unix上使用C。

有人能说出我可以利用什么系统来实现这一点吗?

M。

函数acl_get_link_np(path, ACL_TYPE_EXTENDED)应该可以让您在没有以下符号链接的情况下获得路径的ACL。

此外,我认为如果您首先使用open(path, O_NOFOLLOW)打开符号链接,acl_get_link_np(fd, ACL_TYPE_EXTENDED)应该可以工作。

要从文件中删除所有ACL,您需要使用以下代码:

acl_t acl = acl_get_link_np (path, ACL_TYPE_EXTENDED);
if (acl) {
    acl_entry_t entry;
    int res = acl_get_entry (acl, ACL_FIRST_ENTRY, &entry);
    bool didModify = false;
    while (res == 0) {
        res = acl_delete_entry (acl, entry);
        if (res) break;
        didModify = true;
        res = acl_get_entry (acl, ACL_NEXT_ENTRY, &entry);
    }
    if (didModify) {
        int res = acl_set_link_np (path, ACL_TYPE_EXTENDED, acl);
        if (res) {
            NSLog(@"%s – Write ACL: %s", path, strerror(errno));
        }
    }
    acl_free (acl);
}

最新更新