Annotation of 43BSDReno/kerberosIV/acl/acl_files.doc, revision 1.1

1.1     ! root        1: PROTOTYPE ACL LIBRARY
        !             2: 
        !             3: Introduction
        !             4:        
        !             5: An access control list (ACL) is a list of principals, where each
        !             6: principal is is represented by a text string which cannot contain
        !             7: whitespace.  The library allows application programs to refer to named
        !             8: access control lists to test membership and to atomically add and
        !             9: delete principals using a natural and intuitive interface.  At
        !            10: present, the names of access control lists are required to be Unix
        !            11: filenames, and refer to human-readable Unix files; in the future, when
        !            12: a networked ACL server is implemented, the names may refer to a
        !            13: different namespace specific to the ACL service.
        !            14: 
        !            15: 
        !            16: Usage
        !            17: 
        !            18: cc <files> -lacl -lkrb.
        !            19: 
        !            20: 
        !            21: 
        !            22: Principal Names
        !            23: 
        !            24: Principal names have the form
        !            25: 
        !            26: <name>[.<instance>][@<realm>]
        !            27: 
        !            28: e.g.
        !            29: 
        !            30: asp
        !            31: asp.root
        !            32: [email protected]
        !            33: [email protected]
        !            34: [email protected]
        !            35: 
        !            36: It is possible for principals to be underspecified.  If instance is
        !            37: missing, it is assumed to be "".  If realm is missing, it is assumed
        !            38: to be local_realm.  The canonical form contains all of name, instance,
        !            39: and realm; the acl_add and acl_delete routines will always
        !            40: leave the file in that form.  Note that the canonical form of
        !            41: [email protected] is actually [email protected].
        !            42: 
        !            43: 
        !            44: Routines
        !            45: 
        !            46: acl_canonicalize_principal(principal, buf)
        !            47: char *principal;
        !            48: char *buf;     /*RETVAL*/
        !            49: 
        !            50: Store the canonical form of principal in buf.  Buf must contain enough
        !            51: space to store a principal, given the limits on the sizes of name,
        !            52: instance, and realm specified in /usr/include/krb.h.
        !            53: 
        !            54: acl_check(acl, principal)
        !            55: char *acl;
        !            56: char *principal;
        !            57: 
        !            58: Returns nonzero if principal appears in acl.  Returns 0 if principal
        !            59: does not appear in acl, or if an error occurs.  Canonicalizes
        !            60: principal before checking, and allows the ACL to contain wildcards.
        !            61: 
        !            62: acl_exact_match(acl, principal)
        !            63: char *acl;
        !            64: char *principal;
        !            65: 
        !            66: Like acl_check, but does no canonicalization or wildcarding.
        !            67: 
        !            68: acl_add(acl, principal)
        !            69: char *acl;
        !            70: char *principal;
        !            71: 
        !            72: Atomically adds principal to acl.  Returns 0 if successful, nonzero
        !            73: otherwise.  It is considered a failure if principal is already in acl.
        !            74: This routine will canonicalize principal, but will treat wildcards
        !            75: literally.
        !            76: 
        !            77: acl_delete(acl, principal)
        !            78: char *acl;
        !            79: char *principal;
        !            80: 
        !            81: Atomically deletes principal from acl.  Returns 0 if successful,
        !            82: nonzero otherwise.  It is consider a failure if principal is not
        !            83: already in acl.  This routine will canonicalize principal, but will
        !            84: treat wildcards literally.
        !            85: 
        !            86: acl_initialize(acl, mode)
        !            87: char *acl;
        !            88: int mode;
        !            89: 
        !            90: Initialize acl.  If acl file does not exist, creates it with mode
        !            91: mode.  If acl exists, removes all members.  Returns 0 if successful,
        !            92: nonzero otherwise.  WARNING: Mode argument is likely to change with
        !            93: the eventual introduction of an ACL service.  
        !            94: 
        !            95: 
        !            96: Known problems
        !            97: 
        !            98: In the presence of concurrency, there is a very small chance that
        !            99: acl_add or acl_delete could report success even though it would have
        !           100: had no effect.  This is a necessary side effect of using lock files
        !           101: for concurrency control rather than flock(2), which is not supported
        !           102: by NFS.
        !           103: 
        !           104: The current implementation caches ACLs in memory in a hash-table
        !           105: format for increased efficiency in checking membership; one effect of
        !           106: the caching scheme is that one file descriptor will be kept open for
        !           107: each ACL cached, up to a maximum of 8.

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.