Проблема з іншими пропозиціями полягає в тому, що
- вони працюють лише тоді, коли у вас є доступ до корпоративної локальної мережі (або VPN)
- вам доведеться постійно підтримувати файл sudoers на кожному комп'ютері
- як бонус, вони не працювали для мене - зовсім
Натомість я хотів чогось такого
- кешує як облікові дані, так і доступ до sudo
- управляється централізовано
Фактичне рішення - це використання SSSD та розширення схеми AD. Таким чином SSSD періодично отримує налаштування sudo та облікові дані користувачів з AD та підтримує локальний кеш їх. Потім правила sudo зберігаються в об’єктах AD, де ви можете обмежити правила лише комп'ютерами, користувачами та командами, навіть - все це, не торкаючись жодного файлу sudoers на робочих станціях.
Точний підручник занадто довгий для пояснення тут, але ви можете знайти покрокове керівництво та деякі сценарії, які допоможуть з автоматизацією тут:
TL; DR:
AD
Візьміть останню версію 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 .
Тепер створіть OU sudoers в корені вашого домену, цей OU буде містити всі параметри sudo для всіх ваших робочих станцій Linux. Під цим OU створіть об’єкт sudoRole. Щоб створити об’єкт sudoRole, вам потрібно скористатися редакцією ADSI, але після їх створення можна скористатися користувачами та комп'ютерами Active Directory, щоб змінити його.
Припустимо, у мене є комп’ютер на ім'я foo32linux , користувач під назвою stewie.griffin, і я хочу дозволити йому виконувати всі команди з sudo на цьому комп. У цьому випадку я створюю sudoRole об'єкт під sudoers OU. Для sudoRole ви можете використовувати будь-яке ім’я, яке ви хочете - я дотримуюся імені комп'ютера, оскільки я користуюся правилами на комп'ютері. Тепер встановіть його атрибути наступним чином:
- sudoHost : foo32linux
- sudoCommand : ВСІ
- 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