Usando o FreeIPA para sudo centralizado - como especificar TODOS os comandos?

9

Estou tendo dificuldades para entender o modelo do FreeIPA. O manual do FreeIPA declara:

O FreeIPA adiciona uma medida de controle extra com grupos de comandos sudo, que permitem que um grupo de comandos seja definido e depois aplicado à configuração do sudo como um.

Mas seus exemplos basicamente falam sobre a criação de um grupo de comandos sudo e a adição de comandos sudo específicos, como vime lessa um grupo de comandos sudo "arquivos".

por exemplo, na linha de comando:

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

Mas como você especifica ALLcomo faria em / etc / sudoers? Isso pode ser curinga (por exemplo, *)?

HTTP500
fonte

Respostas:

9

Você não precisa criar grupos de comandos se desejar que um grupo de usuários possa executar qualquer comando sudo. Você só precisa de uma regra sudo que permita todos os comandos, e uma deveria ter sido criada para você por padrão quando você instalou o 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
----------------------------

(Se essa regra não existir, crie-a.)

ipa sudorule-add --cmdcat=all All

Basta adicionar os usuários ou grupos a essa regra do sudo que você deseja sudocom qualquer comando.

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

Você também pode fazer isso na interface da Web, se preferir.

Michael Hampton
fonte
A regra não existia por padrão e demorou um pouco de trabalho para obter uma regra que correspondesse à sua, ou seja, "% admins ALL = (ALL) ALL"), mas acho que estou no caminho da iluminação agora. Muito apreciado, obrigado!
HTTP500
Essa é uma daquelas tarefas que obviamente eram muito mais fáceis na interface da Web do que na linha de comando. Demorei um pouco para chegar até aqui na CLI.
Michael Hampton
Concordo, terminei a regra na interface da Web.
HTTP500
Se você deseja que a regra seja eficaz em todos os hosts, observei que, sem especificar --hostcat=allao criar a regra, o sudo não é permitido (é possível adicionar esta opção a uma regra existente emitindo sudorule-mod --hostcat=all).
Nivs
2
@ HTTP500 Se você tiver que fazer coisas que não estão listadas no seu OP ou na Resposta Aceita, forneça as etapas / detalhes para outras pessoas, ou seja, a regra não existia por padrão e demorou um pouco de trabalho para obter uma regra que corresponde ao seu ... Que parte do trabalho foi necessária? Como você alcançou o resultado desejado?
0xSheepdog
0

Quando você deseja adicionar ALLa uma regra, pode usar a opção de categoria com valor all. Para comandos que seriam --cmdcat=all, para hosts - --hostcat=all, para usuários - --usercat=alle mais alguns abaixo.

Todas essas opções são visíveis em 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
fonte