Добавить пользователя AD домена в sudoers из командной строки


10

Я настраиваю виртуальную машину сервера Ubuntu 11.04 для использования в качестве сервера базы данных. Это сделало бы жизнь каждого человека проще, если бы мы могли войти в систему, используя учетные данные Windows, и, возможно, даже заставить машину работать с текущей безопасностью на основе AD, которую мы получили в другом месте.

Первую часть этого было действительно легко выполнить - apt-get install likewise-openи я был в значительной степени в бизнесе. Проблема, с которой я сталкиваюсь, - это включение наших администраторов в группы sudoers - кажется, я не могу ничего взять. Я пробовал:

а) usermod -aG sudoers [username]
б) добавление имен пользователей в нескольких форматах (DOMAIN \ user, user @ domain) в файл sudoers.

Ничего из этого, казалось бы, не заняло, но я все равно получаю сообщение "DOMAIN \ user отсутствует в файле sudoers. Об этом инциденте будет сообщено".

Итак, как мне добавить нелокальных пользователей в sudoers?

Ответы:


6

Я столкнулся с этой проблемой, и вот мое решение:

Изменить /etc/sudoers: со следующими записями

Сначала проверьте aduser, используя идентификатор команды

#id <AD user>( #id domain\\aduser01 )

Результаты на моем:

SMB\aduser01@linux01:~/Desktop$ id smb\\aduser02
uid=914883676(SMB\aduser02) gid=914883073(SMB\domain^users) groups=914883073(SMB\domain^users),1544(BUILTIN\Administrators),1545(BUILTIN\Users),914883072(SMB\domain^admins)

getent passwdи gid NUMBERSне работает для меня. DOMAIN\\domain^usersработает для меня

%SMB\\domain^users ALL=(ALL) ALL

как мы все знаем, индивидуальный пользователь AD работает также

SMB\\<aduser01> ALL=(ALL) ALL

2

у нас есть длинное доменное имя с суффиксом .local,

соседствовать

%domainname\\group ALL=(ALL) ALL

ни

%domainname.local\\group ALL=(ALL) ALL

работал...

но если я использую только имя группы, как это:

%Domain^Admins ALL=(ALL) ALL

оно работает.


Это было решение, которое сработало в конце. %Domain^Admins ALL=(ALL) ALL
mjp

2

Проблема с другими предложениями заключается в том, что

  • они работают только тогда, когда у вас есть доступ к корпоративной локальной сети (или 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

В нем должны быть перечислены все связанные записи, которые вы добавили к этому пользователю и компьютеру. Очень просто!


1
Это может быть долго, но, поскольку ссылки становятся недействительными, это правило, что основные части должны быть включены сюда, со ссылкой для справки.
Странник

Собственно, я добавил основные части, т.е. концепцию. Я мог бы выбрать некоторые другие части, но они бесполезны без остальных и без понимания общей картины, поэтому я не вижу смысла. Это принесет больше вреда, чем пользы.
bviktor

Это правило AskUbuntu, что кто-то из присутствующих должен иметь возможность посмотреть на ваш ответ и решить свою проблему, не переходя на внешний сайт.
Странник

1
Добавлена ​​более актуальная информация.
bviktor

1

Лучшая информация, которую я мог найти по этому вопросу, здесь:

http://www.mail-archive.com/likewise-open-discuss@lists.likewisesoftware.com/msg00572.html

По сути, он просит вас изменить /etc/sudoersфайл, указав правильную конфигурацию, чтобы пользователи из группы вашего администратора в AD имели доступ ко всем привилегиям.

Если вам нужно быть избирательным и ограниченным пользователем, вы можете сделать это тоже. Но он предупреждает, что вы должны убедиться, что выяснили, какое имя пользователя в системе Linux, используя getend passwdкоманду, как показано.


Спасибо, действительно не мог понять, где искать. Для справки, DOMIAN \\ username работает для частных лиц.
Уайетт Барнетт

0

Используя Centify direct, я добавил пользователя домена в файл / etc / sudoers.

(Пользователь домена) ALL = (ALL) ALL


Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.