/usr/share/pyshared/ipalib/plugins/sudocmd.py is in python-freeipa 2.1.4-0ubuntu1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
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 | # Authors:
# Jr Aquino <jr.aquino@citrixonline.com>
#
# Copyright (C) 2010 Red Hat
# see file 'COPYING' for use and warranty information
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
import platform
import os
import sys
from ipalib import api, errors, util
from ipalib import Str
from ipalib.plugins.baseldap import *
from ipalib import _, ngettext
__doc__ = _("""
Sudo Commands
Commands used as building blocks for sudo
EXAMPLES:
Create a new command
ipa sudocmd-add --desc='For reading log files' /usr/bin/less
Remove a command
ipa sudocmd-del /usr/bin/less
""")
topic = ('sudo', _('commands for controlling sudo configuration'))
class sudocmd(LDAPObject):
"""
Sudo Command object.
"""
container_dn = api.env.container_sudocmd
object_name = _('sudo command')
object_name_plural = _('sudo commands')
object_class = ['ipaobject', 'ipasudocmd']
# object_class_config = 'ipahostobjectclasses'
search_attributes = [
'sudocmd', 'description',
]
default_attributes = [
'sudocmd', 'description', 'memberof',
]
attribute_members = {
'memberof': ['sudocmdgroup'],
}
uuid_attribute = 'ipauniqueid'
label = _('Sudo Commands')
label_singular = _('Sudo Command')
takes_params = (
Str('sudocmd',
cli_name='command',
label=_('Sudo Command'),
primary_key=True,
),
Str('description?',
cli_name='desc',
label=_('Description'),
doc=_('A description of this command'),
),
)
def get_dn(self, *keys, **options):
if keys[-1].endswith('.'):
keys[-1] = keys[-1][:-1]
dn = super(sudocmd, self).get_dn(*keys, **options)
try:
self.backend.get_entry(dn, [''])
except errors.NotFound:
try:
(dn, entry_attrs) = self.backend.find_entry_by_attr(
'sudocmd', keys[-1], self.object_class, [''],
self.container_dn
)
except errors.NotFound:
pass
return dn
api.register(sudocmd)
class sudocmd_add(LDAPCreate):
__doc__ = _('Create new Sudo Command.')
msg_summary = _('Added Sudo Command "%(value)s"')
api.register(sudocmd_add)
class sudocmd_del(LDAPDelete):
__doc__ = _('Delete Sudo Command.')
msg_summary = _('Deleted Sudo Command "%(value)s"')
api.register(sudocmd_del)
class sudocmd_mod(LDAPUpdate):
__doc__ = _('Modify Sudo Command.')
msg_summary = _('Modified Sudo Command "%(value)s"')
api.register(sudocmd_mod)
class sudocmd_find(LDAPSearch):
__doc__ = _('Search for Sudo Commands.')
msg_summary = ngettext(
'%(count)d Sudo Command matched', '%(count)d Sudo Commands matched', 0
)
api.register(sudocmd_find)
class sudocmd_show(LDAPRetrieve):
__doc__ = _('Display Sudo Command.')
api.register(sudocmd_show)
|