Usando FreeIPA para sudo centralizado: ¿cómo especificar TODOS los comandos?

9

Me está costando entender el modelo de FreeIPA. El manual de FreeIPA dice:

FreeIPA agrega una medida de control adicional con grupos de comandos sudo, que permiten definir un grupo de comandos y luego aplicarlos a la configuración de sudo como uno.

Pero sus ejemplos básicamente hablan de crear un grupo de comandos sudo y agregar comandos sudo particulares como vimy lessa un grupo de comandos sudo de "archivos".

Por ejemplo, desde la línea de comandos:

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

Pero, ¿cómo especificas ALLcomo lo harías en / etc / sudoers? ¿Puede esto ser comodín (por ejemplo, *)?

HTTP500
fuente

Respuestas:

9

No necesita crear grupos de comandos si desea que un grupo de usuarios pueda ejecutar cualquier comando con sudo. Solo necesita una regla sudo que permita todos los comandos, y una debería haber sido creada por usted de manera predeterminada cuando instaló 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
----------------------------

(Si tal regla no existe, créala).

ipa sudorule-add --cmdcat=all All

Simplemente agregue los usuarios o grupos a esta regla de sudo que desea poder sudocon cualquier comando.

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

También puede hacerlo desde la interfaz de usuario web si lo prefiere.

Michael Hampton
fuente
La regla no existía por defecto y tomó un poco de trabajo obtener una regla que coincidiera con la suya, es decir, "% admins ALL = (ALL) ALL" pero creo que ahora estoy en el camino de la iluminación. Muy apreciado, gracias!
HTTP500
Esta es una de esas tareas que obviamente era mucho más fácil en la interfaz de usuario web que en la línea de comandos. Me llevó bastante tiempo llegar tan lejos en CLI.
Michael Hampton
De acuerdo, terminé la regla en la interfaz de usuario web.
HTTP500
Si desea que la regla sea efectiva en todos los hosts, noté que sin especificar --hostcat=allal crear la regla, sudo no está permitido (es posible agregar esta opción a una regla existente emitiendo sudorule-mod --hostcat=all).
nivs
2
@ HTTP500 Si tuvo que hacer cosas que no figuran en su OP o en la Respuesta aceptada, proporcione los pasos / detalles para otros, es decir, la regla no existía de manera predeterminada y tomó un poco de trabajo obtener una regla que coincidía con el tuyo ... ¿Qué parte del trabajo se requería? ¿Cómo lograste el resultado deseado?
0xSheepdog
0

Cuando desee agregar ALLa una regla, puede usar la opción de categoría con valor all. Para comandos que serían --cmdcat=all, para hosts --hostcat=all, para usuarios, --usercat=ally algunos más a continuación.

Todas estas opciones son visibles en 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
fuente