Разрешения sudo для групп ldap через nslcd

Разрешения sudo для групп ldap через nslcd

У меня возникла проблема с правами sudo при настройке аутентификации/авторизации LDAP между MS ActiveDirectory и Debian.

Что я имею на данный момент
Я настроил nslcd с libpam-ldap через ldaps, и вход по ssh работает отлично.

getent passwd myuser
myuser:*:10001:10015:myuser:/home/myuser:/bin/bash

На моем сервере ActiveDirectory установлен пакет Unix, который добавляет необходимые атрибуты, такие как posixGroup, posixAccount, gid, gidNumber, uid, uidNumber и так далее.

Мой пример пользователя выглядит так:
(я выбрал 10000+, чтобы быть уверенным)

cn: myuser
uid: myuser
uidNumber: 10015
gidNumber: 10000

Я могу ограничить входы по SSH, добавив следующее в /etc/nslcd.conf

filter passwd (&(objectClass=posixAccount)(|(memberOf=CN=group1,OU=groups,DC=domain,DC=com)(memberOf=CN=group2,OU=groups,DC=domain,DC=com)))

Это указывает на то, что войти в систему могут только пользователи с objecClass=posixAccount и входящие в группу group1 или group2.

Пока все хорошо. Однако я не могу сказать sudo использовать эти группы.

Вот что я попробовал
в /etc/sudoers

// This one works, but only because the user has gidNumber=10000 set. 
// It doesn't matter if a group with this ID actually exist or not. 
// So it's not really permission by LDAP group.
%#10000 ALL=(root) ALL


// This is what I want, but it doesn't work.
%group1 ALL=(root) ALL

Проблема
Мне нужно каким-то образом указать sudo взять запрашивающее имя пользователя, проверить, к каким ldap-группам оно принадлежит, а затем посмотреть, достаточны ли разрешения для этой группы для выполнения команды или нет.

К сожалению, я понятия не имею, с чего начать. Все остальное пока работает, и я застрял только с разрешениями sudo. Я думал о сопоставлении поля пользователя gidNumber с полем группы gidNumber, но я не знаю, возможно ли вообще сопоставление поля пользователя с полем группы.

Я так не думаю, поскольку отображение в nslcd указано следующим образом

map passwd field1 field2

и passwd сообщает nslcd, что он должен сопоставить пользовательские поля. Вместо passwd я мог бы использовать группы, но не оба.

решение1

Извините за длинный пост, но, кажется, это работает. У меня просто была опечатка в файле sudoers. Мне потребовалось немного времени, чтобы ее найти, поскольку синтаксис все еще был правильным, но я не мог выполнить ни одной команды.

Однако сейчас это работает.

 // Problem was that one ALL was missing, allowing me to execute no root cmds.
 %group1 ALL=(root) !/bin/su

 // Fixed it
 %group1 ALL=(root) ALL, !/bin/su

Обновление: я понял это немного поздно, но я также изменил следующее в /etc/nsswitch.conf

sudoers:        ldap files

Я просто не думал, что это решение, потому что у меня все еще была вышеупомянутая опечатка sudoers.

Задача решена :)

решение2

я пошел сназначение локальных групп пользователямчерез pam_group, чтобы получить ту же функциональность. В /etc/security/groups.confя добавил следующую строку

*;*;%administrators;Al0000-2400;adm,sudo,lpadmin

Таким образом, любой пользователь LDAP, принадлежащий к группе LDAP, administratorsсопоставляется с локальными группами adm, sudoи lpadminна коробке. Кажется, это проще, чем устанавливать sudo-ldap, если я ничего не упускаю?

Связанный контент