summaryrefslogtreecommitdiffstats
path: root/doc/admin/conf_files/kadm5_acl.rst
blob: 6a009d2a5d9344337ab32809213276f4b573e10b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
.. _kadm5.acl(5):

kadm5.acl
=========

DESCRIPTION
-----------

The Kerberos :ref:`kadmind(8)` daemon uses an Access Control List
(ACL) file to manage access rights to the Kerberos database.
For operations that affect principals, the ACL file also controls
which principals can operate on which other principals.

The default location of the Kerberos ACL file is
|kdcdir|\ ``/kadm5.acl``  unless this is overridden by the *acl_file*
variable in :ref:`kdc.conf(5)`.

SYNTAX
------

Empty lines and lines starting with the sharp sign (``#``) are
ignored.  Lines containing ACL entries have the format:

 ::

    principal  permissions  [target_principal  [restrictions] ]

.. note::

          Line order in the ACL file is important.  The first matching entry
          will control access for an actor principal on a target principal.

*principal*
    (Partially or fully qualified Kerberos principal name.) Specifies
    the principal whose permissions are to be set.

    Each component of the name may be wildcarded using the ``*``
    character.

*permissions*
    Specifies what operations may or may not be performed by a
    *principal* matching a particular entry.  This is a string of one or
    more of the following list of characters or their upper-case
    counterparts.  If the character is *upper-case*, then the operation
    is disallowed.  If the character is *lower-case*, then the operation
    is permitted.

    == ======================================================
    a  [Dis]allows the addition of principals or policies
    c  [Dis]allows the changing of passwords for principals
    d  [Dis]allows the deletion of principals or policies
    i  [Dis]allows inquiries about principals or policies
    l  [Dis]allows the listing of principals or policies
    m  [Dis]allows the modification of principals or policies
    p  [Dis]allows the propagation of the principal database (used in :ref:`incr_db_prop`)
    s  [Dis]allows the explicit setting of the key for a principal
    x  Short for admcilsp. All privileges
    \* Same as x.
    == ======================================================


*target_principal*
    (Optional. Partially or fully qualified Kerberos principal name.)
    Specifies the principal on which *permissions* may be applied.
    Each component of the name may be wildcarded using the ``*``
    character.

    *target_principal* can also include back-references to *principal*,
    in which ``*number`` matches the corresponding wildcard in
    *principal*.

*restrictions*
    (Optional) A string of flags. Allowed restrictions are:

        {+\|-}\ *flagname*
            flag is forced to the indicated value.  The permissible flags
            are the same as the + and - flags for the kadmin
            :ref:`add_principal` and :ref:`modify_principal` commands.

        *-clearpolicy*
            policy is forced to be empty.

        *-policy pol*
            policy is forced to be *pol*.

        -{*expire, pwexpire, maxlife, maxrenewlife*} *time*
            (:ref:`getdate` string) associated value will be forced to
            MIN(*time*, requested value).

    The above flags act as restrictions on any add or modify operation
    which is allowed due to that ACL line.

.. warning::

    If the kadmind ACL file is modified, the kadmind daemon needs to be
    restarted for changes to take effect.

EXAMPLE
-------

Here is an example of a kadm5.acl file.

 ::

    */admin@ATHENA.MIT.EDU        *                           # line 1
    joeadmin@ATHENA.MIT.EDU   ADMCIL                          # line 2
    joeadmin/*@ATHENA.MIT.EDU il  */root@ATHENA.MIT.EDU       # line 3
    */root@ATHENA.MIT.EDU     cil *1@ATHENA.MIT.EDU           # line 4
    */*@ATHENA.MIT.EDU        i                               # line 5
    */admin@EXAMPLE.COM       x   * -maxlife 9h -postdateable # line 6

(line 1) Any principal in the ``ATHENA.MIT.EDU`` realm with
an ``admin`` instance has all administrative privileges.

(lines 1-3) The user ``joeadmin`` has all permissions with his
``admin`` instance, ``joeadmin/admin@ATHENA.MIT.EDU`` (matches line
1).  He has no permissions at all with his null instance,
``joeadmin@ATHENA.MIT.EDU`` (matches line 2).  His ``root`` and other
non-``admin``, non-null instances (e.g., ``extra`` or ``dbadmin``) have
inquire and list permissions with any principal that has the
instance ``root`` (matches line 3).

(line 4) Any ``root`` principal in ``ATHENA.MIT.EDU`` can inquire, list,
or change the password of their null instance, but not any other
null instance.  (Here, ``*1`` denotes a back-reference to the
component matching the first wildcard in the actor principal.)

(line 5) Any principal in the realm ``ATHENA.MIT.EDU`` (except for
``joeadmin@ATHENA.MIT.EDU``, as mentioned above) has inquire
privileges.

(line 6) Finally, any principal with an ``admin`` instance in ``EXAMPLE.COM``
has all permissions, but any principal that they create or modify will
not be able to get postdateable tickets or tickets with a life of
longer than 9 hours.

SEE ALSO
--------

:ref:`kdc.conf(5)`, :ref:`kadmind(8)`