Проблема с другими предложениями заключается в том, что
- они работают только тогда, когда у вас есть доступ к корпоративной локальной сети (или VPN)
- вы должны постоянно поддерживать файл sudoers на каждом компьютере
- в качестве бонуса, они не работали на меня - вообще
Вместо этого я хотел что-то
- кэширует как учетные данные, так и доступ sudo
- централизованно управляется
Фактическим решением является использование SSSD и расширение схемы AD. Таким образом, SSSD периодически выбирает настройки sudo и учетные данные пользователя из AD и поддерживает их локальный кеш. Затем правила sudo хранятся в объектах AD, где вы можете ограничить правила даже компьютерами, пользователями и командами - и все это, даже не затрагивая файл sudoers на рабочих станциях.
Точное руководство слишком длинное для объяснения здесь, но вы можете найти пошаговое руководство и некоторые сценарии, которые помогут с автоматизацией:
TL; DR:
ОБЪЯВЛЕНИЕ
Возьмите последнюю версию sudo , получите файл doc / schema.ActiveDirectory , затем импортируйте его (не забудьте изменить путь к домену в соответствии с именем вашего домена):
ldifde -i -f schema.ActiveDirectory -c "CN=Schema,CN=Configuration,DC=X" "CN=Schema,CN=Configuration,DC=ad,DC=foobar,DC=com" -j .
Проверьте это с помощью ADSI Edit: открыть схему именования контекста и внешнего вида для sudoRole класса.
Теперь создайте подразделение sudoers в корневом каталоге вашего домена. Это подразделение будет содержать все настройки sudo для всех ваших рабочих станций Linux. Под этим OU создайте объект sudoRole. Чтобы создать объект sudoRole, вы должны использовать ADSI Edit, но после его создания вы можете использовать Active Directory Users and Computers для его изменения.
Предположим, у меня есть компьютер с именем foo32linux , пользователь с именем stewie.griffin, и я хочу позволить ему запускать все команды с sudo на этом компе. В этом случае я создаю объект sudoRole под подразделом sudoers . Для sudoRole вы можете использовать любое имя, какое хотите - я придерживаюсь имени компьютера, так как я использую правила для каждого компьютера. Теперь установите его атрибуты следующим образом:
- sudoHost : foo32linux
- sudoCommand : ALL
- sudoUser : stewie.griffin
Для команд вы также можете использовать определенные записи, такие как / bin / less или что угодно.
SSSD
Добавьте в ваш /etc/sssd/sssd.conf хотя бы:
[sssd]
services = nss, pam, sudo
[domain/AD.FOOBAR.COM]
cache_credentials = True
SSSD обновляет свой локальный кеш обновленными правилами каждые несколько часов, но самый простой способ проверить это - просто перезагрузить компьютер. Затем войдите в систему с пользователем AD и проверьте:
sudo -l
В нем должны быть перечислены все связанные записи, которые вы добавили к этому пользователю и компьютеру. Очень просто!
%Domain^Admins ALL=(ALL) ALL