Использование FreeIPA для централизованного sudo - как указать ВСЕ команды?

9

Мне тяжело оборачиваться вокруг модели FreeIPA. В FreeIPA ручные состояния:

FreeIPA добавляет дополнительную контрольную меру с группами команд sudo, которые позволяют определить группу команд, а затем применить их к конфигурации sudo как одну.

Но их примеры в основном говорят о создании группы команд sudo и добавлении определенных команд sudo, таких как vimи lessв группу файлов sudo.

например из командной строки:

ipa sudocmdgroup-add --desc 'File editing commands' files

ipa sudocmd-add --desc 'For editing files' '/usr/bin/vim'

ipa sudocmdgroup-add-member --sudocmds '/usr/bin/vim' files

Но как вы указываете, ALLкак в / etc / sudoers? Может ли это быть символом подстановки (например, *)?

HTTP500
источник

Ответы:

9

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

# ipa sudorule-find All
-------------------
1 Sudo Rule matched
-------------------
  Rule name: All
  Enabled: TRUE
  Host category: all
  Command category: all
  RunAs User category: all
  User Groups: admins
----------------------------
Number of entries returned 1
----------------------------

(Если такого правила не существует, создайте его.)

ipa sudorule-add --cmdcat=all All

Просто добавьте пользователей или группы к этому правилу sudo, которое вы хотите иметь sudoс помощью любой команды.

ipa sudorule-add-user --groups=admins All

Вы также можете сделать это из веб-интерфейса, если хотите.

Майкл Хэмптон
источник
Правило не существовало по умолчанию, и потребовалась небольшая работа, чтобы получить правило, которое соответствует вашему, то есть «% admins ALL = (ALL) ALL», но я думаю, что сейчас я на пути просветления. Высоко ценится, спасибо!
HTTP500
Это одна из тех задач, которая, очевидно, была намного проще в веб-интерфейсе, чем в командной строке. Мне потребовалось довольно много времени, чтобы справиться с этим в CLI.
Майкл Хэмптон
Согласился, я добил правило в веб-интерфейсе.
HTTP500
Если вы хотите, чтобы правило было эффективным на всех хостах, я заметил, что без указания --hostcat=allпри создании правила sudo недопустимо (добавление этой опции к существующему правилу возможно путем выдачи sudorule-mod --hostcat=all).
ноября
2
@ HTTP500 Если вам приходилось делать вещи, которых нет в вашем OP или Принятом ответе, пожалуйста, предоставьте шаги / подробности для других, то есть правило не существует по умолчанию, и для получения правила потребовалось немного усилий что соответствует вашему ... Какая часть работы потребовалась? Как вы достигли желаемого результата?
0xSheepdog
0

Если вы хотите добавить ALLв правило, вы можете использовать категорию со значением all. Для команд, которые будут --cmdcat=all, для хостов - --hostcat=all, для пользователей - --usercat=allи еще немного ниже.

Все эти параметры видны в ipa sudorule-add --help:

$ ipa sudorule-add --help
Usage: ipa [global-options] sudorule-add SUDORULE-NAME [options]

Create new Sudo Rule.
Options:
  -h, --help            show this help message and exit
  --desc=STR            Description
  --usercat=['all']     User category the rule applies to
  --hostcat=['all']     Host category the rule applies to
  --cmdcat=['all']      Command category the rule applies to
  --runasusercat=['all']
                        RunAs User category the rule applies to
  --runasgroupcat=['all']
                        RunAs Group category the rule applies to
...
abbra
источник