]> git.k1024.org Git - pylibacl.git/blob - IMPLEMENTATION
Renamed some fields from ob_x to x, as per other modules in python
[pylibacl.git] / IMPLEMENTATION
1 The IEEE 1003.1e draft 17 ("POSIX.1e") describes a set of 17
2 functions. These are grouped into three groups, based on their
3 portability: 
4     - first group, the most portable one. All systems which claim to
5       support POSIX.1e should implement these: 
6      acl_delete_def_file(3), acl_dup(3), acl_free(3), acl_from_text(3),
7      acl_get_fd(3), acl_get_file(3), acl_init(3), acl_set_fd(3),
8      acl_set_file(3), acl_to_text(3), acl_valid(3)
9
10     - second group, containing the rest of the POSIX ACL functions. Systems
11       which claim to fully implement POSIX.1e should implement these:
12      acl_add_perm(3), acl_calc_mask(3), acl_clear_perms(3), acl_copy_entry(3),
13      acl_copy_ext(3), acl_copy_int(3), acl_create_entry(3),
14      acl_delete_entry(3), acl_delete_perm(3), acl_get_entry(3),
15      acl_get_permset(3), acl_get_qualifier(3), acl_get_tag_type(3),
16      acl_set_permset(3), acl_set_qualifier(3), acl_set_tag_type(3),
17      acl_size(3)
18
19     - third group, containing extra functions implemented by each OS. These
20       are non-portable version. Both Linux and FreeBSD implement some extra 
21       function.
22
23 Thus we have the level of compliance. Depending on whether the system
24 library support the second group, you get some extra methods for the
25 ACL object.
26
27
28 Internal structure
29
30     The POSIX draft has the following stuff (correct me if I'm wrong):
31         - an ACL is denoted by acl_t
32         - an ACL contains many acl_entry_t, these are the individual entries
33           in the list; they always! belong to an acl_t
34         - each entry_t has a qualifier (think uid_t or gid_t), whose type is 
35           denoted by the acl_tag_t type, and an acl_permset_t
36         - the acl_permset_t can contain acl_perm_t value (ACL_READ, ACL_WRITE,
37           ACL_EXECUTE, ACL_ADD, ACL_DELETE, ...)
38         - function to manipulate all these, and functions to manipulate files