AUTHSELECT-PROFILES(5)

NAME
authselect-profiles - cómo extender los perfiles authselect.

DESCRIPCIÓN

En este manual se explica cómo están organizados los perfiles de authselect y cómo crear perfiles nuevos.

DIRECTORIOS DE PERFILES

Los perfiles pueden encontrarse en uno de tres directorios.

"/usr/share/authselect/default"
    Directorio sólo de lectura con los perfiles que se incluyen con authselect.

"/usr/share/authselect/vendor"
    Directorio sólo de lectura para perfiles específicos del proveedor, con prioridad sobre los del directorio predeterminado.

"/etc/authselect/custom"
    Directorio para los perfiles definidos por el administrador.

ARCHIVOS DE PERFIL

Cada perfil contiene uno o varios de estos archivos, con una descripción de perfil obligatorio y describe los cambios que se hacen en el sistema.

README
    Descripción del perfil. La primera línea debe ser un nombre del perfil.

system-auth
    Pila PAM incluida desde casi todos los archivos de configuración individual de cada servicio.

password-auth, smartcard-auth, fingerprint-auth
    Pilas PAM para aplicaciones que gestionan la autenticación desde diferentes tipos de dispositivos mediante conversaciones individuales en lugar de una agregada.

postlogin
    Esta pila PAM proporciona un lugar común para los módulos a los que se tiene que llamar después de la de system-auth o alguno de los otros comunes. Se incluye en los servicios de entrada al sistema con acceso a intérprete o a archivos. NOTA: los módulos del archivo postlogin se ejecutan independientemente de que los de system-auth indiquen éxito o no.

nsswitch.conf
    Archivo de configuración de Intercambio de Servicio de Nombre.

dconf-db
    Cambios en a base de datos dconf. El uso principal sería el de cambiar la pantalla de inicio de sesión de gnome para activar o desactivar la autenticación mediante tarjeta inteligente o lector de huellas.

dconf-locks
    Este archivo define bloqueos en conjunto de valores internos a la base de datos dconf.

  LÍNEAS CONDICIONALES

Cada uno de estos archivos se usa como una plantilla. Una plantilla es un archivo de texto que puede contener operadores opcionales para proporcionar diferentes características.

{continue if "característica"}
    Parar el procesamiento del archivo a no ser que se haya definido "característica" (se descarta el resto del contenido del archivo). En caso de definir "característica", se descarta la línea que lleva este operador y se procesa el resto del archivo.

{stop if "característica"}
    Lo contrario de "continue if". Descartar el resto del contenido si se define "característica". Descartar la línea y continuar con el resto de la plantilla si no.

{include if "característica"}
    Incluya la línea donde esté este operador es ubicado solo si está definido "característica".

{exclude if "característica"}
    Lo contrario de "include-if". Incluir la línea en la que está este operador sólo si no se ha definido "característica".

{imply "implied-feature" if "feature"}
    Habilita de característica "implied-feature" si la característica "feature" está activada. La línea completa con este operador es eliminada, por tanto no es posible añadir nada más alrededor de este operador en la misma línea.

{if "característica":true|false}
    Si se define "característica", reemplazar el operador por el texto "verdadero". Hacerlo por "falso" si no.

{if "característica":true}
    Si se define «característica», reemplace este operador por el texto «true» (cierto), en otro caso con una cadena en blanco.

Además es posible utilizar expresión lógica en línea condicional en lugar de especificar nombre de característica única. En este caso la expresión evaluará a cierto o falso y el operador condicional actuará por encima del resultado.

La expresión de sintaxis consiste en nombres de característica (p.ej., "característica") la cual devuelve cierto, true, si la característica está definida o falsa, false, si no está definido y a continuación los operadores lógicos: and (y), or (o) y not (no). La expresión además está encerrado entre paréntesis y contiene múltiples subexpresiones.

Por ejemplo:

{if "caracteristica1" or "característica2":true}
    Si están definidas "característica1" o "característica2", sustituya este operador con la cadena "true", en otro caso con una cadena vacía.

{if not "característica":true|false}
    Si no se define "característica", reemplace este operador por la cadena "true", en otro caso con la cadena "false".

{if not "característica":true}
    Si no se define "característica", reemplazar el operador por el texto "verdadero". Descartarlo si no.

{if "caracteristica1" and ("característica2" or "característica3"):true}
    Si está "característica1" definida, y está definida una de "característica2" y "característica3" sustituya este operador con la cadena verdadera "true", en otro caso con una cadena en blanco.

  EJEMPLO

Ejemplo con "if". Si se activa "with-sudo", se añade "sss" a la línea sudoers.

    passwd:     sss files
    group:      sss files
    netgroup:   sss files
    automount:  sss files
    services:   sss files
    sudoers:    files {if "with-sudo":sss}

Ejemplo con "continue-if" e "include-if". El archivo final estará vacío a no ser que se active "with-smartcard". Si además se activa "with-faillock" se incluirá soporte para pam_faillock.

    {continue if "with-smartcard"}
    auth        required                                     pam_env.so
    auth        required                                     pam_faildelay.so delay=2000000
    auth        required                                     pam_faillock.so preauth silent deny=4 unlock_time=1200 {include if "with-faillock"}
    auth        [default=1 ignore=ignore success=ok]         pam_succeed_if.so uid >= 1000 quiet
    auth        [default=1 ignore=ignore success=ok]         pam_localuser.so
    auth        sufficient                                   pam_unix.so nullok
    auth        requisite                                    pam_succeed_if.so uid >= 1000 quiet_success
    auth        sufficient                                   pam_sss.so forward_pass
    auth        required                                     pam_faillock.so authfail deny=4 unlock_time=1200       {include if "with-faillock"}
    auth        required                                     pam_deny.so
    ...

Aquí hay un ejemplo de "continue-if" utilizando expresión lógica. El archivo estará vacío a no ser que se ponga "with-smartcard" o "with-smartcard-required". Esto simplificará la invocación de la instrucción authselect select la cual no tiene que incluir ambas características pero solo es necesaria "with-semartcard-required".

    {continue if "with-smartcard" or "with-smartcard-required"}
    auth        required                                     pam_env.so
    auth        required                                     pam_faildelay.so delay=2000000
    auth        required                                     pam_faillock.so preauth silent deny=4 unlock_time=1200 {include if "with-faillock"}
    auth        [default=1 ignore=ignore success=ok]         pam_succeed_if.so uid >= 1000 quiet
    auth        [default=1 ignore=ignore success=ok]         pam_localuser.so
    auth        sufficient                                   pam_unix.so nullok
    auth        requisite                                    pam_succeed_if.so uid >= 1000 quiet_success
    auth        sufficient                                   pam_sss.so forward_pass
    auth        required                                     pam_faillock.so authfail deny=4 unlock_time=1200       {include if "with-faillock"}
    auth        required                                     pam_deny.so
    ...

Aquí hay un ejemplo de operador “imply-if”. Activando la característica “with-smartcard-required” también activará “with-smartcard” para asegurar que son utilizados todos los módulos relativos de PAM. Esto logrará el mismo comportamiento que el ejemplo anterior.

    {imply "with-smartcard" if "with-smartcard-required"}
    auth        required                                     pam_env.so
    auth        required                                     pam_faildelay.so delay=2000000
    auth        [success=1 default=ignore]                   pam_succeed_if.so service notin login:gdm:xdm:kdm:kde:xscreensaver:gnome-screensaver:kscreensaver quiet use_uid {include if "with-smartcard-required"}
    auth        [success=done ignore=ignore default=die]     pam_sss.so require_cert_auth ignore_authinfo_unavail             {include if "with-smartcard-required"}
    auth        [default=1 ignore=ignore success=ok]         pam_succeed_if.so uid >= 1000 quiet
    auth        [default=1 ignore=ignore success=ok]         pam_localuser.so                                                 {exclude if "with-smartcard"}
    auth        [default=2 ignore=ignore success=ok]         pam_localuser.so                                                 {include if "with-smartcard"}
    auth        [success=done authinfo_unavail=ignore user_unknown=ignore ignore=ignore default=die] pam_sss.so try_cert_auth {include if "with-smartcard"}
    auth        sufficient                                   pam_unix.so {if not "without-nullok":nullok}
    auth        requisite                                    pam_succeed_if.so uid >= 1000 quiet_success
    auth        sufficient                                   pam_sss.so forward_pass
    auth        required                                     pam_deny.so
    ...

CREAR UN PERFIL NUEVO

Para poder usar un nuevo perfil con «authselect», cree un directorio en alguno de los lugares del perfil con los archivos anteriores. No es necesario incluir todos los archivos, sólo README es obligatorio, los demás estarán o no según las necesidades.

Se puede encontrar la instrucción ayudante authselect create-profile cuando crea perfil nuevo. Consulte la página del manual authselect(8) o authselect create-profile --help para más información.

CONSULTE TAMBIÉN

authselect(8), nsswitch.conf(5), PAM(8)