LDAP Linux LDAP SUDO: различия между версиями
Sirmax (обсуждение | вклад) (Новая страница: «Катгория:Linux Катгория:LDAP Катгория:sudo =SUDO= Добавить разрешения в файл sudoers <BR>/etc/sudoers <…») |
Sirmax (обсуждение | вклад) |
||
| Строка 1: | Строка 1: | ||
| − | [[ |
+ | [[Категория:Linux]] |
| − | [[ |
+ | [[Категория:LDAP]] |
| − | [[ |
+ | [[Категория:sudo]] |
=SUDO= |
=SUDO= |
||
Добавить разрешения в файл sudoers |
Добавить разрешения в файл sudoers |
||
Версия 13:14, 19 мая 2016
SUDO
Добавить разрешения в файл sudoers
/etc/sudoers
%fuel_users ALL=(ALL:ALL) ALL
Подробно про sudo: https://wiki.archlinux.org/index.php/Sudo_%28%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9%29
SUDO LDAP
Файл sudoers на самом деле может храниться в LDAP
Co стороны LDAP-сервера требуется более детальная настройка
- Добавить схему для sudo
- Добавить объекты
Добавление схемы
Операция не совсем тривиальная - в пакете ldap-sudo поставляется старая схема и просто так ее залить на сервер не получиться. Требуется конвертация.
- Создать временный файл "конфигурации slapd". В моем примере это /root/slapd.conf с одной строкой:
# cat /root/slapd.conf include ./sudo.OpenLDAP
sudo.OpenLDAP - это файл скопированный из пакета ldap-sudo, /usr/share/doc/sudo-ldap/schema.OpenLDAP
Запустить конвертацию: создать директорию для будущих конфигов и сгенерировать их
# создаём директорию mkdir testdir
# запускаем slaptest slaptest -f slapd.conf -F testdir
В результате в testdir будет создано дерева конфигурации.
Интересующая нас схема расположена в файле testdir/cn=config/cn=sudo
# AUTO-GENERATED FILE - DO NOT EDIT!! Use ldapmodify.
# CRC32 75e9d97b
dn: cn={0}sudo
objectClass: olcSchemaConfig
cn: {0}sudo
olcAttributeTypes: {0}( 1.3.6.1.4.1.15953.9.1.1 NAME 'sudoUser' DESC 'User(s).
who may run sudo' EQUALITY caseExactIA5Match SUBSTR caseExactIA5SubstringsMa
tch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
olcAttributeTypes: {1}( 1.3.6.1.4.1.15953.9.1.2 NAME 'sudoHost' DESC 'Host(s).
who may run sudo' EQUALITY caseExactIA5Match SUBSTR caseExactIA5SubstringsMat
ch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
olcAttributeTypes: {2}( 1.3.6.1.4.1.15953.9.1.3 NAME 'sudoCommand' DESC 'Comma
nd(s) to be executed by sudo' EQUALITY caseExactIA5Match SYNTAX 1.3.6.1.4.1.1
466.115.121.1.26 )
olcAttributeTypes: {3}( 1.3.6.1.4.1.15953.9.1.4 NAME 'sudoRunAs' DESC 'User(s)
impersonated by sudo (deprecated)' EQUALITY caseExactIA5Match SYNTAX 1.3.6.1
.4.1.1466.115.121.1.26 )
olcAttributeTypes: {4}( 1.3.6.1.4.1.15953.9.1.5 NAME 'sudoOption' DESC 'Option
s(s) followed by sudo' EQUALITY caseExactIA5Match SYNTAX 1.3.6.1.4.1.1466.115
.121.1.26 )
olcAttributeTypes: {5}( 1.3.6.1.4.1.15953.9.1.6 NAME 'sudoRunAsUser' DESC 'Use
r(s) impersonated by sudo' EQUALITY caseExactIA5Match SYNTAX 1.3.6.1.4.1.1466
.115.121.1.26 )
olcAttributeTypes: {6}( 1.3.6.1.4.1.15953.9.1.7 NAME 'sudoRunAsGroup' DESC 'Gr
oup(s) impersonated by sudo' EQUALITY caseExactIA5Match SYNTAX 1.3.6.1.4.1.14
66.115.121.1.26 )
olcAttributeTypes: {7}( 1.3.6.1.4.1.15953.9.1.8 NAME 'sudoNotBefore' DESC 'Sta
rt of time interval for which the entry is valid' EQUALITY generalizedTimeMat
ch ORDERING generalizedTimeOrderingMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.24
)
olcAttributeTypes: {8}( 1.3.6.1.4.1.15953.9.1.9 NAME 'sudoNotAfter' DESC 'End.
of time interval for which the entry is valid' EQUALITY generalizedTimeMatch.
ORDERING generalizedTimeOrderingMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.24 )
olcAttributeTypes: {9}( 1.3.6.1.4.1.15953.9.1.10 NAME 'sudoOrder' DESC 'an int
eger to order the sudoRole entries' EQUALITY integerMatch ORDERING integerOrd
eringMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 )
olcObjectClasses: {0}( 1.3.6.1.4.1.15953.9.2.1 NAME 'sudoRole' DESC 'Sudoer En
tries' SUP top STRUCTURAL MUST cn MAY ( sudoUser $ sudoHost $ sudoCommand $ s
udoRunAs $ sudoRunAsUser $ sudoRunAsGroup $ sudoOption $ sudoOrder $ sudoNotB
efore $ sudoNotAfter $ description ) )
structuralObjectClass: olcSchemaConfig
entryUUID: aaaded3e-af4b-1035-8f99-f94b551aa988
creatorsName: cn=config
createTimestamp: 20160516004836Z
entryCSN: 20160516004836.159008Z#000000#000#000000
modifiersName: cn=config
modifyTimestamp: 20160516004836Z
Тут dn: cn={0}sudo - взято из имени файла. Если файл со схемой назывался по-другому, то и имя будет другое.
Файл требуется привести к следующему виду:
dn: cn=sudo,cn=schema,cn=config
objectClass: olcSchemaConfig
cn: sudo
olcAttributeTypes: {0}( 1.3.6.1.4.1.15953.9.1.1 NAME 'sudoUser' DESC 'User(s).
who may run sudo' EQUALITY caseExactIA5Match SUBSTR caseExactIA5SubstringsMa
tch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
olcAttributeTypes: {1}( 1.3.6.1.4.1.15953.9.1.2 NAME 'sudoHost' DESC 'Host(s).
who may run sudo' EQUALITY caseExactIA5Match SUBSTR caseExactIA5SubstringsMat
ch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
olcAttributeTypes: {2}( 1.3.6.1.4.1.15953.9.1.3 NAME 'sudoCommand' DESC 'Comma
nd(s) to be executed by sudo' EQUALITY caseExactIA5Match SYNTAX 1.3.6.1.4.1.1
466.115.121.1.26 )
olcAttributeTypes: {3}( 1.3.6.1.4.1.15953.9.1.4 NAME 'sudoRunAs' DESC 'User(s)
impersonated by sudo (deprecated)' EQUALITY caseExactIA5Match SYNTAX 1.3.6.1
.4.1.1466.115.121.1.26 )
olcAttributeTypes: {4}( 1.3.6.1.4.1.15953.9.1.5 NAME 'sudoOption' DESC 'Option
s(s) followed by sudo' EQUALITY caseExactIA5Match SYNTAX 1.3.6.1.4.1.1466.115
.121.1.26 )
olcAttributeTypes: {5}( 1.3.6.1.4.1.15953.9.1.6 NAME 'sudoRunAsUser' DESC 'Use
r(s) impersonated by sudo' EQUALITY caseExactIA5Match SYNTAX 1.3.6.1.4.1.1466
.115.121.1.26 )
olcAttributeTypes: {6}( 1.3.6.1.4.1.15953.9.1.7 NAME 'sudoRunAsGroup' DESC 'Gr
oup(s) impersonated by sudo' EQUALITY caseExactIA5Match SYNTAX 1.3.6.1.4.1.14
66.115.121.1.26 )
olcAttributeTypes: {7}( 1.3.6.1.4.1.15953.9.1.8 NAME 'sudoNotBefore' DESC 'Sta
rt of time interval for which the entry is valid' EQUALITY generalizedTimeMat
ch ORDERING generalizedTimeOrderingMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.24
)
olcAttributeTypes: {8}( 1.3.6.1.4.1.15953.9.1.9 NAME 'sudoNotAfter' DESC 'End.
of time interval for which the entry is valid' EQUALITY generalizedTimeMatch.
ORDERING generalizedTimeOrderingMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.24 )
olcAttributeTypes: {9}( 1.3.6.1.4.1.15953.9.1.10 NAME 'sudoOrder' DESC 'an int
eger to order the sudoRole entries' EQUALITY integerMatch ORDERING integerOrd
eringMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 )
olcObjectClasses: {0}( 1.3.6.1.4.1.15953.9.2.1 NAME 'sudoRole' DESC 'Sudoer En
tries' SUP top STRUCTURAL MUST cn MAY ( sudoUser $ sudoHost $ sudoCommand $ s
udoRunAs $ sudoRunAsUser $ sudoRunAsGroup $ sudoOption $ sudoOrder $ sudoNotB
efore $ sudoNotAfter $ description ) )
diff:
< # AUTO-GENERATED FILE - DO NOT EDIT!! Use ldapmodify.
< # CRC32 75e9d97b
< dn: cn={0}sudo
---
> dn: cn=sudo,cn=schema,cn=config
5c3
< cn: {0}sudo
---
> cn: sudo
41,47d38
< structuralObjectClass: olcSchemaConfig
< entryUUID: aaaded3e-af4b-1035-8f99-f94b551aa988
< creatorsName: cn=config
< createTimestamp: 20160516004836Z
< entryCSN: 20160516004836.159008Z#000000#000#000000
< modifiersName: cn=config
А именно: указать правильный dn и удалить{0}. Удаление {0} означает что LDAP сам назначит номер в последовательности, а не перепишет существующую запись.
Тут подробно:
Добавление объектов
Установить sudo с поддержкой ldap и необходимые утилиты и схемы
apt-get install sudo-ldap
Бекап настроек sudo
cp /etc/sudoers /root/sudoers
Распаковать утилиту для конвертации файла sudoers а объекты LDAP
zcat /usr/share/doc/sudo-ldap/sudoers2ldif.gz > /root/sudoers2ldif chmod +x sudoers2ldif
Конвертация
SUDOERS_BASE=ou=sudo,ou=services,dc=customer_organization,dc=fuel_domain ./sudoers2ldif sudoers > sudoers.ldif
Переменная SUDOERS_BASE=ou=sudo,ou=services,dc=customer_organization,dc=fuel_domain определяет в каком OU/DOMAIN помещать объекты
Загрузить конфигурацию в LDAP
ldapadd < sudoers.ldif adding new entry "cn=defaults,ou=sudo,ou=services,dc=customer_organization,dc=fuel_domain" adding new entry "cn=root,ou=sudo,ou=services,dc=customer_organization,dc=fuel_domain" adding new entry "cn=%admin,ou=sudo,ou=services,dc=customer_organization,dc=fuel_domain" adding new entry "cn=%sudo,ou=sudo,ou=services,dc=customer_organization,dc=fuel_domain" adding new entry "cn=%fuel_users,ou=sudo,ou=services,dc=customer_organization,dc=fuel_domain"